Skip to content

Commit bacc2e6

Browse files
committed
feat: recipes syncers and intial files
1 parent ba6e74f commit bacc2e6

21 files changed

+395
-2
lines changed

.coveragerc

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
[run]
2+
# Only measure coverage for these source directories
3+
source = recipes, syncers
4+
5+
[report]
6+
# Omit tests, docs, markdown, config, and common non-code files from coverage report
7+
omit =
8+
*.md
9+
*.txt
10+
*.rst
11+
*.yml
12+
*.yaml
13+
*.ini
14+
setup.py
15+
LICENSE
16+
README*
17+
CONTRIBUTING*
18+
.gitignore
19+
.coveragerc
20+
__init__.py
21+
pytest.ini
22+
requirements.txt

.github/workflows/ci.yaml

Whitespace-only changes.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Run Tests and Upload Coverage
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Set up Python
18+
uses: actions/setup-python@v5
19+
with:
20+
python-version: "3.10"
21+
22+
- name: Install dependencies
23+
run: |
24+
python -m pip install --upgrade pip
25+
pip install -r requirements.txt
26+
pip install pytest pytest-cov
27+
28+
- name: Run tests with coverage
29+
run: |
30+
pytest --cov=src --cov-report=xml
31+
32+
- name: Upload coverage reports to Codecov
33+
uses: codecov/codecov-action@v5
34+
with:
35+
token: ${{ secrets.CODECOV_TOKEN }}
36+
slug: leftkats/DataPytheon

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
repos:
2+
- repo: https://github.com/astral-sh/ruff-pre-commit
3+
rev: v0.4.4 # or your preferred version
4+
hooks:
5+
- id: ruff
6+
args: ["--fix", "--line-length=120"]

CODE_OF_CONDUCT.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Code of Conduct
2+
3+
## Our Pledge
4+
5+
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in **DataPytheon** a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6+
7+
## Our Standards
8+
9+
Examples of behavior that contributes to creating a positive environment include:
10+
11+
- Using welcoming and inclusive language
12+
- Being respectful of differing viewpoints and experiences
13+
- Gracefully accepting constructive criticism
14+
- Focusing on what is best for the community
15+
- Showing empathy towards other community members
16+
17+
Examples of unacceptable behavior by participants include:
18+
19+
- Harassment, intimidation, or discrimination in any form
20+
- Trolling, insulting or derogatory comments, and personal or political attacks
21+
- Public or private harassment
22+
- Publishing others' private information, such as physical or electronic addresses, without explicit permission
23+
- Other conduct which could reasonably be considered inappropriate in a professional setting
24+
25+
## Enforcement Responsibilities
26+
27+
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28+
29+
## Reporting Guidelines
30+
31+
If you are subject to or witness unacceptable behavior, please report it by contacting the project maintainers. All reports will be reviewed and investigated promptly and fairly.
32+
33+
## Scope
34+
35+
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
36+
37+
## Enforcement
38+
39+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders, who will decide on the best course of action. This may include a warning or temporary or permanent ban from the project.
40+
41+
## Attribution
42+
43+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

