Skip to main content

Library for processing attendance plan data into time-segmented DataFrames

Project description

Shift Counter

A Python library for processing attendance plan data into time-segmented DataFrames. This library takes JSON attendance data and converts it into a structured pandas DataFrame with 30-minute time segments, making it easy to analyze working hours by different shift types.

Installation

pip install shift-counter

Features

  • Processes attendance data into 30-minute segments
  • Classifies shifts into different types (Normal, VD, Red, Vacation)
  • Handles timezone-aware timestamps
  • Aggregates overlapping shifts
  • Compatible with Tria HR API output format

Usage

Basic Usage

from shift_counter import ShiftCounter, ShiftType

# Initialize counter
counter = ShiftCounter()

# Add individual shifts
counter.add_shift(
    from_time="2025-01-08T08:00:00+01:00",
    to_time="2025-01-08T16:00:00+01:00",
    unit_id=120,
    shift_type=ShiftType.NORMAL
)

# Get resulting DataFrame
df = counter.get_dataframe()

Processing Attendance Plan

# Process complete attendance plan (e.g., from Tria HR API)
attendance_plan = {
    "data": [{
        "shifts": [{
            "date_time_from": "2025-01-08T08:00:00+01:00",
            "date_time_to": "2025-01-08T16:00:00+01:00",
            "name": "VD"
        }],
        "absences": [{
            "date_time_from": "2025-01-09T08:00:00+01:00",
            "date_time_to": "2025-01-09T16:00:00+01:00"
        }]
    }]
}

counter = ShiftCounter()
counter.count_attendance_plan(attendance_plan)

Output Format

The resulting DataFrame contains the following columns:

  • department_id: Integer identifier for the organizational unit
  • detail_level: Granularity of the data (always 'hour')
  • time_segment: Start time of the 30-minute segment
  • extraction_date: When the data was processed
  • hours_normal: Regular shift hours
  • hours_vd: Variable day shift hours
  • hours_red: Red shift hours
  • hours_vacation: Vacation/leave hours

Each row represents a 30-minute segment, with hours columns showing 0.5 for each shift type present in that segment.

Integration with Tria HR API

While this library can be used independently, it's designed to work seamlessly with data from the Tria HR API:

from triahr import TriaHRAPI
from shift_counter import ShiftCounter

# Get attendance data
api = TriaHRAPI.from_config()
attendance = api.attendance_plan(
    date_from="2025-01-01",
    date_to="2025-01-31",
    unit_id=120
)

# Process into DataFrame
counter = ShiftCounter()
counter.count_attendance_plan(attendance)
df = counter.get_dataframe()

Error Handling

The library automatically handles:

  • Timezone conversions
  • Overlapping shifts
  • Missing or invalid shift types
  • Data type consistency

Requirements

  • Python ≥ 3.7
  • pandas ≥ 1.0.0

License

MIT License

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

shift_counter-1.0.1.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

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

shift_counter-1.0.1-py3-none-any.whl (3.0 kB view details)

Uploaded Python 3

File details

Details for the file shift_counter-1.0.1.tar.gz.

File metadata

  • Download URL: shift_counter-1.0.1.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.6

File hashes

Hashes for shift_counter-1.0.1.tar.gz
Algorithm Hash digest
SHA256 20d0bd45fd776a824ba83df47f64ffdc999a48da11a0d0f7d277582ed09b636f
MD5 63f26847644c9e2f5615d357c5e1ff96
BLAKE2b-256 0dbe6d37c6b957efda76aac1dc54ba29d28a072d4d1cacc9aa25a85245a0cd93

See more details on using hashes here.

File details

Details for the file shift_counter-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: shift_counter-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.6

File hashes

Hashes for shift_counter-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 496205f24330b4b75e277e409b31e27901fdde7c1e8dd0e1bdcfeacf2be8dfe7
MD5 a762633674d3f79c630c41eb5efb7553
BLAKE2b-256 bd3e646e87506c48137a882dd85b7bcc7aecc14b2ebdd862e5ecc5be9f4a2741

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