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.2.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.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shift_counter-1.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 a59f779a67cd138dadcc1569a42f540474931b401e3149fa98030568a660dd67
MD5 d2334397134beeb57ea6f0c8f592c3ab
BLAKE2b-256 9df118ac6bcaa1419f983c51c978fbd05e37beaf8a071235245866074833fcd4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shift_counter-1.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c24d0908ff14197184307c2eb3f495a34d6b8f24867fdc0fa24d983cdd7e5a1
MD5 e2c9ef009ddb735301bf3c3af0b5319e
BLAKE2b-256 b0602cd17f402b0076f572861eebc984c7d83b1a38ad6555a1632621533f556f

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