Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d6e79a3
[initial_release] commit current status of hdhelpers
jennykupzig Nov 13, 2025
5208db3
[initial_release] fast fixes from old review
jennykupzig Nov 14, 2025
445dde2
[initial_release] test not failing anymore
jennykupzig Nov 14, 2025
03a2451
[initial_release] metadata now as BaseModel, rename hdhelpers submodules
jennykupzig Nov 14, 2025
61ea8ee
[initial_release] reduce code duplication
jennykupzig Nov 14, 2025
45b2311
[initial_release] fix some linting and formatting issues
jennykupzig Nov 14, 2025
8f52857
[initial_release] fixing pipeline
jennykupzig Nov 18, 2025
32d78c7
[initial_release] reduce code duplication, lose coupling of PlotTarge…
jennykupzig Nov 18, 2025
9256804
[initial_release] reduce duplicates and fix pipeline
jennykupzig Nov 18, 2025
9f9c07f
enhance metadata-handling
jennykupzig Dec 12, 2025
27a8984
[initial_release] fix metadata structure
jennykupzig Dec 12, 2025
dd2fa1c
wip
jennykupzig Dec 12, 2025
f17f362
[initial_release] wip
jennykupzig Dec 17, 2025
99818ed
code and test for series metadata
jennykupzig Dec 17, 2025
4962da4
start using glom for metadata
jennykupzig Feb 13, 2026
424a937
enhance tests
jennykupzig Feb 13, 2026
d2a5018
add dependencies to project
jennykupzig Feb 13, 2026
4daeed2
update gigignore
jennykupzig Feb 13, 2026
f621acd
QA
jennykupzig Feb 13, 2026
6557eef
[use_glom_for_metadata] wip
jennykupzig Mar 11, 2026
bbd7e41
fix code quality check
jennykupzig Mar 11, 2026
db89b9e
add todo file to gitignore
jennykupzig Mar 11, 2026
7211d2a
[use_glom_for_metadata] start documentation with sphinx
jennykupzig Mar 13, 2026
aa9bafc
[use_glom_for_metadata] restructure package
jennykupzig Mar 13, 2026
0626740
fix 1 doctest
jennykupzig Mar 13, 2026
ebba6e8
start pipeline for github repo
jennykupzig Mar 17, 2026
50599c1
include coverage in run script
jennykupzig Mar 17, 2026
28299ed
fix missing import in github action
jennykupzig Mar 17, 2026
5323cce
change direcotry of github aciton yaml
jennykupzig Mar 17, 2026
2b353c8
avoid using uv in checks
jennykupzig Mar 17, 2026
7617487
include missing stubs in dev-group
jennykupzig Mar 17, 2026
d21ec5b
delete uv for install editable package version
jennykupzig Mar 17, 2026
5f50e42
enhancing documentation
jennykupzig Mar 19, 2026
6158a41
enhance documentation
jennykupzig Mar 20, 2026
2bbdf89
fix pipeline
jennykupzig Mar 20, 2026
4ca2737
wip
jennykupzig Mar 20, 2026
703d219
add build directory for sphinx to github repo
jennykupzig Mar 20, 2026
ca73f79
wip
jennykupzig Mar 20, 2026
6721e4f
Merge remote-tracking branch 'origin/develop' into use_glom_for_metadata
jennykupzig Mar 20, 2026
278ad39
avoid erroneaous included file in branch
jennykupzig Mar 20, 2026
61430b9
include first verbal PR comments
jennykupzig Mar 20, 2026
4aa8e84
fix pipeline
jennykupzig Mar 20, 2026
7498e34
combine pipelines
jennykupzig Mar 20, 2026
9e801a7
work on publishing
jennykupzig Mar 24, 2026
11181bc
include index.html in docs
jennykupzig Mar 25, 2026
6458d3f
push everythin from html to docs folder
jennykupzig Mar 25, 2026
7571a7f
add style to github page
jennykupzig Mar 25, 2026
7d8b005
new folder structure for github page
jennykupzig Mar 25, 2026
fbeba1f
enhance design of documentation
jennykupzig Mar 25, 2026
8db760c
include _ folders in github pages
jennykupzig Mar 25, 2026
0769fd0
enhance pyproject.toml for pypi appareance
jennykupzig Mar 25, 2026
d1e47ea
update hetida mail
jennykupzig Mar 25, 2026
ce60c1f
include docker-compose setup to test hdhelpers in designer image
jennykupzig Mar 25, 2026
1d1f922
Update issue templates
jennykupzig Mar 25, 2026
86d714a
MTS to MTSF in documentation
jennykupzig Mar 25, 2026
3e6d58a
include date of release in CHANGELOG
jennykupzig Mar 25, 2026
5fe93c3
enhance CHANGELOG following Keep a Changelog
jennykupzig Mar 25, 2026
79eb8a8
include badges in README
jennykupzig Mar 25, 2026
5ed2167
minor fixes in README
jennykupzig Mar 25, 2026
75f313d
enhance readme
jennykupzig Mar 25, 2026
e277eb2
enhance readme 2
jennykupzig Mar 25, 2026
b3e3b49
enhance readme 3
jennykupzig Mar 25, 2026
b193e37
enhance readme 4
jennykupzig Mar 25, 2026
184c231
update readme 5
jennykupzig Mar 25, 2026
239ed32
enhance readme 6
jennykupzig Mar 25, 2026
94a39ed
PR I
jennykupzig Apr 28, 2026
ced9531
workflow using uv for installation not pip
jennykupzig Apr 28, 2026
e0e2bc5
using uv sync not uv pip for workflow
jennykupzig Apr 28, 2026
4760c1e
modifiying run command to use uv everywhere
jennykupzig Apr 28, 2026
43c80f9
include uv also in run check
jennykupzig Apr 28, 2026
4db71c7
add missing uv run for ruff in run check
jennykupzig Apr 28, 2026
6bc1a7c
[use_glom_for_metadata] PR comments III
jennykupzig May 13, 2026
386df53
[use_glom_for_metadata] prepare release 0.0.2
jennykupzig May 20, 2026
cc44dfe
Merge pull request #1 from hetida/use_glom_for_metadata
jennykupzig May 20, 2026
3c6a79c
[develop] update first steps page
jennykupzig May 20, 2026
45ff9f4
[develop] add pipeline to main branch
jennykupzig May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
67 changes: 67 additions & 0 deletions .github/workflows/check_pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# This is a basic workflow to help you get started with Actions

