autora-gui 1.1.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.
Files changed (131) hide show
  1. autora_gui-1.1.2/.coveragerc +9 -0
  2. autora_gui-1.1.2/.github/dependabot.yml +14 -0
  3. autora_gui-1.1.2/.github/workflows/ci.yml +172 -0
  4. autora_gui-1.1.2/.github/workflows/deploy-pages.yml +151 -0
  5. autora_gui-1.1.2/.github/workflows/dist.yml +79 -0
  6. autora_gui-1.1.2/.github/workflows/security.yml +33 -0
  7. autora_gui-1.1.2/.gitignore +185 -0
  8. autora_gui-1.1.2/.readthedocs.yaml +29 -0
  9. autora_gui-1.1.2/.zenodo.json +23 -0
  10. autora_gui-1.1.2/CITATION.cff +20 -0
  11. autora_gui-1.1.2/CODEOWNERS +1 -0
  12. autora_gui-1.1.2/CODE_OF_CONDUCT.md +92 -0
  13. autora_gui-1.1.2/CONTRIBUTING.md +105 -0
  14. autora_gui-1.1.2/Dockerfile +11 -0
  15. autora_gui-1.1.2/LICENSE +28 -0
  16. autora_gui-1.1.2/PKG-INFO +276 -0
  17. autora_gui-1.1.2/README.md +219 -0
  18. autora_gui-1.1.2/SECURITY.md +34 -0
  19. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/firebase_prolific_runner.json +170 -0
  20. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/firebase_runner.json +82 -0
  21. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_abstr_equation_experiment.json +104 -0
  22. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_abstr_lmm_experiment.json +90 -0
  23. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_econ_expected_value_theory.json +164 -0
  24. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_econ_prospect_theory.json +212 -0
  25. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_neuro_task_switching.json +155 -0
  26. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_psychol_exp_learning.json +152 -0
  27. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_psychol_luce_choice_ratio.json +140 -0
  28. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_psychol_q_learning.json +140 -0
  29. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_psychop_stevens_power_law.json +112 -0
  30. autora_gui-1.1.2/autora_gui/JSON/components/experiment_runners/synth_psychop_weber_fechner_law.json +116 -0
  31. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/bandit_random_pooler.json +103 -0
  32. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/falsification_pooler.json +176 -0
  33. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/falsification_sampler.json +138 -0
  34. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/grid_pooler.json +37 -0
  35. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/latin_hypercube_pooler.json +62 -0
  36. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/latin_hypercube_sampler.json +90 -0
  37. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/leverage_sampler.json +118 -0
  38. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/mixture_sampler.json +94 -0
  39. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/model_disagreement_sampler.json +66 -0
  40. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/nearest_values_sampler.json +66 -0
  41. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/novelty_sampler.json +103 -0
  42. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/novelty_score_sampler.json +103 -0
  43. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/prediction_filter.json +66 -0
  44. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/random_pooler.json +74 -0
  45. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/random_sampler.json +74 -0
  46. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/summed_inequality_sampler.json +100 -0
  47. autora_gui-1.1.2/autora_gui/JSON/components/experimentalists/uncertainty_sampler.json +82 -0
  48. autora_gui-1.1.2/autora_gui/JSON/components/theorists/bms_regressor.json +76 -0
  49. autora_gui-1.1.2/autora_gui/JSON/components/theorists/bsr_regressor.json +148 -0
  50. autora_gui-1.1.2/autora_gui/JSON/components/theorists/darts_regressor.json +340 -0
  51. autora_gui-1.1.2/autora_gui/JSON/schemas/protocol_model.json +345 -0
  52. autora_gui-1.1.2/autora_gui/JSON/schemas/workflow_model.json +534 -0
  53. autora_gui-1.1.2/autora_gui/__init__.py +6 -0
  54. autora_gui-1.1.2/autora_gui/_version.py +24 -0
  55. autora_gui-1.1.2/autora_gui/data_model.py +226 -0
  56. autora_gui-1.1.2/autora_gui/react_app/README.md +128 -0
  57. autora_gui-1.1.2/autora_gui/react_app/__init__.py +1 -0
  58. autora_gui-1.1.2/autora_gui/react_app/build_standalone.py +162 -0
  59. autora_gui-1.1.2/autora_gui/react_app/index.html +12 -0
  60. autora_gui-1.1.2/autora_gui/react_app/jsdoc.json +17 -0
  61. autora_gui-1.1.2/autora_gui/react_app/package-lock.json +4393 -0
  62. autora_gui-1.1.2/autora_gui/react_app/package.json +35 -0
  63. autora_gui-1.1.2/autora_gui/react_app/server.py +209 -0
  64. autora_gui-1.1.2/autora_gui/react_app/src/App.css +38 -0
  65. autora_gui-1.1.2/autora_gui/react_app/src/App.jsx +94 -0
  66. autora_gui-1.1.2/autora_gui/react_app/src/components/Canvas/Canvas.css +88 -0
  67. autora_gui-1.1.2/autora_gui/react_app/src/components/Canvas/Canvas.jsx +309 -0
  68. autora_gui-1.1.2/autora_gui/react_app/src/components/Canvas/Connection.jsx +808 -0
  69. autora_gui-1.1.2/autora_gui/react_app/src/components/ComponentPalette/ComponentPalette.css +157 -0
  70. autora_gui-1.1.2/autora_gui/react_app/src/components/ComponentPalette/ComponentPalette.jsx +207 -0
  71. autora_gui-1.1.2/autora_gui/react_app/src/components/Node/Node.css +397 -0
  72. autora_gui-1.1.2/autora_gui/react_app/src/components/Node/Node.jsx +415 -0
  73. autora_gui-1.1.2/autora_gui/react_app/src/components/PropertiesPanel/PropertiesPanel.css +269 -0
  74. autora_gui-1.1.2/autora_gui/react_app/src/components/PropertiesPanel/PropertiesPanel.jsx +451 -0
  75. autora_gui-1.1.2/autora_gui/react_app/src/components/Toolbar/Toolbar.css +154 -0
  76. autora_gui-1.1.2/autora_gui/react_app/src/components/Toolbar/Toolbar.jsx +351 -0
  77. autora_gui-1.1.2/autora_gui/react_app/src/context/WorkflowContext.jsx +408 -0
  78. autora_gui-1.1.2/autora_gui/react_app/src/context/WorkflowContext.test.jsx +1090 -0
  79. autora_gui-1.1.2/autora_gui/react_app/src/data/components.js +3796 -0
  80. autora_gui-1.1.2/autora_gui/react_app/src/index.css +55 -0
  81. autora_gui-1.1.2/autora_gui/react_app/src/main.jsx +13 -0
  82. autora_gui-1.1.2/autora_gui/react_app/src/test/setup.js +2 -0
  83. autora_gui-1.1.2/autora_gui/react_app/src/utils/geometry.js +62 -0
  84. autora_gui-1.1.2/autora_gui/react_app/src/utils/geometry.test.js +81 -0
  85. autora_gui-1.1.2/autora_gui/react_app/src/utils/notebookGenerator.js +199 -0
  86. autora_gui-1.1.2/autora_gui/react_app/src/utils/notebookGenerator.test.js +172 -0
  87. autora_gui-1.1.2/autora_gui/react_app/src/utils/pythonGenerator.js +597 -0
  88. autora_gui-1.1.2/autora_gui/react_app/src/utils/pythonGenerator.test.js +367 -0
  89. autora_gui-1.1.2/autora_gui/react_app/src/utils/serialization.js +195 -0
  90. autora_gui-1.1.2/autora_gui/react_app/src/utils/serialization.test.js +225 -0
  91. autora_gui-1.1.2/autora_gui/react_app/tests/__init__.py +1 -0
  92. autora_gui-1.1.2/autora_gui/react_app/tests/test_build_standalone.py +391 -0
  93. autora_gui-1.1.2/autora_gui/react_app/tests/test_server.py +181 -0
  94. autora_gui-1.1.2/autora_gui/react_app/vite.config.js +43 -0
  95. autora_gui-1.1.2/autora_gui/tests/__init__.py +1 -0
  96. autora_gui-1.1.2/autora_gui/tests/test_data_model.py +752 -0
  97. autora_gui-1.1.2/autora_gui/tests/test_util.py +31 -0
  98. autora_gui-1.1.2/autora_gui/util.py +13 -0
  99. autora_gui-1.1.2/autora_gui/workflow_samples/workflow.ipynb +262 -0
  100. autora_gui-1.1.2/autora_gui/workflow_samples/workflow.json +252 -0
  101. autora_gui-1.1.2/autora_gui/workflow_samples/workflow.py +75 -0
  102. autora_gui-1.1.2/autora_gui/workflow_samples/workflow_gt.py +65 -0
  103. autora_gui-1.1.2/autora_gui.egg-info/PKG-INFO +276 -0
  104. autora_gui-1.1.2/autora_gui.egg-info/SOURCES.txt +129 -0
  105. autora_gui-1.1.2/autora_gui.egg-info/dependency_links.txt +1 -0
  106. autora_gui-1.1.2/autora_gui.egg-info/not-zip-safe +1 -0
  107. autora_gui-1.1.2/autora_gui.egg-info/requires.txt +18 -0
  108. autora_gui-1.1.2/autora_gui.egg-info/scm_file_list.json +124 -0
  109. autora_gui-1.1.2/autora_gui.egg-info/scm_version.json +8 -0
  110. autora_gui-1.1.2/autora_gui.egg-info/top_level.txt +1 -0
  111. autora_gui-1.1.2/codecov.yml +19 -0
  112. autora_gui-1.1.2/docs/Makefile +23 -0
  113. autora_gui-1.1.2/docs/_static/SSEC_logo_horiz_blue_1152x263.png +0 -0
  114. autora_gui-1.1.2/docs/_static/SSEC_logo_vert_white_lg_1184x661.png +0 -0
  115. autora_gui-1.1.2/docs/_static/custom.css +7 -0
  116. autora_gui-1.1.2/docs/make.bat +35 -0
  117. autora_gui-1.1.2/docs/source/api.rst +34 -0
  118. autora_gui-1.1.2/docs/source/conf.py +57 -0
  119. autora_gui-1.1.2/docs/source/index.rst +27 -0
  120. autora_gui-1.1.2/docs/source/usage.rst +9 -0
  121. autora_gui-1.1.2/githooks/pre-push +15 -0
  122. autora_gui-1.1.2/index.html +42 -0
  123. autora_gui-1.1.2/pyproject.toml +124 -0
  124. autora_gui-1.1.2/requirements/all.txt +4 -0
  125. autora_gui-1.1.2/requirements/build.txt +3 -0
  126. autora_gui-1.1.2/requirements/dev.txt +2 -0
  127. autora_gui-1.1.2/requirements/docs.txt +8 -0
  128. autora_gui-1.1.2/requirements/prd.txt +3 -0
  129. autora_gui-1.1.2/requirements/test.txt +6 -0
  130. autora_gui-1.1.2/setup.cfg +4 -0
  131. autora_gui-1.1.2/tox.ini +65 -0
