driven-pile 0.1.0__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.
Files changed (59) hide show
  1. driven_pile-0.1.0/.github/workflows/ci.yml +32 -0
  2. driven_pile-0.1.0/.github/workflows/docs.yml +103 -0
  3. driven_pile-0.1.0/.github/workflows/publish.yml +30 -0
  4. driven_pile-0.1.0/.gitignore +26 -0
  5. driven_pile-0.1.0/CLAUDE.md +51 -0
  6. driven_pile-0.1.0/LICENSE +674 -0
  7. driven_pile-0.1.0/PKG-INFO +79 -0
  8. driven_pile-0.1.0/README.md +57 -0
  9. driven_pile-0.1.0/docs/examples/data/B-20_fines.csv +107 -0
  10. driven_pile-0.1.0/docs/examples/data/B-20_log.csv +75 -0
  11. driven_pile-0.1.0/docs/examples/walkthrough.qmd +220 -0
  12. driven_pile-0.1.0/docs/great-docs.yml +862 -0
  13. driven_pile-0.1.0/docs/user_guide/installation.qmd +32 -0
  14. driven_pile-0.1.0/docs/user_guide/method.qmd +307 -0
  15. driven_pile-0.1.0/docs/user_guide/parameters.qmd +80 -0
  16. driven_pile-0.1.0/docs/user_guide/quickstart.qmd +166 -0
  17. driven_pile-0.1.0/llm/api_design.md +370 -0
  18. driven_pile-0.1.0/llm/no_paper_citation.md +24 -0
  19. driven_pile-0.1.0/llm/status.md +124 -0
  20. driven_pile-0.1.0/pyproject.toml +48 -0
  21. driven_pile-0.1.0/src/driven_pile/__init__.py +28 -0
  22. driven_pile-0.1.0/src/driven_pile/analysis.py +43 -0
  23. driven_pile-0.1.0/src/driven_pile/bearing.py +148 -0
  24. driven_pile-0.1.0/src/driven_pile/capacity.py +73 -0
  25. driven_pile-0.1.0/src/driven_pile/constants.py +24 -0
  26. driven_pile-0.1.0/src/driven_pile/formulas.py +61 -0
  27. driven_pile-0.1.0/src/driven_pile/inputs.py +373 -0
  28. driven_pile-0.1.0/src/driven_pile/liquefaction.py +208 -0
  29. driven_pile-0.1.0/src/driven_pile/march.py +289 -0
  30. driven_pile-0.1.0/src/driven_pile/montecarlo.py +108 -0
  31. driven_pile-0.1.0/src/driven_pile/options.py +123 -0
  32. driven_pile-0.1.0/src/driven_pile/plots.py +83 -0
  33. driven_pile-0.1.0/src/driven_pile/preprocess.py +219 -0
  34. driven_pile-0.1.0/src/driven_pile/results.py +262 -0
  35. driven_pile-0.1.0/src/driven_pile/shaft.py +166 -0
  36. driven_pile-0.1.0/src/driven_pile/spt.py +64 -0
  37. driven_pile-0.1.0/src/driven_pile/top_segment.py +42 -0
  38. driven_pile-0.1.0/tests/conftest.py +40 -0
  39. driven_pile-0.1.0/tests/fixtures/A-11.json +1 -0
  40. driven_pile-0.1.0/tests/fixtures/B-1.5.json +1 -0
  41. driven_pile-0.1.0/tests/fixtures/B-20.json +1 -0
  42. driven_pile-0.1.0/tests/fixtures/B-25.5.json +1 -0
  43. driven_pile-0.1.0/tests/fixtures/B-29.5.json +1 -0
  44. driven_pile-0.1.0/tests/fixtures/B-47.5.json +1 -0
  45. driven_pile-0.1.0/tests/fixtures/C-37.json +1 -0
  46. driven_pile-0.1.0/tests/fixtures/D-41.json +1 -0
  47. driven_pile-0.1.0/tests/fixtures/DD-15.json +1 -0
  48. driven_pile-0.1.0/tests/fixtures/DD-21.json +1 -0
  49. driven_pile-0.1.0/tests/fixtures/E-44.json +1 -0
  50. driven_pile-0.1.0/tests/fixtures/F-67.6.json +1 -0
  51. driven_pile-0.1.0/tests/fixtures/J-44.json +1 -0
  52. driven_pile-0.1.0/tests/fixtures/L-36.json +1 -0
  53. driven_pile-0.1.0/tests/fixtures/N-17.json +1 -0
  54. driven_pile-0.1.0/tests/fixtures/make_fixtures.py +87 -0
  55. driven_pile-0.1.0/tests/test_equations.py +98 -0
  56. driven_pile-0.1.0/tests/test_inputs.py +87 -0
  57. driven_pile-0.1.0/tests/test_pipeline.py +50 -0
  58. driven_pile-0.1.0/tests/test_regression.py +52 -0
  59. driven_pile-0.1.0/uv.lock +2171 -0
