Skip to main content

Compute time block IDs since major climate agreements.

Project description

PyPI version License: MIT Python Versions

ClimateTimer

ClimateTimer is a pure-Python library that computes time block IDs and time periods based on elapsed time units (seconds, minutes, quarters, hours, days, weeks, etc.) since major climate agreements.

It supports two reference points:

  • Paris Agreement (April 22, 2016, UTC)
  • Kyoto Protocol (February 16, 2005, UTC)

This package is designed for Python 3, is OS independent, and is licensed under the MIT License.

Release notes

v0.3

  • new method blockids (with 's') that returns a list of blockId's between two dates.

Features

Flexible Time Reference Selection

Choose between the Paris Agreement and the Kyoto Protocol as your starting point.

Time Block Calculations

Compute block IDs and corresponding time periods for various units:

  • Seconds
  • Minutes
  • Quarters (15-minute intervals)
  • Hours
  • Days
  • Weeks

Simple and intuitive API

  • blockid(date, blocktype="quarter"): Compute the time block ID.

    • date: A timezone-aware datetime (positional).
    • blocktype: The type of block (e.g., "second", "minute", "quarter", "hour", "day", "week"). Defaults to "quarter".
  • period(block_id, blocktype="quarter"): Retrieve the start and end datetimes for a given block.

Reference Information

The info() method returns a plain-text description of the instantiated reference event.

Modern Packaging

Built with a pyproject.toml–only configuration.

Installation

Using pip

pip install climatetimer

From Source

Clone the repository and install:

git clone https://github.com/cameraink/climatetimer.git
cd climatetimer
pip install .

Quick Start

from climatetimer import ClimateTimer
from datetime import datetime, timezone

# Initialize using the Paris Agreement reference
timer = ClimateTimer("paris")

# Compute the block ID for the current hour (date is positional; blocktype defaults to "quarter")
block_id = timer.blockid(datetime.utcnow(), blocktype="hour")
print(f"Current hour block ID: {block_id}")

# Retrieve the start and end times for that block
start, end = timer.period(block_id, blocktype="hour")
print(f"Block {block_id} starts at {start} and ends at {end}")

# Get information about the reference event for this instance
print("Reference Info:", timer.info())

Usage

Initializing ClimateTimer

You must specify the reference as a positional argument:

# For Paris Agreement
timer_paris = ClimateTimer("paris")

# For Kyoto Protocol
timer_kyoto = ClimateTimer("kyoto")

Computing a Block ID

Pass a timezone-aware datetime and specify the block type:

block_id = timer_paris.blockid(datetime(2023, 5, 10, 15, 30, tzinfo=timezone.utc), blocktype="hour")

Retrieving a Time Block Period

info = timer_paris.info()
print("Reference Info:", info)

Computing a list of Block IDs

Pass a timezone-aware start time and end time and specify the block type:

from datetime import datetime, timezone
from climatetimer import ClimateTimer

# Create an instance of ClimateTimer using the "paris" reference
timer = ClimateTimer("paris")

# Define the start and end datetimes (make sure they're timezone-aware)
start_date = datetime(2025, 3, 1, tzinfo=timezone.utc)
end_date = datetime(2025, 3, 27, tzinfo=timezone.utc)

# Compute the list of block IDs for the specified date range and block type
block_ids = timer.blockids(start_date, end_date, blocktype="quarter")

# Output the list of block IDs
print("Block IDs:", block_ids)

Note that blockids raise an error if the condition start_date > end_date is not satisfied.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

climatetimer-0.3.tar.gz (119.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

climatetimer-0.3-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file climatetimer-0.3.tar.gz.

File metadata

  • Download URL: climatetimer-0.3.tar.gz
  • Upload date:
  • Size: 119.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.29

File hashes

Hashes for climatetimer-0.3.tar.gz
Algorithm Hash digest
SHA256 0bbb5ba4845387b2d42dec3448dc755e056be7fbd85948ad8c0be49ba509041e
MD5 6c75ec2819e997f75e4abd0a74de1043
BLAKE2b-256 807714fe550a966517292dc0e28750c77c4a37c23cac6e84f39f6f27bdda0ae4

See more details on using hashes here.

File details

Details for the file climatetimer-0.3-py3-none-any.whl.

File metadata

  • Download URL: climatetimer-0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.29

File hashes

Hashes for climatetimer-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2e5f45c89a8929ef817e248556e887907c30ed675fb996212c5f4225ac73c171
MD5 e771aba97419bf66e0626e93ad542278
BLAKE2b-256 c101b86f73a5edb95f7ecd4993ef474eb3d2ae58f6836bd43b9f812ad12f4396

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page