name: Check pull requests

# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "develop" branch
pull_request:
branches: [ "develop", "main" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel

jobs:
build:
name: test_pypy_version
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- "3.12"
- "3.13"
- "3.14"

steps:
- uses: actions/checkout@v6

- name: Install uv and set the Python version
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
python-version: ${{ matrix.python-version }}

- name: Display Python version
run: python -c "import sys; print(sys.version)"

- name: Sync dependencies and run checks
run: |
set -e
echo "Installing hdhelpers"
uv sync --locked --all-extras --dev
echo "Running tests..."
./run test


check_lint_format_mypy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Install uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0

- name: Set up Python
run: uv python install

- name: Info
run: echo "Applying checks"

- name: Sync dependencies and run checks
run: |
set -e
echo "Installing hdhelpers"
uv sync --locked --all-extras --dev
echo "Running checks..."
./run check --no-tests
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# quality checks
.coverage
.pytest_cache
.mypy_cache
.ruff_cache
coverage*

# documentation
sphinx/build

# venv
.venv
.env

# packaging
dist/*

# generals
__pycache__
*.pyc
*.pyo

# other stuff
launch.json
requirements*.txt
requirements*.in
todo
untracked
Dockerfile
docker-compose.yaml
33 changes: 33 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"search.exclude": {
"**/__pycache__": true,
"**/.git": true,
"**/.venv": true,
".tmp": true,
"**/.mypy_cache": true,
"**/.pytest_cache": true,
"**/.coverage": true,
"**/.ruff_cache": true
},
"files.exclude": {
"**/__pycache__": true,
"**/.venv": true,
".tmp": true,
"**/.mypy_cache": true,
"**/.pytest_cache": true,
"**/.coverage": true,
"**/.ruff_cache": true
},
"editor.formatOnSave": true,
"editor.indentSize": "tabSize",
"editor.detectIndentation": false,
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports.ruff": "explicit"
},
},
"python.defaultInterpreterPath": ".venv/bin/python",
"python.languageServer": "Default",

}
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## [0.0.2] - 2026-XX-XX
- Include helpers for metadata
- Include helper function for modify timezone
- Publish sphinx documentation on GitHub Pages

## [0.0.1] - 2025-09-11
- Test upload on pypi of hdhelpers
- Note: No tagging used as it was only a test upload on pypi
9 changes: 9 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
The MIT License (MIT)

Copyright © 2025 fuseki GmbH

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
108 changes: 108 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Welcome to hdhelpers