@@ -0,0 +1,32 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ["3.11", "3.12", "3.13"]
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: astral-sh/setup-uv@v5
17
+ with:
18
+ python-version: ${{ matrix.python-version }}
19
+ - run: uv sync --group dev
20
+ - run: uv run ruff check src tests
21
+ - run: uv run pytest -q -m "not slow"
22
+
23
+ slow:
24
+ if: github.event_name == 'pull_request'
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: astral-sh/setup-uv@v5
29
+ with:
30
+ python-version: "3.13"
31
+ - run: uv sync --group dev
32
+ - run: uv run pytest -q -m slow
@@ -0,0 +1,103 @@
1
+ name: CI Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ jobs:
10
+ build-docs:
11
+ name: "Build Docs"
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ with:
16
+ fetch-depth: 0 # Full history for accurate page timestamps
17
+
18
+ - uses: actions/setup-python@v6
19
+ with:
20
+ python-version: "3.11"
21
+
22
+ - name: Install package and dependencies
23
+ run: |
24
+ python -m pip install uv
25
+ uv sync --group docs
26
+
27
+ - name: Set up Quarto
28
+ uses: quarto-dev/quarto-actions/setup@v2
29
+
30
+ - name: Install STIX Two Text for the example figures
31
+ run: |
32
+ mkdir -p ~/.local/share/fonts
33
+ for style in Regular Italic Bold BoldItalic; do
34
+ curl -fsSL -o ~/.local/share/fonts/STIXTwoText-$style.otf \
35
+ https://raw.githubusercontent.com/stipub/stixfonts/v2.13/fonts/static_otf/STIXTwoText-$style.otf
36
+ done
37
+ fc-cache -f
38
+
39
+ - name: Build docs
40
+ run: uv run great-docs build
41
+
42
+ - name: Save docs artifact
43
+ uses: actions/upload-artifact@v7
44
+ with:
45
+ name: docs-html
46
+ path: docs/_site
47
+ include-hidden-files: true
48
+
49
+ - name: How to preview this build locally
50
+ if: github.event_name == 'pull_request'
51
+ run: uv run great-docs ci notice --run ${{ github.run_id }} --pr ${{ github.event.number }}
52
+
53
+ - name: Upload build timings
54
+ uses: actions/upload-artifact@v7
55
+ with:
56
+ name: build-timings
57
+ path: docs/_site/build-timings.json
58
+
59
+ publish-docs:
60
+ name: "Publish Docs"
61
+ runs-on: ubuntu-latest
62
+ needs: "build-docs"
63
+ if: github.ref == 'refs/heads/main'
64
+ permissions:
65
+ pages: write
66
+ id-token: write
67
+ environment:
68
+ name: github-pages
69
+ url: ${{ steps.deployment.outputs.page_url }}
70
+ steps:
71
+ - uses: actions/download-artifact@v7
72
+ with:
73
+ name: docs-html
74
+ path: docs/_site
75
+
76
+ - name: Upload Pages artifact
77
+ uses: actions/upload-pages-artifact@v5
78
+ with:
79
+ path: docs/_site
80
+ include-hidden-files: true
81
+
82
+ - name: Deploy to GitHub Pages
83
+ id: deployment
84
+ uses: actions/deploy-pages@v5
85
+
86
+ preview-docs:
87
+ name: "Preview Docs"
88
+ runs-on: ubuntu-latest
89
+ needs: "build-docs"
90
+ if: github.event_name == 'pull_request'
91
+ permissions:
92
+ pull-requests: write
93
+ steps:
94
+ # Post (and keep updated) a sticky PR comment with the local-preview
95
+ # command, pinned to this run so it reproduces the build under review.
96
+ # Runs the released great-docs via pipx (no install step needed); kept as
97
+ # its own minimal job so the docs build never holds a pull-requests:write
98
+ # token. continue-on-error so fork PRs (read-only token) don't fail the run.
99
+ - name: Post preview instructions to the PR
100
+ continue-on-error: true
101
+ run: pipx run great-docs ci pr-comment --run ${{ github.run_id }} --pr ${{ github.event.number }}
102
+ env:
103
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,30 @@
1
+ name: publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - uses: astral-sh/setup-uv@v5
13
+ - run: uv build
14
+ - uses: actions/upload-artifact@v4
15
+ with:
16
+ name: dist
17
+ path: dist/
18
+
19
+ publish:
20
+ needs: build
21
+ runs-on: ubuntu-latest
22
+ environment: pypi
23
+ permissions:
24
+ id-token: write
25
+ steps:
26
+ - uses: actions/download-artifact@v4
27
+ with:
28
+ name: dist
29
+ path: dist/
30
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,26 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ dist/
5
+ build/
6
+ *.egg-info/
7
+ .pytest_cache/
8
+ .ruff_cache/
9
+ .DS_Store
10
+
11
+ # Great Docs build directory (ephemeral, do not commit)
12
+ great-docs/
13
+
14
+ # Great Docs versioned-build artifacts
15
+ _great_docs_build/
16
+ .great-docs-build/
17
+ .great-docs-cache/
18
+ .great-docs/
19
+
20
+ # Great Docs build output
21
+ /docs/_quarto/
22
+ /docs/_site/
23
+ /docs/.cache/
24
+ /.great-docs-build/
25
+ /.great-docs/
26
+ /docs/_freeze/
@@ -0,0 +1,51 @@
1
+ # Working agreement for driven-pile
2
+
3
+ ## What this is
4
+
5
+ A pip-installable Python library that estimates the long-term capacity of a
6
+ driven pile from its driving log by tracking the pore pressure generated by
7
+ hammer blows. It was extracted from the research repository
8
+ `TCE_499_pile-driving` (branch clean-rebuild, tag `paper-freeze-2026-10-23`),
9
+ which stays the home of the data and the soil-classification work. Soil classification is out of scope here.
10
+
11
+ Read llm/no_paper_citation.md before writing any user-facing text,
12
+ llm/api_design.md before changing the public API, and llm/status.md for where
13
+ the work stands.
14
+
15
+ ## Rules
16
+
17
+ - Implement only the method as it stands. A model-form change needs a
18
+ published precedent, cited in the function's References section.
19
+ - Never cite Arnold (2027) or its equation numbers in the README, docs,
20
+ docstrings or package metadata (llm/no_paper_citation.md).
21
+ - Never use FHWA table setup factors; the method derives everything from the
22
+ log and the site inputs.
23
+ - Long-term capacity is always shaft plus the end-of-drive toe. Never add a
24
+ toe-setup variant.
25
+ - The deterministic top-segment friction angle is the lowest admissible value
26
+ of the sweep.
27
+ - Do not git commit or push unless Lorne asks. Leave changes in the working
28
+ tree and say what is uncommitted.
29
+ - Keep executing evident next steps; stop only for decisions that are Lorne's
30
+ (model-form choices, scope, anything irreversible) or when blocked.
31
+
32
+ ## Code conventions
33
+
34
+ - numpy docstring convention with Parameters, Returns, Notes and References;
35
+ equation-level functions cite the original published source.
36
+ - PEP 8, type hints on public signatures, dataclasses for records, no
37
+ module-level state, no file-system conventions inside the library.
38
+ - Comments describe what the code does. Design rationale and history go in
39
+ docs/, never in source files.
40
+ - Units: feet, kips, ksf, degrees throughout.
41
+ - Results are dataclasses of plain numpy arrays. No pandas dependency.
42
+ matplotlib is an optional extra used only by the plot helpers.
43
+ - Tests: pytest. `uv run pytest -q -m "not slow"` is the fast suite
44
+ (about 15 s); `-m slow` sweeps every benchmark pile's top band (about 2 min).
45
+ `uv run ruff check src tests` must pass.
46
+
47
+ ## Reporting
48
+
49
+ - Expand every acronym once per summary.
50
+ - Report results that weaken the method as plainly as results that support it.
51
+ - When verifying a change against the research code, show the comparison.