CONTRIBUTING.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Contributing to DataPytheon
2+
3+
Thank you for your interest in contributing! :sparkles: Whether you're a first-timer or an experienced contributor, we welcome your help in making DataPytheon better.
4+
5+
---
6+
7+
## How You Can Help
8+
9+
- Add new **data recipes** in the `recipes/` folder
10+
- Add new **API syncers** in the `syncers/` folder
11+
- Fix bugs or improve existing scripts
12+
- Improve documentation or add examples
13+
- Write or improve tests in the `tests/` folder
14+
15+
---
16+
17+
## Getting Started
18+
19+
1. **Fork the repository**
20+
Click the "Fork" button at the top right of the repo page.
21+
22+
2. **Clone your fork locally**
23+
```bash
24+
git clone https://github.com/your-username/DataPytheon.git
25+
cd DataPytheon
26+
```
27+
3.Create a new branch for your work
28+
```bash
29+
git checkout -b feature/your-feature-name
30+
```
31+
4.Create a new branch for your work
32+
``bash
33+
pip install -r requirements.txt
34+
```
35+
5. Make your changes
36+
Add your script, improve docs, or fix bugs.
37+
6. Test your changes
38+
Run existing tests and/or add new ones.
39+
```bash
40+
pytest
41+
```
42+
7. Commit and push
43+
```bash
44+
git add .
45+
git commit -m "Add feature: description"
46+
git push origin feature/your-feature-name
47+
```
48+
8. Open a Pull Request
49+
50+
Go to your fork on GitHub and click "Compare & pull request". Describe your changes clearly.

README.md

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,47 @@
1-
# DataPytheon
2-
A mythical collection of ready-to-use Python scripts for fetching, cleaning, and syncing data from public datasets and APIs. Cook data fast with recipes and syncers!
1+
# :snake: DataPytheon
2+
3+
[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
4+
[![codecov](https://codecov.io/gh/leftkats/DataPytheon/graph/badge.svg?token=C69BFSAR0S)](https://codecov.io/gh/leftkats/DataPytheon)
5+
6+
7+
Welcome to **DataPytheon** – a mythical library of **easy-to-use Python scripts** that help you **access, clean, and explore datasets** from both public repositories and live APIs.
8+
9+
Whether you're a **beginner learning data science**, a **developer prototyping fast**, or an **open-source contributor**, this project gives you plug-and-play tools to handle real-world data with ease.
10+
11+
---
12+
13+
## :bookmark_tabs: What Is This?
14+
15+
**DataPytheon** is a hybrid repository that offers:
16+
17+
- **`recipes/`** — Pre-cleaned **static datasets** (like Titanic, Iris, Netflix, etc.)
18+
- **`syncers/`** — Scripts to **fetch real-time data** from public APIs (like exchange rates, crypto prices, weather, etc.)
19+
20+
All scripts return **ready-to-use Pandas DataFrames**, ideal for quick analysis, learning, or feeding into models.
21+
22+
Think of it as your **data prep toolbox** — one line of code away from clean, structured data.
23+
24+
---
25+
26+
## :hammer_and_wrench: Who Is It For?
27+
28+
- :student: **Beginners** in Python, data science, or machine learning
29+
- :computer: **Developers** who want quick dataset access without boilerplate
30+
- :sparkles: **Contributors** looking for a simple and valuable open-source project
31+
- :books: **Educators** who need ready datasets for teaching or assignments
32+
33+
---
34+
35+
## :file_folder: Project Structure
36+
37+
DataPytheon/
38+
39+
├── recipes/ # Static datasets
40+
│ └── titanic.py # Example recipe
41+
42+
├── syncers/ # Live/API data scripts
43+
│ └── exchange_rates.py # Example syncer
44+
45+
├── tests/ # Basic unit tests for scripts
46+
│ └── test_titanic.py
47+

codecov.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
codecov:
3+
require_ci_to_pass: yes
4+
5+
coverage:
6+
status:
7+
project:
8+
default:
9+
target: 85%
10+
threshold: 2% # Reject PR if coverage drops more than 2%
11+
patch:
12+
default:
13+
threshold: 2%
14+
15+
comment:
16+
layout: "reach, diff, flags, files"
17+
behavior: default
18+
require_changes: false

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[tool.ruff]
2+
line-length = 120
3+
target-version = "py310"
4+
select = ["E", "F", "I"] # Error, Pyflakes, and Import sort

pytest.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[pytest]
2+
pythonpath = src
3+
addopts = --cov=src --cov-report=term --cov-fail-under=80
4+
testpaths = tests
5+
python_files = test_*.py
6+
norecursedirs = .git .tox .venv .idea .vscode

0 commit comments

Comments
 (0)