paddle 1.1.11__tar.gz → 1.1.14__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 (42) hide show
  1. {paddle-1.1.11 → paddle-1.1.14}/.bumpversion.cfg +2 -2
  2. paddle-1.1.11/.github/workflows/bump-and-tag.yaml → paddle-1.1.14/.github/workflows/cd.yml +43 -8
  3. {paddle-1.1.11 → paddle-1.1.14}/.gitignore +4 -0
  4. paddle-1.1.14/Makefile +61 -0
  5. {paddle-1.1.11 → paddle-1.1.14}/PKG-INFO +6 -1
  6. {paddle-1.1.11 → paddle-1.1.14}/README.md +5 -0
  7. {paddle-1.1.11 → paddle-1.1.14}/docker/entrypoint.sh +0 -10
  8. {paddle-1.1.11 → paddle-1.1.14}/docker-compose.override.yaml.tmp +12 -2
  9. {paddle-1.1.11 → paddle-1.1.14}/docker-compose.yaml +6 -2
  10. paddle-1.1.14/docs/_static/temp_paddle.jpg +0 -0
  11. paddle-1.1.14/docs/content/notebooks/Tutorial-1-SaturnAdiabat.ipynb +19 -0
  12. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/robert.py +1 -3
  13. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/robert.yaml +9 -2
  14. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/shock.py +1 -1
  15. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/straka.py +1 -3
  16. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/straka.yaml +7 -0
  17. {paddle-1.1.11 → paddle-1.1.14}/paddle/__init__.py +1 -1
  18. {paddle-1.1.11 → paddle-1.1.14}/pyproject.toml +1 -1
  19. paddle-1.1.11/.github/workflows/cd.yml +0 -55
  20. paddle-1.1.11/Makefile +0 -26
  21. {paddle-1.1.11 → paddle-1.1.14}/.github/workflows/ci.yml +0 -0
  22. {paddle-1.1.11 → paddle-1.1.14}/.pre-commit-config.yaml +0 -0
  23. {paddle-1.1.11 → paddle-1.1.14}/LICENSE +0 -0
  24. {paddle-1.1.11 → paddle-1.1.14}/docker/.dockerignore +0 -0
  25. {paddle-1.1.11 → paddle-1.1.14}/docker/Dockerfile +0 -0
  26. {paddle-1.1.11 → paddle-1.1.14}/docker/Dockerfile.cuda +0 -0
  27. {paddle-1.1.11 → paddle-1.1.14}/docker/nvim/init.lua +0 -0
  28. {paddle-1.1.11 → paddle-1.1.14}/docker/nvim/lua/plugins.lua +0 -0
  29. {paddle-1.1.11 → paddle-1.1.14}/docker/requirements.txt +0 -0
  30. {paddle-1.1.11 → paddle-1.1.14}/docker/scripts/git-done +0 -0
  31. {paddle-1.1.11 → paddle-1.1.14}/docker/scripts/git-send +0 -0
  32. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/.gitignore +0 -0
  33. {paddle-1.1.11/example_py_scripts/data → paddle-1.1.14/example_py_scripts}/saturn1d.yaml +0 -0
  34. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/shock.yaml +0 -0
  35. {paddle-1.1.11 → paddle-1.1.14}/example_py_scripts/test_saturn_adiabat.py +0 -0
  36. {paddle-1.1.11 → paddle-1.1.14}/paddle/crm.py +0 -0
  37. {paddle-1.1.11 → paddle-1.1.14}/paddle/evolve_kinetics.py +0 -0
  38. {paddle-1.1.11 → paddle-1.1.14}/paddle/find_init_params.py +0 -0
  39. {paddle-1.1.11 → paddle-1.1.14}/paddle/nc2pt.py +0 -0
  40. {paddle-1.1.11 → paddle-1.1.14}/paddle/pt2nc.py +0 -0
  41. {paddle-1.1.11 → paddle-1.1.14}/paddle/setup_profile.py +0 -0
  42. {paddle-1.1.11 → paddle-1.1.14}/paddle/write_profile.py +0 -0
