fjc-idb 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fjc_idb-0.0.2/.editorconfig +31 -0
- fjc_idb-0.0.2/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- fjc_idb-0.0.2/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- fjc_idb-0.0.2/.github/dependabot.yml +57 -0
- fjc_idb-0.0.2/.github/workflows/ci.yml +119 -0
- fjc_idb-0.0.2/.github/workflows/publish.yml +34 -0
- fjc_idb-0.0.2/.gitignore +141 -0
- fjc_idb-0.0.2/.pre-commit-config.yaml +32 -0
- fjc_idb-0.0.2/.python-version +1 -0
- fjc_idb-0.0.2/CHANGELOG.md +43 -0
- fjc_idb-0.0.2/CODE_OF_CONDUCT.md +79 -0
- fjc_idb-0.0.2/CONTRIBUTING.md +54 -0
- fjc_idb-0.0.2/LICENSE +15 -0
- fjc_idb-0.0.2/PKG-INFO +164 -0
- fjc_idb-0.0.2/README.md +138 -0
- fjc_idb-0.0.2/docs/advanced.md +166 -0
- fjc_idb-0.0.2/docs/changelog.md +1 -0
- fjc_idb-0.0.2/docs/code_of_conduct.md +1 -0
- fjc_idb-0.0.2/docs/codebooks/appellate.md +393 -0
- fjc_idb-0.0.2/docs/codebooks/civil.md +280 -0
- fjc_idb-0.0.2/docs/codebooks/criminal.md +333 -0
- fjc_idb-0.0.2/docs/codebooks/includes/appellate_nos.md +97 -0
- fjc_idb-0.0.2/docs/codebooks/includes/civil_nos.md +95 -0
- fjc_idb-0.0.2/docs/codebooks/includes/offenses.md +275 -0
- fjc_idb-0.0.2/docs/contributing.md +1 -0
- fjc_idb-0.0.2/docs/css/material.css +4 -0
- fjc_idb-0.0.2/docs/css/mkdocstrings.css +28 -0
- fjc_idb-0.0.2/docs/index.md +1 -0
- fjc_idb-0.0.2/docs/license.md +1 -0
- fjc_idb-0.0.2/docs/recipes.md +149 -0
- fjc_idb-0.0.2/docs/scripts/gen_ref_nav.py +38 -0
- fjc_idb-0.0.2/docs/tutorial.md +140 -0
- fjc_idb-0.0.2/mkdocs.yml +161 -0
- fjc_idb-0.0.2/pyproject.toml +204 -0
- fjc_idb-0.0.2/src/fjc_idb/__init__.py +12 -0
- fjc_idb-0.0.2/src/fjc_idb/__main__.py +156 -0
- fjc_idb-0.0.2/src/fjc_idb/base.py +387 -0
- fjc_idb-0.0.2/src/fjc_idb/downloader.py +258 -0
- fjc_idb-0.0.2/src/fjc_idb/main.py +761 -0
- fjc_idb-0.0.2/src/fjc_idb/options.py +44 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/__init__.py +14 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/appellate.py +223 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/civil.py +149 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/courts.py +1099 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/criminal.py +86 -0
- fjc_idb-0.0.2/src/fjc_idb/rules/offenses.py +155 -0
- fjc_idb-0.0.2/tests/test_download.py +96 -0
- fjc_idb-0.0.2/tests/test_main.py +360 -0
- fjc_idb-0.0.2/uv.lock +1911 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Sets default formatting options for many editors and IDEs
|
|
2
|
+
|
|
3
|
+
# https://editorconfig.org/
|
|
4
|
+
|
|
5
|
+
root = true
|
|
6
|
+
|
|
7
|
+
[*]
|
|
8
|
+
charset = utf-8
|
|
9
|
+
insert_final_newline = true
|
|
10
|
+
indent_size = 4
|
|
11
|
+
indent_style = space
|
|
12
|
+
trim_trailing_whitespace = true
|
|
13
|
+
|
|
14
|
+
# Docstrings and comments use max_line_length = 79
|
|
15
|
+
[*.py]
|
|
16
|
+
max_line_length = 80
|
|
17
|
+
|
|
18
|
+
# The JSON files contain newlines inconsistently
|
|
19
|
+
[*.json]
|
|
20
|
+
indent_size = 2
|
|
21
|
+
insert_final_newline = ignore
|
|
22
|
+
|
|
23
|
+
# Makefiles always use tabs for indentation
|
|
24
|
+
[Makefile]
|
|
25
|
+
indent_style = tab
|
|
26
|
+
|
|
27
|
+
[*.{yml, yaml, toml, html}]
|
|
28
|
+
indent_size = 2
|
|
29
|
+
|
|
30
|
+
[*.md]
|
|
31
|
+
trim_trailing_whitespace = false
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ''
|
|
5
|
+
labels: unconfirmed
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Describe the bug**
|
|
11
|
+
|
|
12
|
+
A clear and concise description of what the bug is.
|
|
13
|
+
|
|
14
|
+
**To Reproduce**
|
|
15
|
+
|
|
16
|
+
Steps to reproduce the behavior:
|
|
17
|
+
1. Go to '...'
|
|
18
|
+
2. Run command '...'
|
|
19
|
+
3. Scroll down to '...'
|
|
20
|
+
4. See error
|
|
21
|
+
|
|
22
|
+
**Expected behavior**
|
|
23
|
+
|
|
24
|
+
A clear and concise description of what you expected to happen.
|
|
25
|
+
|
|
26
|
+
**Screenshots**
|
|
27
|
+
|
|
28
|
+
If applicable, add screenshots to help explain your problem.
|
|
29
|
+
|
|
30
|
+
**System (please complete the following information):**
|
|
31
|
+
|
|
32
|
+
- `fjc idb` version: [e.g. 0.2.1]
|
|
33
|
+
- Python version: [e.g. 3.9]
|
|
34
|
+
- OS: [Windows/Linux/MacOS]
|
|
35
|
+
|
|
36
|
+
**Additional context**
|
|
37
|
+
Add any other context about the problem here.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ''
|
|
5
|
+
labels: feature
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
|
11
|
+
|
|
12
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
13
|
+
|
|
14
|
+
**Describe the solution you'd like**
|
|
15
|
+
|
|
16
|
+
A clear and concise description of what you want to happen.
|
|
17
|
+
|
|
18
|
+
**Describe alternatives you've considered**
|
|
19
|
+
|
|
20
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
21
|
+
|
|
22
|
+
**Additional context**
|
|
23
|
+
|
|
24
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Automatically updates dependency versions using dependabot.
|
|
2
|
+
|
|
3
|
+
# version: 2
|
|
4
|
+
# updates:
|
|
5
|
+
|
|
6
|
+
# Maintains dependencies for Python via `pip`
|
|
7
|
+
# - package-ecosystem: pip
|
|
8
|
+
# directory: "/"
|
|
9
|
+
# # Always updates to a newer version. If you want a less aggressive strategy,
|
|
10
|
+
# # change the value to "increase-if-necessary"
|
|
11
|
+
# versioning-strategy: increase
|
|
12
|
+
# schedule:
|
|
13
|
+
# interval: weekly
|
|
14
|
+
# time: "5:00"
|
|
15
|
+
|
|
16
|
+
# # Maintains dependencies for GitHub Actions
|
|
17
|
+
# - package-ecosystem: github-actions
|
|
18
|
+
# directory: "/"
|
|
19
|
+
# schedule:
|
|
20
|
+
# interval: "weekly"
|
|
21
|
+
# time: "6:00"
|
|
22
|
+
|
|
23
|
+
version: 2
|
|
24
|
+
updates:
|
|
25
|
+
- package-ecosystem: pip
|
|
26
|
+
directory: "/docs"
|
|
27
|
+
schedule:
|
|
28
|
+
interval: daily
|
|
29
|
+
time: "04:00"
|
|
30
|
+
timezone: "Europe/Berlin"
|
|
31
|
+
labels:
|
|
32
|
+
- "cookiecutter"
|
|
33
|
+
- "dependencies"
|
|
34
|
+
- "python"
|
|
35
|
+
open-pull-requests-limit: 99
|
|
36
|
+
- package-ecosystem: pip
|
|
37
|
+
directory: "/.github/workflows"
|
|
38
|
+
schedule:
|
|
39
|
+
interval: daily
|
|
40
|
+
time: "04:00"
|
|
41
|
+
timezone: "Europe/Berlin"
|
|
42
|
+
labels:
|
|
43
|
+
- "cookiecutter"
|
|
44
|
+
- "dependencies"
|
|
45
|
+
- "python"
|
|
46
|
+
open-pull-requests-limit: 99
|
|
47
|
+
- package-ecosystem: github-actions
|
|
48
|
+
directory: "/"
|
|
49
|
+
schedule:
|
|
50
|
+
interval: daily
|
|
51
|
+
time: "04:00"
|
|
52
|
+
timezone: "Europe/Berlin"
|
|
53
|
+
labels:
|
|
54
|
+
- "cookiecutter"
|
|
55
|
+
- "dependencies"
|
|
56
|
+
- "github_actions"
|
|
57
|
+
open-pull-requests-limit: 99
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Automatically performs jobs upon a commit push or pull-request
|
|
2
|
+
|
|
3
|
+
# This Action builds, tests, and lints the package. Then, it builds the
|
|
4
|
+
# documentation and deploys it on GitHub Pages.
|
|
5
|
+
|
|
6
|
+
# If the commit message matches a semantic version (e.g. "v0.1.2"), a GitHub
|
|
7
|
+
# release will be created by the `create_github_release` job.
|
|
8
|
+
|
|
9
|
+
name: continuous integration
|
|
10
|
+
|
|
11
|
+
# Allows this Action to be called by a push or pull request
|
|
12
|
+
on: [push, pull_request]
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
pull-requests: write
|
|
17
|
+
|
|
18
|
+
env:
|
|
19
|
+
DISABLE_MKDOCS_2_WARNING: "true"
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
|
|
23
|
+
build_and_test:
|
|
24
|
+
runs-on: ${{ matrix.os }}
|
|
25
|
+
strategy:
|
|
26
|
+
fail-fast: false
|
|
27
|
+
matrix:
|
|
28
|
+
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
29
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: checkout repository
|
|
33
|
+
uses: actions/checkout@v7
|
|
34
|
+
|
|
35
|
+
- name: install python
|
|
36
|
+
uses: actions/setup-python@v7
|
|
37
|
+
with:
|
|
38
|
+
python-version: ${{ matrix.python-version }}
|
|
39
|
+
|
|
40
|
+
- name: install uv
|
|
41
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
42
|
+
|
|
43
|
+
- name: install dependencies
|
|
44
|
+
run: uv sync --python ${{ matrix.python-version }}
|
|
45
|
+
|
|
46
|
+
- name: run pre-commit
|
|
47
|
+
run: uv run pre-commit run -a --show-diff-on-failure
|
|
48
|
+
|
|
49
|
+
- name: run tests
|
|
50
|
+
run: uv run pytest tests
|
|
51
|
+
|
|
52
|
+
lint_and_format:
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
|
|
55
|
+
steps:
|
|
56
|
+
- name: checkout repository
|
|
57
|
+
uses: actions/checkout@v7
|
|
58
|
+
|
|
59
|
+
- name: install uv
|
|
60
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
61
|
+
|
|
62
|
+
- name: install dependencies
|
|
63
|
+
run: uv sync
|
|
64
|
+
|
|
65
|
+
- name: run ruff
|
|
66
|
+
run: uv run ruff check --no-fix --output-format=github
|
|
67
|
+
|
|
68
|
+
- name: run mypy
|
|
69
|
+
run: uv run mypy
|
|
70
|
+
|
|
71
|
+
document_and_deploy:
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
|
|
74
|
+
steps:
|
|
75
|
+
- name: checkout repository
|
|
76
|
+
uses: actions/checkout@v7
|
|
77
|
+
|
|
78
|
+
- name: install uv
|
|
79
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
80
|
+
|
|
81
|
+
- name: install dependencies
|
|
82
|
+
run: uv sync
|
|
83
|
+
|
|
84
|
+
- name: build documentation with mkdocs
|
|
85
|
+
run: uv run mkdocs build
|
|
86
|
+
|
|
87
|
+
- name: deploy documentation to github pages
|
|
88
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
89
|
+
run: uv run mkdocs gh-deploy --force --clean --verbose
|
|
90
|
+
|
|
91
|
+
# Only creates a release if a line of the commit message is a semantic version
|
|
92
|
+
# (e.g. "v0.1.2"), which can be followed by other lines, such as a
|
|
93
|
+
# "Co-Authored-By:" trailer. The release notes are generated by GitHub.
|
|
94
|
+
create_github_release:
|
|
95
|
+
name: create github release
|
|
96
|
+
if: github.event_name == 'push'
|
|
97
|
+
runs-on: ubuntu-latest
|
|
98
|
+
|
|
99
|
+
steps:
|
|
100
|
+
- name: initiate github release
|
|
101
|
+
env:
|
|
102
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
103
|
+
COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
|
|
104
|
+
run: |
|
|
105
|
+
semver='[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?'
|
|
106
|
+
version=$(printf '%s\n' "$COMMIT_MESSAGE" | tr -d '\r' \
|
|
107
|
+
| grep -E -m 1 "^v${semver}$" || true)
|
|
108
|
+
if [ -z "$version" ]; then
|
|
109
|
+
echo "The commit message has no version, so no release was created."
|
|
110
|
+
exit 0
|
|
111
|
+
fi
|
|
112
|
+
# A version with a pre-release identifier (e.g. "v1.0.0-beta.1") is
|
|
113
|
+
# marked as a pre-release.
|
|
114
|
+
prerelease=$(case "${version%%+*}" in *-*) echo --prerelease;; esac)
|
|
115
|
+
gh release create "$version" \
|
|
116
|
+
--repo "$GITHUB_REPOSITORY" \
|
|
117
|
+
--target "$GITHUB_SHA" \
|
|
118
|
+
--title "Release: $version" \
|
|
119
|
+
--generate-notes $prerelease
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Securely publishes the repository on PyPI
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# To make this action work, you need to configure PyPI properly, using this
|
|
5
|
+
# guide: https://docs.pypi.org/trusted-publishers/adding-a-publisher/
|
|
6
|
+
|
|
7
|
+
name: publish
|
|
8
|
+
|
|
9
|
+
# Allows this Action to be called by other Actions or through GitHub
|
|
10
|
+
on: [workflow_call, workflow_dispatch]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
|
|
14
|
+
pypi_publish:
|
|
15
|
+
name: publish to pypi
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
# This permission is needed for private repositories.
|
|
19
|
+
contents: read
|
|
20
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
21
|
+
id-token: write
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: get repository
|
|
25
|
+
uses: actions/checkout@v7
|
|
26
|
+
|
|
27
|
+
- name: install uv
|
|
28
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
29
|
+
|
|
30
|
+
- name: build package
|
|
31
|
+
run: uv build
|
|
32
|
+
|
|
33
|
+
- name: push to pypi
|
|
34
|
+
run: uv publish
|
fjc_idb-0.0.2/.gitignore
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Byte-compiled
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer Logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit Testing
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
.nox/
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
.cache
|
|
45
|
+
nosetests.xml
|
|
46
|
+
coverage.xml
|
|
47
|
+
*.cover
|
|
48
|
+
*.py,cover
|
|
49
|
+
.hypothesis/
|
|
50
|
+
.pytest_cache/
|
|
51
|
+
|
|
52
|
+
# Translations
|
|
53
|
+
*.mo
|
|
54
|
+
*.pot
|
|
55
|
+
|
|
56
|
+
# Django
|
|
57
|
+
*.log
|
|
58
|
+
local_settings.py
|
|
59
|
+
db.sqlite3
|
|
60
|
+
db.sqlite3-journal
|
|
61
|
+
|
|
62
|
+
# Flask
|
|
63
|
+
instance/
|
|
64
|
+
.webassets-cache
|
|
65
|
+
|
|
66
|
+
# Scrapy
|
|
67
|
+
.scrapy
|
|
68
|
+
|
|
69
|
+
# Sphinx
|
|
70
|
+
docs/_build/
|
|
71
|
+
|
|
72
|
+
# PyBuilder
|
|
73
|
+
target/
|
|
74
|
+
|
|
75
|
+
# Jupyter
|
|
76
|
+
.ipynb_checkpoints
|
|
77
|
+
|
|
78
|
+
# IPython
|
|
79
|
+
profile_default/
|
|
80
|
+
ipython_config.py
|
|
81
|
+
|
|
82
|
+
# pyenv (.python-version is kept in the repository to pin Python 3.11)
|
|
83
|
+
|
|
84
|
+
# pipenv
|
|
85
|
+
Pipfile.lock
|
|
86
|
+
|
|
87
|
+
# Celery
|
|
88
|
+
celerybeat-schedule
|
|
89
|
+
celerybeat.pid
|
|
90
|
+
|
|
91
|
+
# SageMath
|
|
92
|
+
*.sage.py
|
|
93
|
+
|
|
94
|
+
# Environments
|
|
95
|
+
.env
|
|
96
|
+
.venv
|
|
97
|
+
env/
|
|
98
|
+
venv/
|
|
99
|
+
ENV/
|
|
100
|
+
env.bak/
|
|
101
|
+
venv.bak/
|
|
102
|
+
|
|
103
|
+
# Spyder
|
|
104
|
+
.spyderproject
|
|
105
|
+
.spyproject
|
|
106
|
+
|
|
107
|
+
# Rope
|
|
108
|
+
.ropeproject
|
|
109
|
+
|
|
110
|
+
# MkDocs
|
|
111
|
+
/site
|
|
112
|
+
|
|
113
|
+
# mypy
|
|
114
|
+
.mypy_cache/
|
|
115
|
+
.dmypy.json
|
|
116
|
+
dmypy.json
|
|
117
|
+
|
|
118
|
+
# Pyre
|
|
119
|
+
.pyre/
|
|
120
|
+
|
|
121
|
+
# VS Code
|
|
122
|
+
.vscode/
|
|
123
|
+
|
|
124
|
+
# VS Code counter
|
|
125
|
+
.VSCodeCounter/
|
|
126
|
+
|
|
127
|
+
# PyCharm
|
|
128
|
+
.idea/
|
|
129
|
+
|
|
130
|
+
# PDM
|
|
131
|
+
.copier-answers.yml
|
|
132
|
+
.idea/
|
|
133
|
+
.pdm-plugins/
|
|
134
|
+
.pdm-python
|
|
135
|
+
__pypackages__/
|
|
136
|
+
|
|
137
|
+
# Cython
|
|
138
|
+
cython_debug/
|
|
139
|
+
|
|
140
|
+
# Ruff
|
|
141
|
+
/.ruff_cache/
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
|
|
3
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
|
+
rev: "v6.0.0"
|
|
5
|
+
hooks:
|
|
6
|
+
- id: check-added-large-files
|
|
7
|
+
- id: check-ast
|
|
8
|
+
- id: check-json
|
|
9
|
+
- id: check-toml
|
|
10
|
+
- id: detect-private-key
|
|
11
|
+
- id: end-of-file-fixer
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
|
|
14
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
15
|
+
# Ruff version.
|
|
16
|
+
rev: v0.16.9
|
|
17
|
+
hooks:
|
|
18
|
+
# Run the linter.
|
|
19
|
+
- id: ruff
|
|
20
|
+
args: [ --fix ]
|
|
21
|
+
|
|
22
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
23
|
+
# uv version.
|
|
24
|
+
rev: 0.12.20
|
|
25
|
+
hooks:
|
|
26
|
+
- id: uv-lock
|
|
27
|
+
|
|
28
|
+
- repo: https://github.com/jsh9/pydoclint
|
|
29
|
+
rev: 0.10.1
|
|
30
|
+
hooks:
|
|
31
|
+
- id: pydoclint
|
|
32
|
+
args: [--style=google, --check-return-types=False, --arg-type-hints-in-docstring=False]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
<!-- insertion marker -->
|
|
6
|
+
|
|
7
|
+
## 0.0.2
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Parsing for three types of FJC Integrated Database (IDB) files: courts of
|
|
12
|
+
appeals, civil cases in the district courts, and criminal defendants in the
|
|
13
|
+
district courts. The parsing follows the current FJC codebooks and has been
|
|
14
|
+
tested on the files from 2008 through 2026.
|
|
15
|
+
- `run` exports a range of years to a CSV file, one yearly file at a time to
|
|
16
|
+
keep memory use low. `import_data`, `parse_data`, and `export_data` work on
|
|
17
|
+
the data in memory.
|
|
18
|
+
- `download` and `list_files` get the yearly SAS files and codebooks from the
|
|
19
|
+
FJC website.
|
|
20
|
+
- The `fjc-idb` command (also `python -m fjc_idb`) with `--start-year`,
|
|
21
|
+
`--stop-year`, `--data-folder`, `--rename-columns`, `--fix-city-spellings`,
|
|
22
|
+
`--download`, `--download-only`, and `--overwrite`.
|
|
23
|
+
- Descriptive column names, labels in place of codes (circuits, districts,
|
|
24
|
+
courthouses, agencies, dispositions, and more), and correct handling of the
|
|
25
|
+
IDB's missing-value codes.
|
|
26
|
+
- Pending cases are kept only from the latest yearly file, so combining years
|
|
27
|
+
does not count a case more than once.
|
|
28
|
+
- Added columns: indicators for appeal types and for groups of criminal
|
|
29
|
+
offenses and natures of suit, the days between key dates, counts of
|
|
30
|
+
concurrences and dissents, whether a decision was published, whether any
|
|
31
|
+
party was pro se, and a standard appellate docket number.
|
|
32
|
+
- Documentation: a tutorial, an advanced user guide, recipes, an API
|
|
33
|
+
reference, and codebooks for the appellate, criminal, and civil CSV files.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Continuous integration: removed Python 3.10 from the test matrix (pandas 3
|
|
38
|
+
requires Python 3.11 or later), fixed ruff and mypy errors, removed the
|
|
39
|
+
ruff-format pre-commit hook, and replaced the outdated release action.
|
|
40
|
+
|
|
41
|
+
## 0.0.1
|
|
42
|
+
|
|
43
|
+
Initial Commit
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
|
6
|
+
contributors and maintainers pledge to make participation in our project and
|
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
|
8
|
+
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
|
9
|
+
level of experience, education, socio-economic status, nationality, personal
|
|
10
|
+
appearance, race, religion, or sexual identity and orientation.
|
|
11
|
+
|
|
12
|
+
## Our Standards
|
|
13
|
+
|
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
|
15
|
+
include:
|
|
16
|
+
|
|
17
|
+
* Using welcoming and inclusive language
|
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
|
19
|
+
* Gracefully accepting constructive criticism
|
|
20
|
+
* Focusing on what is best for the community
|
|
21
|
+
* Showing empathy towards other community members
|
|
22
|
+
|
|
23
|
+
Examples of unacceptable behavior by participants include:
|
|
24
|
+
|
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
26
|
+
advances
|
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
28
|
+
* Public or private harassment
|
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
|
30
|
+
address, without explicit permission
|
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
32
|
+
professional setting
|
|
33
|
+
|
|
34
|
+
## Our Responsibilities
|
|
35
|
+
|
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
|
38
|
+
response to any instances of unacceptable behavior.
|
|
39
|
+
|
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
|
44
|
+
threatening, offensive, or harmful.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
This Code of Conduct applies within all project spaces, and it also applies when
|
|
49
|
+
an individual is representing the project or its community in public spaces.
|
|
50
|
+
Examples of representing a project or community include using an official
|
|
51
|
+
project e-mail address, posting via an official social media account, or acting
|
|
52
|
+
as an appointed representative at an online or offline event. Representation of
|
|
53
|
+
a project may be further defined and clarified by project maintainers.
|
|
54
|
+
|
|
55
|
+
## Enforcement
|
|
56
|
+
|
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
58
|
+
reported by contacting any of the following people:
|
|
59
|
+
|
|
60
|
+
* Corey Rayburn Yung (coreyrayburnyung@gmail.com)
|
|
61
|
+
|
|
62
|
+
All complaints will be reviewed and investigated and will result in a response that
|
|
63
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
|
64
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
65
|
+
Further details of specific enforcement policies may be posted separately.
|
|
66
|
+
|
|
67
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
68
|
+
faith may face temporary or permanent repercussions as determined by other
|
|
69
|
+
members of the project's leadership.
|
|
70
|
+
|
|
71
|
+
## Attribution
|
|
72
|
+
|
|
73
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
74
|
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
|
75
|
+
|
|
76
|
+
[homepage]: https://www.contributor-covenant.org
|
|
77
|
+
|
|
78
|
+
For answers to common questions about this code of conduct, see
|
|
79
|
+
https://www.contributor-covenant.org/faq
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Contributions are welcome and greatly appreciated!
|
|
4
|
+
Every little bit helps, and credit will always be given.
|
|
5
|
+
Environment Setup
|
|
6
|
+
|
|
7
|
+
## Development
|
|
8
|
+
|
|
9
|
+
Follow this basic process:
|
|
10
|
+
|
|
11
|
+
1. Fork and clone the repositor.
|
|
12
|
+
2. Create a new branch: `git checkout -b feature-or-bugfix-name`.
|
|
13
|
+
3. Edit the code.
|
|
14
|
+
4. If you added functionality or features, update the documentation accordingly.
|
|
15
|
+
|
|
16
|
+
If you are unsure about how to fix or ignore a warning, just let the continuous
|
|
17
|
+
integration fail, and we will help you during review.
|
|
18
|
+
|
|
19
|
+
Don't bother updating the changelog, we will take care of this.
|
|
20
|
+
|
|
21
|
+
## Pull requests guidelines
|
|
22
|
+
|
|
23
|
+
Link to any related issue in the Pull Request message.
|
|
24
|
+
|
|
25
|
+
During the review, we recommend using fixups:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# SHA is the SHA of the commit you want to fix
|
|
29
|
+
git commit --fixup=SHA
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Once all the changes are approved, you can squash your commits:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git rebase -i --autosquash main
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
And force-push:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git push -f
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If this seems all too complicated, you can push or force-push each new commit,
|
|
45
|
+
and we will squash them ourselves if needed, before merging.
|
|
46
|
+
|
|
47
|
+
## Style Guidelines
|
|
48
|
+
|
|
49
|
+
This package follows the [Google
|
|
50
|
+
Python Style Guide](https://google.github.io/styleguide/pyguide.html) with two
|
|
51
|
+
notable exceptions:
|
|
52
|
+
|
|
53
|
+
1. It always adds spaces around "=". This not only violates the Google guide, it violates [PEP8](https://peps.python.org/pep-0008/), the foundational Python style guide from which all other resources are derived. I defy this strong, long-standign norm because I find it more readable. My brain and eyes have trouble seeing two separate objects when an equal sign is in the middle. I imagine that I am not alone in this accessibility issue. Further, as PEP8 itself notes, required spaces around equal signs are becoming increasing common with type annotations becoming part of best practices (and, as a result, signatures to classes, functions, and methods regularly include spaces around the equal signs). I realize that this will seem alien to many coders, but it is far easier on my eyes.
|
|
54
|
+
2. I use some so-called "power features", primarily dunder methods, to make my interfaces easier to access and use. This is disfavored in the Google Python Style Guide because such code is often more difficult for others to read. To address that concern, I try to document and comment as to what the code is doing whenever I used any of the "power features" of Python.
|
fjc_idb-0.0.2/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Apache Software License 2.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Corey Rayburn Yung
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|