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.1.1.tar.gz (6.0 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.1.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shift_counter-1.1.1.tar.gz
  • Upload date:
  • Size: 6.0 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.1.1.tar.gz
Algorithm Hash digest
SHA256 ff8753947b5c5330d8e32390bc859c1d064bd1100c829abd28934314fb7ed178
MD5 19972ce01b379f995190180154a7acd0
BLAKE2b-256 98631b4c99def5bccf53b802f42d3c1d6c40679f6c8b423cb176f4e54ae2b6d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shift_counter-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.5 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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9ae4f750785481f6b33c34573ef60e3ade87dbd1d3c9b3c44c0f729e5199048
MD5 178d50ba1e8f42f422bbc4fe425b320f
BLAKE2b-256 64ee519cd2c493434ebfe73b86ceeebe3a312155bd1132223910781647e12f98

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