Skip to content

Commit f11783f

Browse files
authored
Merge pull request #1 from Abstract-Data/ci/add-github-workflows
Add GitHub Actions CI workflow and README badges
2 parents 76022d7 + d256929 commit f11783f

File tree

15 files changed

+97
-999
lines changed

15 files changed

+97
-999
lines changed

resolved-workflows/setup-python-uv-action.yml renamed to .github/actions/setup-python-uv/action.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
name: Setup Python with uv
2-
description: Set up Python environment using uv package manager
2+
description: Set up Python environment using uv package manager with caching
33

44
inputs:
5-
install-extras:
6-
description: 'Whether to install all extras with dependencies'
7-
required: false
8-
default: 'false'
95
python-version:
106
description: 'Python version to install'
117
required: false
128
default: '3.12'
9+
install-extras:
10+
description: 'Whether to install all extras with dependencies'
11+
required: false
12+
default: 'false'
1313

1414
runs:
1515
using: composite
1616
steps:
17-
- uses: actions/checkout@v4
18-
1917
- name: Install uv
2018
uses: astral-sh/setup-uv@v4
2119
with:
@@ -34,3 +32,4 @@ runs:
3432
else
3533
uv sync --group dev
3634
fi
35+
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,19 @@ jobs:
1414
name: Lint
1515
runs-on: ubuntu-latest
1616
steps:
17-
- name: Setup Python with uv
18-
uses: ./.github/actions/setup-python-uv
17+
- uses: actions/checkout@v4
18+
19+
- name: Install uv
20+
uses: astral-sh/setup-uv@v4
21+
with:
22+
version: "latest"
23+
enable-cache: true
24+
25+
- name: Set up Python
26+
run: uv python install 3.12
27+
28+
- name: Install dependencies
29+
run: uv sync --group dev
1930

2031
- name: Run Ruff check
2132
run: uv run ruff check src/ tests/
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,19 @@ jobs:
1717
matrix:
1818
python-version: ["3.12", "3.13"]
1919
steps:
20-
- name: Setup Python with uv
21-
uses: ./.github/actions/setup-python-uv
20+
- uses: actions/checkout@v4
21+
22+
- name: Install uv
23+
uses: astral-sh/setup-uv@v4
2224
with:
23-
install-extras: 'true'
24-
python-version: ${{ matrix.python-version }}
25+
version: "latest"
26+
enable-cache: true
27+
28+
- name: Set up Python
29+
run: uv python install ${{ matrix.python-version }}
30+
31+
- name: Install dependencies
32+
run: uv sync --group dev --all-extras
2533

2634
- name: Run tests
2735
run: uv run pytest tests/ -v --tb=short

.github/workflows/typecheck.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Mypy
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
typecheck:
14+
name: Type Check
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Install uv
20+
uses: astral-sh/setup-uv@v4
21+
with:
22+
version: "latest"
23+
enable-cache: true
24+
25+
- name: Set up Python
26+
run: uv python install 3.12
27+
28+
- name: Install dependencies
29+
run: uv sync --group dev
30+
31+
- name: Run Mypy
32+
run: uv run mypy src/

LICENSE

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Abstract-Data
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+

PR_CONFLICT_RESOLUTION.md

Lines changed: 0 additions & 189 deletions
This file was deleted.

README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# RyanData Address Utils
22

3-
A production-ready Python address parser that uses `usaddress` to parse US addresses into structured Pydantic models with ZIP code and state validation. Features extensible architecture with Protocols, ABCs, and Factory patterns.
3+
[![Tests](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/tests.yml/badge.svg)](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/tests.yml)
4+
[![Ruff](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/lint.yml/badge.svg)](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/lint.yml)
5+
[![Mypy](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/typecheck.yml/badge.svg)](https://github.com/Abstract-Data/RyanData-Address-Utils/actions/workflows/typecheck.yml)
6+
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
7+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8+
9+
A Python address parser built for Ryan Data that uses `usaddress` to parse US addresses into structured Pydantic models with ZIP code and state validation.
410

511
## Installation
612

@@ -41,7 +47,7 @@ result = service.parse("456 Oak Ave, Dallas TX 75201")
4147
- **Validate states** - abbreviations and full names
4248
- **Pandas integration** for batch processing
4349
- **Extensible architecture** - swap parsers, data sources, validators
44-
- **Builder pattern** for programmatic address construction
50+
- **Builder pattern** for programmatic address constructionYes
4551

4652
## Pandas Integration
4753

@@ -57,7 +63,7 @@ df = pd.DataFrame({
5763
})
5864

5965
service = AddressService()
60-
result = service.parse_dataframe(df, "address")
66+
result = service.parse_dataframe(df, "address") # <-- This is where your named address column goes, and then it'll parse and add the split cols to the dataframe
6167
print(result[["AddressNumber", "StreetName", "ZipCode"]])
6268
```
6369

0 commit comments

Comments
 (0)