@@ -0,0 +1,9 @@
1
+ [run]
2
+ omit =
3
+ **/_*.py
4
+ setup.py
5
+ */tests/*
6
+ _version.py
7
+ [report]
8
+ exclude_lines =
9
+ @abstractmethod
@@ -0,0 +1,14 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "monthly"
7
+ groups:
8
+ all-minor-and-patch-dependency-updates:
9
+ applies-to: version-updates
10
+ patterns:
11
+ - "*"
12
+ update-types:
13
+ - "minor"
14
+ - "patch"
@@ -0,0 +1,172 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - '*'
9
+ pull_request:
10
+ branches:
11
+ - '*'
12
+
13
+ env:
14
+ REGISTRY: ghcr.io
15
+ IMAGE_NAME: ${{ github.repository }}
16
+
17
+ jobs:
18
+ lint:
19
+ name: lint with ruff with Python ${{ matrix.python-version }}
20
+ runs-on: ubuntu-latest
21
+ strategy:
22
+ matrix:
23
+ python-version: [3.11]
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - name: Set up Python ${{ matrix.python-version }}
27
+ uses: actions/setup-python@v4
28
+ with:
29
+ python-version: ${{ matrix.python-version }}
30
+ cache: "pip"
31
+ - name: Install dependencies
32
+ run: |
33
+ python3 -m pip install --upgrade pip
34
+ pip3 install -r requirements/dev.txt
35
+ shell: bash
36
+ - name: Lint
37
+ run: tox -e check-style
38
+ shell: bash
39
+
40
+ test:
41
+ name: pytests on Python ${{ matrix.python-version }} and ${{ matrix.os }}
42
+ runs-on: ${{ matrix.os }}
43
+ strategy:
44
+ matrix:
45
+ python-version: [3.11]
46
+ os: [ubuntu-latest, macos-latest]
47
+ env:
48
+ OS: ${{ matrix.os }}
49
+ PYTHON: ${{ matrix.python-version }}
50
+ steps:
51
+ - uses: actions/checkout@v4
52
+ with:
53
+ lfs: true
54
+ - uses: actions/setup-python@v4
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+ cache: "pip"
58
+ - name: Install dependencies
59
+ run: |
60
+ python3 -m pip install --upgrade pip
61
+ pip3 install -r requirements/dev.txt
62
+ shell: bash
63
+ - name: pip install package
64
+ run: pip install .
65
+ - name: Test with tox (pytest)
66
+ run: tox -e test
67
+ - name: Archive coverage report
68
+ uses: actions/upload-artifact@v4.4.3
69
+ with:
70
+ name: code-coverage-report-python${{ matrix.python-version }}-${{ matrix.os }}
71
+ path: coverage.xml
72
+ retention-days: 14
73
+ if-no-files-found: error
74
+ - name: Upload coverage to Codecov
75
+ uses: codecov/codecov-action@v5
76
+ with:
77
+ token: ${{ secrets.CODECOV_TOKEN }}
78
+ env_vars: OS,PYTHON
79
+ fail_ci_if_error: false
80
+ files: ./coverage.xml
81
+ flags: unittests
82
+ name: codecov-umbrella
83
+ verbose: true
84
+
85
+ test-js:
86
+ name: JS/React tests on ${{ matrix.os }}
87
+ runs-on: ${{ matrix.os }}
88
+ strategy:
89
+ matrix:
90
+ os: [ubuntu-latest, macos-latest]
91
+ env:
92
+ OS: ${{ matrix.os }}
93
+ steps:
94
+ - uses: actions/checkout@v4
95
+ - name: Setup Node.js
96
+ uses: actions/setup-node@v4
97
+ with:
98
+ node-version: '20'
99
+ cache: 'npm'
100
+ cache-dependency-path: autora_gui/react_app/package-lock.json
101
+ - name: Install dependencies
102
+ run: npm ci
103
+ working-directory: autora_gui/react_app
104
+ - name: Run Vitest with coverage
105
+ run: npm run test:coverage
106
+ working-directory: autora_gui/react_app
107
+ - name: Upload coverage to Codecov
108
+ uses: codecov/codecov-action@v5
109
+ with:
110
+ token: ${{ secrets.CODECOV_TOKEN }}
111
+ files: autora_gui/react_app/coverage/lcov.info
112
+ flags: javascript
113
+ env_vars: OS
114
+ fail_ci_if_error: false
115
+
116
+ docs:
117
+ name: Build docs with Python ${{ matrix.python-version }}
118
+ runs-on: ubuntu-latest
119
+ permissions:
120
+ contents: read
121
+ strategy:
122
+ matrix:
123
+ python-version: [ 3.11 ]
124
+ steps:
125
+ - uses: actions/checkout@v4
126
+ - name: Set up Python ${{ matrix.python-version }}
127
+ uses: actions/setup-python@v4
128
+ with:
129
+ python-version: ${{ matrix.python-version }}
130
+ cache: "pip"
131
+ - name: Install tox
132
+ run: python -m pip install tox
133
+ shell: bash
134
+ - name: Build sphinx docs.
135
+ # Comment the env: SPHINXOPTS if you want to ignore warnings during doc build
136
+ env:
137
+ SPHINXOPTS: '-W'
138
+ run: tox -e build-docs
139
+ shell: bash
140
+
141
+ build:
142
+ name: Build and Publish.
143
+ needs: test
144
+ runs-on: ubuntu-latest
145
+ permissions:
146
+ contents: read
147
+ packages: write
148
+
149
+ steps:
150
+ - name: Checkout repository
151
+ uses: actions/checkout@v4
152
+
153
+ - name: Log in to the Container registry
154
+ uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
155
+ with:
156
+ registry: ${{ env.REGISTRY }}
157
+ username: ${{ github.actor }}
158
+ password: ${{ secrets.GITHUB_TOKEN }}
159
+
160
+ - name: Extract metadata (tags, labels) for Docker
161
+ id: meta
162
+ uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
163
+ with:
164
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
165
+
166
+ - name: Build and push Docker image
167
+ uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
168
+ with:
169
+ context: .
170
+ push: ${{ github.event_name != 'pull_request' }}
171
+ tags: ${{ steps.meta.outputs.tags }}
172
+ labels: ${{ steps.meta.outputs.labels }}
@@ -0,0 +1,151 @@
1
+ name: Standalone Version and Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - create_json
8
+ workflow_dispatch: # Allow manual trigger
9
+
10
+ permissions:
11
+ contents: read
12
+ pages: write
13
+ id-token: write
14
+
15
+ concurrency:
16
+ group: "pages"
17
+ cancel-in-progress: false
18
+
19
+ jobs:
20
+ build:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Setup Pages
24
+ uses: actions/configure-pages@v4
25
+
26
+ - name: Setup Node.js
27
+ uses: actions/setup-node@v4
28
+ with:
29
+ node-version: '20'
30
+
31
+ - name: Setup Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: '3.11'
35
+
36
+ - name: Create deployment directory
37
+ run: mkdir -p deploy
38
+
39
+ # Build React version from main branch
40
+ - name: Checkout React branch
41
+ uses: actions/checkout@v4
42
+ with:
43
+ ref: main
44
+ path: main-branch
45
+
46
+ - name: Build main standalone version
47
+ run: |
48
+ cd main-branch/autora_gui/react_app
49
+ npm install
50
+ python build_standalone.py
51
+ mkdir -p ../../../deploy/main
52
+ cp ../../index.html ../../../deploy/main/index.html
53
+ continue-on-error: true
54
+
55
+ # Build component JSON generation version from create_json branch
56
+ - name: Checkout create_json branch
57
+ uses: actions/checkout@v4
58
+ with:
59
+ ref: create_json
60
+ path: create_json-branch
61
+
62
+ - name: Build component JSON generation standalone version
63
+ run: |
64
+ cd create_json-branch/autora_gui/react_app
65
+ npm install
66
+ python build_standalone.py
67
+ mkdir -p ../../../deploy/create_json
68
+ cp ../../index.html ../../../deploy/create_json/index.html
69
+ continue-on-error: true
70
+
71
+ # Build Sphinx docs from main branch
72
+ - name: Checkout main branch for docs
73
+ uses: actions/checkout@v4
74
+ with:
75
+ ref: main
76
+ path: main-branch
77
+
78
+ - name: Build Sphinx docs
79
+ run: |
80
+ cd main-branch
81
+ pip install tox
82
+ tox -e build-docs
83
+ mkdir -p ../deploy/docs
84
+ cp -r docs/_build/html/* ../deploy/docs/
85
+ continue-on-error: true
86
+
87
+ # Build front-end (JavaScript) API docs from the JSDoc comments and nest
88
+ # them under the Sphinx docs at /docs/frontend/.
89
+ - name: Build frontend JS docs
90
+ run: |
91
+ cd main-branch/autora_gui/react_app
92
+ npm install
93
+ npm run docs:api
94
+ mkdir -p ../../../deploy/docs/frontend
95
+ cp -r frontend-docs/* ../../../deploy/docs/frontend/
96
+ continue-on-error: true
97
+
98
+ # Create landing page as main index
99
+ - name: Create landing page
100
+ run: |
101
+ cat > deploy/index.html << 'EOF'
102
+ <!DOCTYPE html>
103
+ <html lang="en">
104
+ <head>
105
+ <meta charset="UTF-8">
106
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
107
+ <title>AutoRA Workflow Editor and Documentation</title>
108
+ <style>
109
+ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#1a1a2e;color:#e8e8e8;display:flex;justify-content:center;align-items:center;min-height:100vh;margin:0}
110
+ .container{text-align:center;padding:40px}
111
+ h1{color:#4a90d9;margin-bottom:40px}
112
+ .versions{display:flex;gap:30px;justify-content:center;flex-wrap:wrap}
113
+ .version-card{background:#16213e;border:2px solid #2a2a4a;border-radius:12px;padding:30px 40px;text-decoration:none;color:#e8e8e8;transition:all 0.3s}
114
+ .version-card:hover{border-color:#4a90d9;transform:translateY(-5px)}
115
+ .version-card h2{margin:0 0 10px 0;color:#4a90d9}
116
+ .version-card p{margin:0;color:#808080;font-size:14px}
117
+ </style>
118
+ </head>
119
+ <body>
120
+ <div class="container">
121
+ <h1>AutoRA Workflow Editor and Documentation</h1>
122
+ <div class="versions">
123
+ <a href="./main/" class="version-card"><h2>Workflow Editor</h2><p>React-based GUI</p></a>
124
+ <a href="./create_json/" class="version-card"><h2>Workflow Editor with JSON Generation</h2><p>React-based GUI with component JSON generation</p></a>
125
+ <a href="./docs/" class="version-card"><h2>Documentation</h2><p>API reference and guides</p></a>
126
+ </div>
127
+ </div>
128
+ </body>
129
+ </html>
130
+ EOF
131
+
132
+ - name: List deployment contents
133
+ run: |
134
+ echo "Deployment directory contents:"
135
+ find deploy -type f
136
+
137
+ - name: Upload artifact
138
+ uses: actions/upload-pages-artifact@v3
139
+ with:
140
+ path: deploy
141
+
142
+ deploy:
143
+ environment:
144
+ name: github-pages
145
+ url: ${{ steps.deployment.outputs.page_url }}
146
+ runs-on: ubuntu-latest
147
+ needs: build
148
+ steps:
149
+ - name: Standalone Version and Documentation
150
+ id: deployment
151
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,79 @@
1
+ name: DIST
2
+ on:
3
+ release:
4
+ types: [ released, prereleased ]
5
+
6
+ jobs:
7
+ build:
8
+ name: Build distribution
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v4
14
+ with:
15
+ python-version: "3.14"
16
+ - name: Install dependencies
17
+ run: |
18
+ python3 -m pip install --upgrade pip
19
+ pip3 install -r requirements/dev.txt
20
+ shell: bash
21
+ - name: Build a binary wheel and a source tarball
22
+ run: tox -e build-dist
23
+ - name: Store the distribution packages
24
+ uses: actions/upload-artifact@v4.4.3
25
+ with:
26
+ name: python-package-distributions
27
+ path: dist/
28
+
29
+ # To publish packages to PyPI, first obtain an account and then create a
30
+ # (pending) publisher using the form at
31
+ # https://pypi.org/manage/account/publishing/. Fill in the fields as follows:
32
+ #
33
+ # * PyPI Project Name: name of pypi package
34
+ # * Owner: org, e.g. ssec-jhu
35
+ # * Repository name: name of repo not-including org, e.g. autoRA-gui
36
+ # * Workflow name: dist.yml
37
+ # * Environment name: testpypi (for TestPyPI) or pypi (for PyPI)
38
+ #
39
+ # This should be done separately for both testpypi and pypi (these need
40
+ # separate accounts).
41
+ #
42
+ publish-to-testpypi:
43
+ name: Publish to TestPyPI
44
+ if: startsWith(github.ref, 'refs/tags/')
45
+ needs:
46
+ - build
47
+ runs-on: ubuntu-latest
48
+ environment: testpypi
49
+ permissions:
50
+ id-token: write
51
+ steps:
52
+ - name: Download all the dists
53
+ uses: actions/download-artifact@v4.1.7
54
+ with:
55
+ name: python-package-distributions
56
+ path: dist/
57
+ - name: Publish distribution to TestPyPI
58
+ uses: pypa/gh-action-pypi-publish@release/v1
59
+ with:
60
+ repository-url: https://test.pypi.org/legacy/
61
+
62
+ publish-to-pypi:
63
+ name: Publish to PyPI
64
+ if: startsWith(github.ref, 'refs/tags/')
65
+ needs:
66
+ - build
67
+ - publish-to-testpypi
68
+ runs-on: ubuntu-latest
69
+ environment: pypi
70
+ permissions:
71
+ id-token: write
72
+ steps:
73
+ - name: Download dists from
74
+ uses: actions/download-artifact@v4.1.7
75
+ with:
76
+ name: python-package-distributions
77
+ path: dist/
78
+ - name: Publish distribution to PyPI
79
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,33 @@
1
+ name: Security
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - '*'
9
+ pull_request:
10
+ branches:
11
+ - '*'
12
+
13
+ jobs:
14
+ security:
15
+ name: Check security concerns with bandit on Python ${{ matrix.python-version }}
16
+ runs-on: ubuntu-latest
17
+ strategy:
18
+ matrix:
19
+ python-version: [ 3.11 ]
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v4
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+ - name: Install dependencies
27
+ run: |
28
+ python3 -m pip install --upgrade pip
29
+ pip3 install bandit>=1.7 tox
30
+ shell: bash
31
+ - name: Run bandit (via tox)
32
+ run: tox -e check-security
33
+ shell: bash
@@ -0,0 +1,185 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
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
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+ _version.py
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+ cover/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+ db.sqlite3
63
+ db.sqlite3-journal
64
+
65
+ # Flask stuff:
66
+ instance/
67
+ .webassets-cache
68
+
69
+ # Scrapy stuff:
70
+ .scrapy
71
+
72
+ # Sphinx documentation
73
+ docs/_build/
74
+ docs/source/generated
75
+ docs/source/_autosummary/
76
+
77
+ # PyBuilder
78
+ .pybuilder/
79
+ target/
80
+
81
+ # Jupyter Notebook
82
+ .ipynb_checkpoints
83
+
84
+ # IPython
85
+ profile_default/
86
+ ipython_config.py
87
+
88
+ # pyenv
89
+ # For a library or package, you might want to ignore these files since the code is
90
+ # intended to run in multiple environments; otherwise, check them in:
91
+ # .python-version
92
+
93
+ # pipenv
94
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
96
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
97
+ # install all needed dependencies.
98
+ #Pipfile.lock
99
+
100
+ # poetry
101
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
102
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
103
+ # commonly ignored for libraries.
104
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
105
+ #poetry.lock
106
+
107
+ # pdm
108
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
109
+ #pdm.lock
110
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
111
+ # in version control.
112
+ # https://pdm.fming.dev/#use-with-ide
113
+ .pdm.toml
114
+
115
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116
+ __pypackages__/
117
+
118
+ # Celery stuff
119
+ celerybeat-schedule
120
+ celerybeat.pid
121
+
122
+ # SageMath parsed files
123
+ *.sage.py
124
+
125
+ # Environments
126
+ .env
127
+ .venv
128
+ env/
129
+ venv/
130
+ ENV/
131
+ env.bak/
132
+ venv.bak/
133
+
134
+ # Spyder project settings
135
+ .spyderproject
136
+ .spyproject
137
+
138
+ # Rope project settings
139
+ .ropeproject
140
+
141
+ # mkdocs documentation
142
+ /site
143
+
144
+ # mypy
145
+ .mypy_cache/
146
+ .dmypy.json
147
+ dmypy.json
148
+
149
+ # Pyre type checker
150
+ .pyre/
151
+
152
+ # pytype static type analyzer
153
+ .pytype/
154
+
155
+ # Cython debug symbols
156
+ cython_debug/
157
+
158
+ # PyCharm
159
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
162
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163
+ .idea/
164
+
165
+ # VS Code
166
+ .vscode
167
+
168
+ # File system
169
+ .DS_Store
170
+
171
+ # Claude files
172
+ .claude
173
+ SKILL.md
174
+ CLAUDE.md
175
+
176
+ # JS tests
177
+ node_modules
178
+
179
+ # React files
180
+ .vite
181
+ dist
182
+ coverage
183
+
184
+ # Generated JSDoc API docs
185
+ frontend-docs
@@ -0,0 +1,29 @@
1
+ # .readthedocs.yaml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+
8
+ python:
9
+ install:
10
+ - requirements: requirements/docs.txt
11
+ - method: pip
12
+ path: .
13
+
14
+ # Build documentation in the docs/ directory with Sphinx
15
+ sphinx:
16
+ builder: html
17
+ configuration: docs/source/conf.py
18
+ fail_on_warning: true
19
+
20
+ # Optionally build your docs in additional formats such as PDF and ePub
21
+ formats:
22
+ - htmlzip
23
+ - pdf
24
+ - epub
25
+
26
+ build:
27
+ os: ubuntu-22.04
28
+ tools:
29
+ python: "3.11"
@@ -0,0 +1,23 @@
1
+ {
2
+ "creators": [
3
+ {
4
+ "affiliation": "Scientific Software Engineering Center at JHU",
5
+ "name": "Fatemeh Abbasinejad",
6
+ "orcid": "0009-0006-3239-7112"
7
+ },
8
+ {
9
+ "affiliation": "Scientific Software Engineering Center at JHU",
10
+ "name": "Vladimir Kluzner",
11
+ "orcid": "0009-0000-5844-661X"
12
+ },
13
+ {
14
+ "affiliation": "Scientific Software Engineering Center at JHU",
15
+ "name": "Gerard Lemson",
16
+ "orcid": "0000-0001-5041-2458"
17
+ }
18
+ ],
19
+ "description": "GUI for AutoRA project",
20
+ "license": "bsd-3-clause",
21
+ "upload_type": "software",
22
+ "access_right": "open"
23
+ }