@@ -1,9 +1,9 @@
1
1
  [bumpversion]
2
- current_version = 1.1.11
2
+ current_version = 1.1.14
3
3
  commit = True
4
4
  tag = True
5
5
 
6
- [bumpversion:file:src/paddle/__init__.py]
6
+ [bumpversion:file:paddle/__init__.py]
7
7
  search = __version__ = "{current_version}"
8
8
  replace = __version__ = "{new_version}"
9
9
 
@@ -1,4 +1,4 @@
1
- name: Bump Version and Tag
1
+ name: Release to PyPI
2
2
 
3
3
  on:
4
4
  pull_request:
@@ -9,41 +9,74 @@ env:
9
9
  PYTHON_VERSION: "3.11"
10
10
 
11
11
  jobs:
12
- bump-version:
12
+ release:
13
+ if: github.event.pull_request.merged == true
13
14
  runs-on: ubuntu-latest
14
15
  permissions:
15
- contents: write
16
- pull-requests: write
16
+ contents: write # push commits/tags, create release
17
+ pull-requests: write # comment on PR
18
+ id-token: write # needed by PyPI OIDC if you switch to OIDC auth
17
19
 
18
20
  steps:
19
21
  - name: Checkout repository
20
22
  uses: actions/checkout@v4
21
23
  with:
22
- fetch-depth: 0
24
+ fetch-depth: 0 # need full history for bumpversion/tags
23
25
 
24
26
  - name: Set up Python
25
27
  uses: actions/setup-python@v5
26
28
  with:
27
29
  python-version: ${{ env.PYTHON_VERSION }}
30
+ cache: pip
28
31
 
29
32
  - name: Configure Git
30
33
  run: |
31
34
  git config user.name "github-actions[bot]"
32
35
  git config user.email "github-actions[bot]@users.noreply.github.com"
33
36
 
34
- - name: Bump version and push tag
37
+ # 🔹 Bump version & create tag (same as before)
38
+ - name: Bump version and create tag
35
39
  id: bump_version
36
40
  uses: jasonamyers/github-bumpversion-action@v1.0.5
37
41
  env:
38
42
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39
43
 
44
+ # 🔹 Push the bump commit and tag back to main
40
45
  - name: Push changes
41
46
  uses: ad-m/github-push-action@master
42
47
  with:
43
48
  github_token: ${{ secrets.GITHUB_TOKEN }}
44
- branch: ${{ github.ref }}
49
+ branch: ${{ github.base_ref }}
45
50
  tags: true
46
51
 