[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/hetida/hdhelpers/graphs/commit-activity)
[![build](https://github.com/hetida/hdhelpers/actions/workflows/check_pull_request.yml/badge.svg)](https://github.com/hetida/hdhelpers/actions/workflows/check_pull_request.yml)
![python](https://img.shields.io/badge/python-%203.12%20|%203.13|%203.14%20-blue)
[![PyPI version](https://badge.fury.io/py/hdhelpers.svg)](https://badge.fury.io/py/hdhelpers)
![PyPI - License](https://img.shields.io/pypi/l/hdhelpers)
[![Downloads](https://pepy.tech/badge/hdhelpers)](https://pepy.tech/project/hdhelpers)

## What is hdhelpers?
hdhelpers is a package designed for and included in the standard installation of the [hetida
designer](https://github.com/hetida/hetida-designer).

Currently, the package provides functions to retrieve metadata from Pandas objects (stored in the `attr` of the Pandas object). Pandas objects are the standard for processing time series data in the hetida designer. Additionally, a function is provided to handle time zone information. In the future, the package is planned to be expanded, for example by providing functions to facilitate visualization.

The documentation of the package is a [GitHub page](https://hetida.github.io/hdhelpers/), on which the functions of the package are described and some tips for getting started with using the package are given.

## Getting Started with hdhelpers
Since version >0.13.10 the hetida designer runtime comes with an installed version of hdhelpers. To start the hetida designer we recommend following the [hetida designer setup guide](https://github.com/hetida/hetida-designer/blob/release/README.md#getting-started-with-hetida-designer).

An example is given in [GitHub page](https://hetida.github.io/hdhelpers/first_steps.html#how-to-get-metadata-with-hdhelpers) of how to use functionalities of hdhelpers inside a hetida designer component. Furthermore the base component [Single Time Series Plot](https://github.com/hetida/hetida-designer/blob/release/runtime/transformations/components/visualization) uses hdhelpers to demonstrate the usage (since version >0.13.10).

## Developing for hdhelpers
For dependency management and venv setup, building and publishing, [uv](https://docs.astral.sh/uv/) is used.

### Setting up a Development Environment
#### Python environment
1) Create a virtual environment with `uv venv`. This will create a hidden `.venv` directory.
2) Activate the virtual environment via `source .venv/bin/activate`
3) Run `uv sync` to install all dependencies given in pyproject.toml.
4) In case you need to add a new dependency, do so via `uv add <new_dependency>`. That way, uv finds versions of all
dependencies that are compatible with each other.
5) In case you need a new requirement for development purposes please use `uv add --dev <new_dependency>`

Note: To install hdhelpers in editable mode in your venv please run `uv pip install -e .`

#### hetida designer with hdhelpers
To test designer images with current hdhelpers version please save a copy of [docker-compose.yml](https://github.com/hetida/hetida-designer/blob/release/docker-compose.yml) from the hetida designer repository.

Then write a `Dockerfile` to install the current hdhelpers version in the required designer backend.
```yaml
FROM hetida/designer-backend:<<hd_version>>

USER root

RUN pip install .

USER hd_app

CMD ["bash", "/app/start.sh"]
```

Then modify the docker-compose.yml to work with the backend version defined by the modified Dockerfile.
```yaml
...
hetida-designer-backend:
build:
context: .
dockerfile: Dockerfile
...
```


use docker-compose.yaml, e.g. via
`docker compose -f 'docker-compose.yaml' up -d --build`. This compose setup loads the current
hetida designer images and installs the hdhelpers package in the runtime. Thus, you can use functions of hdhelpers
writing component code.

### Code Quality
Once you are done writing your code, including unit tests, use `./run check` to see if your code quality is sufficient.

### Documentation
Fr documentation we use the tool sphinx. Please apply `./run build_docs` to create the current state of documentation. It will be stored in **docs**. You can open the documentation by opening `docs/index.html`, e.g. with your browser.

### Build, Release and Publish
The first step for publishing a new package version is creating and merging a pull request from develop to main.
In detail the following steps should be executed beforehand:

1) Please execute `./run build_package <version_nr>` where version number should follow [semantic versioning](https://semver.org/).
This will:
- Runs `uv sync --frozen` to upgrade dependencies.
- Update version in pyproject.toml
- Update \_\_version__ in \_\_init__.py
- Builds wheels of hdhelpers in ./dist

2) Ensure that listed `classifiers` in `pyproject.toml`are up to date. If not
- Update `pyproject.toml` accordingly
- Update `./run test-py-versions` accordingly for local testing using uv
- Update `check_pull_request.yml` accordingly for automated pipeline execution of checks
- Update badge in this file for Python versions above

3) Update CHANGELOG.md manually following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)

When the PR is accepted, the package can be **published** in a second step.
To **publish** the build from the `dist` subdirectory to PyPI,

1) tag your main branch with the specified package version

2) use `uv publish --index testpypi --token <API-token>`. You need a (Test-)PyPI account with a token and you need maintainer/owner access to the [hdhelpers (Test-)PyPI project](https://pypi.org/project/hdhelpers/).

3) After publishing please communicate to the hetida designer team so upgrade there dependencies.
The hetida designer docker compose setup installs hdhelpers from [PyPI](https://pypi.org) as it does with any dependency listed in `runtime/requirements.in`.

### Notes
- Please ensure that dependencies specified for hdhelpers do work in current designer versions.
- If you want to upgrade dependencies please run `uv lock --upgrade`
- to install hdhelpers from testpypi you can use:
`uv pip install --extra-index-url https://test.pypi.org/simple/ --index-url https://pypi.org/simple --refresh --index-strategy unsafe-best-match hdhelpers`
Empty file added docs/.nojekyll
Empty file.
Loading