52
+ # 🔹 Build distribution artifacts
53
+ - name: Build sdist and wheel
54
+ run: |
55
+ python -m pip install --upgrade pip
56
+ pip install build
57
+ python -m build
58
+
59
+ - name: Upload artifacts
60
+ uses: actions/upload-artifact@v4
61
+ with:
62
+ name: dist
63
+ path: dist/*
64
+
65
+ # 🔹 Publish to PyPI
66
+ - name: Download wheels
67
+ uses: actions/download-artifact@v4
68
+ with:
69
+ name: dist
70
+ path: dist
71
+
72
+ - name: Publish to PyPI
73
+ uses: pypa/gh-action-pypi-publish@release/v1
74
+ with:
75
+ user: __token__
76
+ password: ${{ secrets.PYPI_API_TOKEN }}
77
+ verbose: true
78
+
79
+ # 🔹 Generate Release Notes
47
80
  - name: Generate Release Notes
48
81
  uses: octokit/request-action@v2.x
49
82
  id: get_release_notes
@@ -53,6 +86,7 @@ jobs:
53
86
  env:
54
87
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55
88
 
89
+ # 🔹 Create GitHub Release
56
90
  - name: Create GitHub release
57
91
  id: create_release
58
92
  uses: actions/create-release@v1.1.4
@@ -65,6 +99,7 @@ jobs:
65
99
  prerelease: false
66
100
  body: ${{ fromJson(steps.get_release_notes.outputs.data).body }}
67
101
 
102
+ # 🔹 Comment on the PR with release notes
68
103
  - name: Post comment on PR with release notes
69
104
  uses: actions/github-script@v7
70
105
  with:
@@ -74,5 +109,5 @@ jobs:
74
109
  issue_number: context.payload.pull_request.number,
75
110
  owner: context.repo.owner,
76
111
  repo: context.repo.repo,
77
- body: `🎉 Released v${{ steps.bump_version.outputs.new_ver }}!\n\n${notes}`
112
+ body: `🎉 Released v${{ steps.bump_version.outputs.new_ver }} to PyPI!\n\n${notes}`
78
113
  })
@@ -214,3 +214,7 @@ docker-compose.override.yaml
214
214
 
215
215
  # restart outputs
216
216
  *.restart
217
+
218
+ # python environment
219
+ .env
220
+ .pyenv
paddle-1.1.14/Makefile ADDED
@@ -0,0 +1,61 @@
1
+ ENV_FILE := .env
2
+ UID := $$(id -u)
3
+ GID := $$(id -g)
4
+ GITCONFIG := $${HOME}/.gitconfig
5
+ GITCREDENTIALS := $${HOME}/.git-credentials
6
+
7
+ .PHONY: help env up down ps start build
8
+
9
+ # Show help for each target
10
+ help: ## Show this help message
11
+ @echo "Available commands:"
12
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
13
+ awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-12s\033[0m %s\n", $$1, $$2}'
14
+
15
+ env: ## Generate the .env file with git configs first, then user info
16
+ @# Check if either variable is missing
17
+ @if ! grep -q '^GITCONFIG=' $(ENV_FILE) 2>/dev/null || \
18
+ ! grep -q '^GITCREDENTIALS=' $(ENV_FILE) 2>/dev/null; then \
19
+ if [ -f "$${HOME}/.gitconfig" ]; then \
20
+ echo "GITCONFIG=$${HOME}/.gitconfig" > $(ENV_FILE); \
21
+ else \
22
+ touch "$${HOME}/.gitconfig"; \
23
+ echo "GITCONFIG=$${HOME}/.gitconfig" > $(ENV_FILE); \
24
+ fi; \
25
+ if [ -f "$${HOME}/.git-credentials" ]; then \
26
+ echo "GITCREDENTIALS=$${HOME}/.git-credentials" >> $(ENV_FILE); \
27
+ else \
28
+ touch "$${HOME}/.git-credentials"; \
29
+ echo "[credential]" >> "$${HOME}/.gitconfig"; \
30
+ echo " helper = store" >> "$${HOME}/.gitconfig"; \
31
+ echo "GITCREDENTIALS=$${HOME}/.git-credentials" >> $(ENV_FILE); \
32
+ fi; \
33
+ echo "USER=$$(id -un)" >> $(ENV_FILE); \
34
+ echo "USER_UID=$$(id -u)" >> $(ENV_FILE); \
35
+ echo "USER_GID=$$(id -g)" >> $(ENV_FILE); \
36
+ echo "Created $(ENV_FILE):"; cat $(ENV_FILE); \
37
+ fi
38
+
39
+ up: env ## Start docker containers in the background
40
+ @docker compose up -d
41
+ @docker compose exec dev bash -c '\
42
+ USER_HOME=$$(eval echo ~$$USERNAME); \
43
+ if [ -f /etc/git-credentials ] && [ ! -f $$USER_HOME/.git-credentials ]; then \
44
+ cp /etc/git-credentials $$USER_HOME/.git-credentials; \
45
+ chown $${USER_UID}:$${USER_GID} $$USER_HOME/.git-credentials; \
46
+ git config --global credential.helper store; \
47
+ fi \
48
+ '
49
+
50
+ down: env ## Stop and remove docker containers
51
+ @docker compose down
52
+
53
+ ps: env ## Show container status
54
+ @docker compose ps
55
+
56
+ start: env ## Open a bash shell inside the 'dev' container as the host user, exit without error
57
+ @docker compose exec --user $(UID):$(GID) dev \
58
+ bash -c 'git config --global --add safe.directory /paddle; exec bash'
59
+
60
+ build: env ## Build (or rebuild) the 'dev' container and start it
61
+ @docker compose up -d --build dev
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paddle
3
- Version: 1.1.11
3
+ Version: 1.1.14
4
4
  Summary: Python Atmospheric Dynamics: Discovery and Learning about Exoplanets. An open-source, user-friendly python frontend of canoe
5
5
  Project-URL: Homepage, https://github.com/elijah-mullens/paddle
6
6
  Project-URL: Repository, https://github.com/elijah-mullens/paddle
@@ -93,6 +93,11 @@ https://github.com/elijah-mullens/paddle
93
93
  git config credential.helper 'cache --timeout=86400'
94
94
  ```
95
95
 
96
+ ### Create a python virtual environment
97
+ ```bash
98
+ python -m venv .pyenv
99
+ ```
100
+
96
101
  ### Install paddle package
97
102
 
98
103
  ### Install pre-commit hook
@@ -61,6 +61,11 @@ https://github.com/elijah-mullens/paddle
61
61
  git config credential.helper 'cache --timeout=86400'
62
62
  ```
63
63
 
64
+ ### Create a python virtual environment
65
+ ```bash
66
+ python -m venv .pyenv
67
+ ```
68
+
64
69
  ### Install paddle package
65
70
 
66
71
  ### Install pre-commit hook
@@ -34,16 +34,6 @@ done
34
34
  echo 'export EDITOR=nvim; export VISUAL=nvim' >> "${HOME_DIR}/.bashrc" || true
35
35
  chown "${USER_UID}:${USER_GID}" "${HOME_DIR}/.bashrc" || true
36
36
 
37
- # Configure git
38
- if [ -f /host/.gitconfig ] && [ ! -e "${HOME_DIR}/.gitconfig" ]; then
39
- ln -s /host/.gitconfig "${HOME_DIR}/.gitconfig"
40
- chown -h "${USER_UID}:${USER_GID}" "${HOME_DIR}/.gitconfig" || true
41
-
42
- #cp /host/.gitconfig "${HOME_DIR}/.gitconfig"
43
- #chown "${USER_UID}:${USER_GID}" "${HOME_DIR}/.gitconfig"
44
- #chmod 600 "${HOME_DIR}/.gitconfig"
45
- fi
46
-
47
37
  # Drop privileges (use tini/gosu if installed; otherwise su-exec/ runuser)
48
38
  if command -v gosu >/dev/null 2>&1; then
49
39
  exec gosu "${USER_UID}:${USER_GID}" "$@"
@@ -1,12 +1,22 @@
1
1
  services:
2
2
  dev:
3
+ build:
4
+ dockerfile: docker/Dockerfile.cuda
5
+ args:
6
+ CUDA_VER: "12.9.1"
7
+ deploy:
8
+ resources:
9
+ reservations:
10
+ devices:
11
+ # Activate this if your system supports GPU
12
+ - capabilities: [gpu]
3
13
  volumes:
4
14
  # This maps your physical locations to locations in docker
5
15
  # (lhs:rhs, lhs = workspace on physical machine : rhs = workspace on virtual machine)
6
16
  # Here we set up two directorys: your docker workspace directory that stores paddle
7
- # (all py scripts and notebooks)
17
+ # (all py scripts and notebooks)
8
18
  # And your data directory, that stores large data products ('results')
9
- # While this data directory won't always be used
19
+ # While this data directory won't always be used
10
20
  # (you can optionally have smaller outputs stored locally in the workspace directory)
11
21
  # It is useful for very large data products, like those of gcm or mcmc scripts.
12
22
  - path_to_physical_directory/paddle_docker_workspace:/paddle_docker_workspace
@@ -11,8 +11,12 @@ services:
11
11
  - USERNAME=${USER}
12
12
  - USER_UID=${USER_UID}
13
13
  - USER_GID=${USER_GID}
14
- working_dir: /workspace
14
+ volumes:
15
+ - .:/paddle
16
+ - ${GITCONFIG}:/etc/gitconfig
17
+ - ${GITCREDENTIALS}:/etc/git-credentials
18
+ working_dir: /paddle
15
19
  tty: true
16
20
  stdin_open: true
17
21
  ports:
18
- - "8888:8888"
22
+ - "8888:8888"
@@ -0,0 +1,19 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "id": "17fa4485",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": []
10
+ }
11
+ ],
12
+ "metadata": {
13
+ "language_info": {
14
+ "name": "python"
15
+ }
16
+ },
17
+ "nbformat": 4,
18
+ "nbformat_minor": 5
19
+ }
@@ -73,13 +73,12 @@ w[kIDN] = w[kIPR] / (Rd * temp)
73
73
 
74
74
  block_vars = {}
75
75
  block_vars["hydro_w"] = w
76
- block_vars = block.initialize(block_vars)
76
+ block_vars, current_time = block.initialize(block_vars)
77
77
 
78
78
  block.set_user_output_func(call_user_output)
79
79
 
80
80
  # integration
81
81
  start_time = time.time()
82
- current_time = 0.0
83
82
  block.make_outputs(block_vars, current_time)
84
83
 
85
84
  while not block.intg.stop(block.inc_cycle(), current_time):
@@ -99,4 +98,3 @@ while not block.intg.stop(block.inc_cycle(), current_time):
99
98
  block.make_outputs(block_vars, current_time)
100
99
 
101
100
  block.finalize(block_vars, current_time)
102
- print("elapsed time = ", time.time() - start_time)
@@ -12,6 +12,13 @@ geometry:
12
12
  bounds: {x1min: 0., x1max: 1.5e3, x2min: 0., x2max: 1.e3, x3min: -0.5, x3max: 0.5}
13
13
  cells: {nx1: 300, nx2: 200, nx3: 1, nghost: 3}
14
14
 
15
+ distribute:
16
+ backend: gloo
17
+ layout: slab
18
+ nb2: 4
19
+ nb3: 1
20
+ verbose: false
21
+
15
22
  dynamics:
16
23
  equation-of-state:
17
24
  type: ideal-gas
@@ -24,8 +31,8 @@ dynamics:
24
31
  pressure-margin: 1.e-6
25
32
 
26
33
  reconstruct:
27
- vertical: {type: weno5, scale: false, shock: true}
28
- horizontal: {type: weno5, scale: false, shock: true}
34
+ vertical: {type: weno5, scale: false, shock: false}
35
+ horizontal: {type: weno5, scale: false, shock: false}
29
36
 
30
37
  riemann-solver:
31
38
  type: lmars
@@ -42,7 +42,7 @@ solid = torch.where(r1 < 0.1, 1, 0).to(torch.bool)
42
42
  block_vars = {}
43
43
  block_vars["hydro_w"] = w
44
44
  block_vars["solid"] = solid
45
- block_vars = block.initialize(block_vars)
45
+ block_vars, current_time = block.initialize(block_vars)
46
46
 
47
47
  # integration
48
48
  current_time = 0.0
@@ -72,13 +72,12 @@ w[kIDN] = w[kIPR] / (Rd * temp)
72
72
 
73
73
  block_vars = {}
74
74
  block_vars["hydro_w"] = w
75
- block_vars = block.initialize(block_vars)
75
+ block_vars, current_time = block.initialize(block_vars)
76
76
 
77
77
  block.set_user_output_func(call_user_output)
78
78
 
79
79
  # integration
80
80
  start_time = time.time()
81
- current_time = 0.0
82
81
  block.make_outputs(block_vars, current_time)
83
82
 
84
83
  while not block.intg.stop(block.inc_cycle(), current_time):
@@ -98,4 +97,3 @@ while not block.intg.stop(block.inc_cycle(), current_time):
98
97
  block.make_outputs(block_vars, current_time)
99
98
 
100
99
  block.finalize(block_vars, current_time)
101
- print("elapsed time = ", time.time() - start_time)
@@ -12,6 +12,13 @@ geometry:
12
12
  bounds: {x1min: 0., x1max: 6.4e3, x2min: 0., x2max: 25.6e3, x3min: 0., x3max: 25.6e3}
13
13
  cells: {nx1: 64, nx2: 256, nx3: 1, nghost: 3}
14
14
 
15
+ distribute:
16
+ backend: gloo
17
+ layout: slab
18
+ nb2: 1
19
+ nb3: 1
20
+ verbose: false
21
+
15
22
  dynamics:
16
23
  equation-of-state:
17
24
  type: ideal-gas
@@ -4,4 +4,4 @@ from .find_init_params import find_init_params
4
4
  from .evolve_kinetics import evolve_kinetics
5
5
 
6
6
  __all__ = ["setup_profile", "write_profile", "find_init_params", "evolve_kinetics"]
7
- __version__ = "1.1.11"
7
+ __version__ = "1.1.14"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "paddle"
7
- version = "1.1.11"
7
+ version = "1.1.14"
8
8
  description = "Python Atmospheric Dynamics: Discovery and Learning about Exoplanets. An open-source, user-friendly python frontend of canoe"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,55 +0,0 @@
1
- name: Deploy to PyPI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- tags: [v*]
7
-
8
- jobs:
9
- build:
10
- name: Build distribution artifacts
11
- runs-on: ubuntu-latest
12
- steps:
13
- - name: Checkout code
14
- uses: actions/checkout@v4
15
-
16
- - name: Setup Host Python
17
- uses: actions/setup-python@v5
18
- with:
19
- python-version: "3.11"
20
- cache: pip
21
-
22
- - name: Install build backend
23
- run: |
24
- python -m pip install --upgrade pip
25
- pip install build
26
-
27
- - name: Build sdist and wheel
28
- run: python -m build
29
-
30
- - name: Upload artifacts
31
- uses: actions/upload-artifact@v4
32
- with:
33
- name: dist
34
- path: dist/*
35
-
36
- publish-pypi:
37
- name: Publish to PyPI
38
- needs: build
39
- runs-on: ubuntu-latest
40
- permissions:
41
- id-token: write
42
- contents: read
43
- steps:
44
- - name: Download wheels
45
- uses: actions/download-artifact@v4
46
- with:
47
- name: dist
48
- path: dist
49
-
50
- - name: Publish to PyPI
51
- uses: pypa/gh-action-pypi-publish@release/v1
52
- with:
53
- user: __token__
54
- password: ${{ secrets.PYPI_API_TOKEN }}
55
- verbose: true
paddle-1.1.11/Makefile DELETED
@@ -1,26 +0,0 @@
1
- ENV_FILE := .env
2
- UID := $$(id -u)
3
- GID := $$(id -g)
4
-
5
- .PHONY: env up down build
6
-
7
- env:
8
- @echo "USER=$$(id -un)" > $(ENV_FILE)
9
- @echo "USER_UID=$$(id -u)" >> $(ENV_FILE)
10
- @echo "USER_GID=$$(id -g)" >> $(ENV_FILE)
11
- @echo "Wrote $(ENV_FILE):"; cat $(ENV_FILE)
12
-
13
- up: env
14
- @docker compose up -d
15
-
16
- down:
17
- @docker compose down
18
-
19
- ps:
20
- @docker compose ps
21
-
22
- start:
23
- @docker compose exec --user $(UID):$(GID) dev bash
24
-
25
- build: env
26
- @docker compose up -d --build dev
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes