pydftracer 0.0.1.dev0__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.
- pydftracer-0.0.1.dev0/LICENSE +21 -0
- pydftracer-0.0.1.dev0/MANIFEST.in +20 -0
- pydftracer-0.0.1.dev0/PKG-INFO +157 -0
- pydftracer-0.0.1.dev0/README.md +121 -0
- pydftracer-0.0.1.dev0/pyproject.toml +146 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/__init__.py +11 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/_version.py +34 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/ai.py +9 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/ai_common.py +840 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/ai_init.py +33 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/common.py +697 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/dbg/__init__.py +2 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/dbg/ai.py +9 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/dbg/logger.py +17 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/dynamo.py +201 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/env.py +28 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/logger.py +18 -0
- pydftracer-0.0.1.dev0/python/dftracer/python/py.typed +0 -0
- pydftracer-0.0.1.dev0/python/pydftracer.egg-info/PKG-INFO +157 -0
- pydftracer-0.0.1.dev0/python/pydftracer.egg-info/SOURCES.txt +23 -0
- pydftracer-0.0.1.dev0/python/pydftracer.egg-info/dependency_links.txt +1 -0
- pydftracer-0.0.1.dev0/python/pydftracer.egg-info/requires.txt +13 -0
- pydftracer-0.0.1.dev0/python/pydftracer.egg-info/top_level.txt +1 -0
- pydftracer-0.0.1.dev0/setup.cfg +4 -0
- pydftracer-0.0.1.dev0/setup.py +14 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Lawrence Livermore National Laboratory
|
|
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.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
exclude .git_archival.txt
|
|
2
|
+
exclude .gitattributes
|
|
3
|
+
exclude .gitignore
|
|
4
|
+
exclude Makefile
|
|
5
|
+
exclude coverage.xml
|
|
6
|
+
exclude .coverage
|
|
7
|
+
exclude dft.log
|
|
8
|
+
prune tests
|
|
9
|
+
prune .github
|
|
10
|
+
prune htmlcov
|
|
11
|
+
prune .mypy_cache
|
|
12
|
+
prune __pycache__
|
|
13
|
+
prune .pytest_cache
|
|
14
|
+
prune .hypothesis
|
|
15
|
+
prune build
|
|
16
|
+
prune dist
|
|
17
|
+
global-exclude *.pyc
|
|
18
|
+
global-exclude *.pyo
|
|
19
|
+
global-exclude *.orig
|
|
20
|
+
global-exclude *.core
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pydftracer
|
|
3
|
+
Version: 0.0.1.dev0
|
|
4
|
+
Summary: Python libs for DFTracer
|
|
5
|
+
Author-email: "Hariharan Devarajan (Hari)" <hariharandev1@llnl.gov>, Ray Andrew Sinurat <raydreww@gmail.com>
|
|
6
|
+
Maintainer-email: "Hariharan Devarajan (Hari)" <hariharandev1@llnl.gov>, Ray Andrew Sinurat <raydreww@gmail.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/LLNL/pydftracer
|
|
9
|
+
Project-URL: Repository, https://github.com/LLNL/pydftracer
|
|
10
|
+
Project-URL: Bug Tracker, https://github.com/LLNL/pydftracer/issues
|
|
11
|
+
Project-URL: Documentation, https://dftracer.readthedocs.io/en/latest/
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=6.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
27
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
28
|
+
Requires-Dist: h5py; extra == "dev"
|
|
29
|
+
Requires-Dist: numpy; extra == "dev"
|
|
30
|
+
Requires-Dist: pillow; extra == "dev"
|
|
31
|
+
Requires-Dist: ruff; extra == "dev"
|
|
32
|
+
Requires-Dist: mypy; extra == "dev"
|
|
33
|
+
Provides-Extra: dynamo
|
|
34
|
+
Requires-Dist: torch>=2.5.1; extra == "dynamo"
|
|
35
|
+
Dynamic: license-file
|
|
36
|
+
|
|
37
|
+
# pydftracer
|
|
38
|
+
|
|
39
|
+
[](https://opensource.org/licenses/MIT)
|
|
40
|
+
[](https://www.python.org/downloads/)
|
|
41
|
+
|
|
42
|
+
A no operation (**No-Op**) Python binding for [DFTracer](https://github.com/hariharan-devarajan/dftracer) that provides seamless API compatibility without requiring the full DFTracer installation. Perfect for testing, development, and environments where you want to use DFTracer's API without the overhead of actual tracing.
|
|
43
|
+
|
|
44
|
+
## Purposes
|
|
45
|
+
|
|
46
|
+
- Are prototyping applications that will eventually use full DFTracer
|
|
47
|
+
- Maintain DFTracer API compatibility in environments where tracing is not needed (e.g. production apps)
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install dftracer
|
|
53
|
+
# with libdftracer and dftracer_utils
|
|
54
|
+
pip install dftracer[full]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Development
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Install development dependencies
|
|
61
|
+
pip install -e .[dev]
|
|
62
|
+
|
|
63
|
+
# Using Make (recommended)
|
|
64
|
+
make test-parallel # Run all tests with parallel execution
|
|
65
|
+
make test-subprocess # Run only subprocess-based dftracer tests
|
|
66
|
+
make test-ci # Run comprehensive tests matching CI configuration
|
|
67
|
+
make test-ci-quick # Run quick tests and checks (faster)
|
|
68
|
+
make check-all # Run all quality checks (lint, format, type-check, test)
|
|
69
|
+
|
|
70
|
+
# Using pytest directly
|
|
71
|
+
pytest tests/ -v -n 4 # All tests with parallel execution
|
|
72
|
+
pytest tests/ --cov=dftracer --cov-report=term-missing -v -n 4 # Tests with coverage
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Documentation
|
|
76
|
+
|
|
77
|
+
* Building DFTracer: [https://dftracer.readthedocs.io/en/latest/build.html](https://dftracer.readthedocs.io/en/latest/build.html)
|
|
78
|
+
* Integrating DFTracer: [https://dftracer.readthedocs.io/en/latest/examples.html](https://dftracer.readthedocs.io/en/latest/examples.html)
|
|
79
|
+
* Visualizing DFTracer Traces: [https://dftracer.readthedocs.io/en/latest/perfetto.html](https://dftracer.readthedocs.io/en/latest/perfetto.html)
|
|
80
|
+
* Building DFAnalyzer: [https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html](https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html)
|
|
81
|
+
|
|
82
|
+
## Development
|
|
83
|
+
|
|
84
|
+
### Testing
|
|
85
|
+
|
|
86
|
+
This project uses a comprehensive test suite with subprocess-based isolation for proper dftracer testing.
|
|
87
|
+
|
|
88
|
+
#### Running Tests
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Install development dependencies
|
|
92
|
+
pip install -e .[dev]
|
|
93
|
+
|
|
94
|
+
# Using Make (recommended)
|
|
95
|
+
make test-parallel # Run all tests with parallel execution
|
|
96
|
+
make test-subprocess # Run only subprocess-based dftracer tests
|
|
97
|
+
make test-ci # Run tests matching CI configuration
|
|
98
|
+
make check-all # Run all quality checks (lint, format, type-check, test)
|
|
99
|
+
|
|
100
|
+
# Using pytest directly
|
|
101
|
+
pytest tests/ -v -n 2 # All tests with parallel execution
|
|
102
|
+
pytest tests/ --cov=dftracer --cov-report=term-missing -v -n 2 # Tests with coverage
|
|
103
|
+
pytest tests/ -m subprocess -v -n 2 # Only subprocess tests
|
|
104
|
+
|
|
105
|
+
# Use the provided test script (matches CI)
|
|
106
|
+
./scripts/test.sh
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### Test Structure
|
|
110
|
+
|
|
111
|
+
- **Unit Tests**: General functionality tests in `tests/test_general.py`
|
|
112
|
+
- **Integration Tests**: Subprocess-based dftracer tests in `tests/test_dftracer.py`
|
|
113
|
+
- **Parallel Execution**: Tests run in parallel using `pytest-xdist` for faster execution
|
|
114
|
+
- **Process Isolation**: dftracer tests run in separate subprocesses to handle the per-process nature of dftracer
|
|
115
|
+
|
|
116
|
+
#### CI/CD
|
|
117
|
+
|
|
118
|
+
The project uses GitHub Actions for continuous integration with:
|
|
119
|
+
- Multi-Python version testing (3.9, 3.10, 3.11, 3.12)
|
|
120
|
+
- Parallel test execution with coverage reporting
|
|
121
|
+
- Code linting with `ruff`
|
|
122
|
+
- Type checking with `mypy`
|
|
123
|
+
- Package building and installation testing
|
|
124
|
+
|
|
125
|
+
## Citation and Reference
|
|
126
|
+
|
|
127
|
+
The original SC'24 paper describes the design and implementation of the DFTracer code. Please cite this paper and the code if you use DFTracer in your research.
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
@inproceedings{devarajan_dftracer_2024,
|
|
131
|
+
address = {Atlanta, GA},
|
|
132
|
+
title = {{DFTracer}: {An} {Analysis}-{Friendly} {Data} {Flow} {Tracer} for {AI}-{Driven} {Workflows}},
|
|
133
|
+
shorttitle = {{DFTracer}},
|
|
134
|
+
urldate = {2024-07-31},
|
|
135
|
+
booktitle = {{SC24}: {International} {Conference} for {High} {Performance} {Computing}, {Networking}, {Storage} and {Analysis}},
|
|
136
|
+
publisher = {IEEE},
|
|
137
|
+
author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
|
|
138
|
+
month = nov,
|
|
139
|
+
year = {2024},
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@misc{devarajan_dftracer_code_2024,
|
|
143
|
+
type = {Github},
|
|
144
|
+
title = {Github {DFTracer}},
|
|
145
|
+
shorttitle = {{DFTracer}},
|
|
146
|
+
url = {https://github.com/LLNL/dftracer.git},
|
|
147
|
+
urldate = {2024-07-31},
|
|
148
|
+
journal = {DFTracer: A multi-level dataflow tracer for capture I/O calls from worklows.},
|
|
149
|
+
author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
|
|
150
|
+
month = jun,
|
|
151
|
+
year = {2024},
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Acknowledgments
|
|
156
|
+
|
|
157
|
+
This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344; and under the auspices of the National Cancer Institute (NCI) by Frederick National Laboratory for Cancer Research (FNLCR) under Contract 75N91019D00024. This research used resources of the Argonne Leadership Computing Facility, a U.S. Department of Energy (DOE) Office of Science user facility at Argonne National Laboratory and is based on research supported by the U.S. DOE Office of Science-Advanced Scientific Computing Research Program, under Contract No. DE-AC02-06CH11357. Office of Advanced Scientific Computing Research under the DOE Early Career Research Program. Also, This material is based upon work partially supported by LLNL LDRD 23-ERD-045 and 24-SI-005. LLNL-CONF-857447.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# pydftracer
|
|
2
|
+
|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
|
|
6
|
+
A no operation (**No-Op**) Python binding for [DFTracer](https://github.com/hariharan-devarajan/dftracer) that provides seamless API compatibility without requiring the full DFTracer installation. Perfect for testing, development, and environments where you want to use DFTracer's API without the overhead of actual tracing.
|
|
7
|
+
|
|
8
|
+
## Purposes
|
|
9
|
+
|
|
10
|
+
- Are prototyping applications that will eventually use full DFTracer
|
|
11
|
+
- Maintain DFTracer API compatibility in environments where tracing is not needed (e.g. production apps)
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install dftracer
|
|
17
|
+
# with libdftracer and dftracer_utils
|
|
18
|
+
pip install dftracer[full]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Development
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Install development dependencies
|
|
25
|
+
pip install -e .[dev]
|
|
26
|
+
|
|
27
|
+
# Using Make (recommended)
|
|
28
|
+
make test-parallel # Run all tests with parallel execution
|
|
29
|
+
make test-subprocess # Run only subprocess-based dftracer tests
|
|
30
|
+
make test-ci # Run comprehensive tests matching CI configuration
|
|
31
|
+
make test-ci-quick # Run quick tests and checks (faster)
|
|
32
|
+
make check-all # Run all quality checks (lint, format, type-check, test)
|
|
33
|
+
|
|
34
|
+
# Using pytest directly
|
|
35
|
+
pytest tests/ -v -n 4 # All tests with parallel execution
|
|
36
|
+
pytest tests/ --cov=dftracer --cov-report=term-missing -v -n 4 # Tests with coverage
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Documentation
|
|
40
|
+
|
|
41
|
+
* Building DFTracer: [https://dftracer.readthedocs.io/en/latest/build.html](https://dftracer.readthedocs.io/en/latest/build.html)
|
|
42
|
+
* Integrating DFTracer: [https://dftracer.readthedocs.io/en/latest/examples.html](https://dftracer.readthedocs.io/en/latest/examples.html)
|
|
43
|
+
* Visualizing DFTracer Traces: [https://dftracer.readthedocs.io/en/latest/perfetto.html](https://dftracer.readthedocs.io/en/latest/perfetto.html)
|
|
44
|
+
* Building DFAnalyzer: [https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html](https://dftracer.readthedocs.io/en/latest/dfanalyzer_build.html)
|
|
45
|
+
|
|
46
|
+
## Development
|
|
47
|
+
|
|
48
|
+
### Testing
|
|
49
|
+
|
|
50
|
+
This project uses a comprehensive test suite with subprocess-based isolation for proper dftracer testing.
|
|
51
|
+
|
|
52
|
+
#### Running Tests
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Install development dependencies
|
|
56
|
+
pip install -e .[dev]
|
|
57
|
+
|
|
58
|
+
# Using Make (recommended)
|
|
59
|
+
make test-parallel # Run all tests with parallel execution
|
|
60
|
+
make test-subprocess # Run only subprocess-based dftracer tests
|
|
61
|
+
make test-ci # Run tests matching CI configuration
|
|
62
|
+
make check-all # Run all quality checks (lint, format, type-check, test)
|
|
63
|
+
|
|
64
|
+
# Using pytest directly
|
|
65
|
+
pytest tests/ -v -n 2 # All tests with parallel execution
|
|
66
|
+
pytest tests/ --cov=dftracer --cov-report=term-missing -v -n 2 # Tests with coverage
|
|
67
|
+
pytest tests/ -m subprocess -v -n 2 # Only subprocess tests
|
|
68
|
+
|
|
69
|
+
# Use the provided test script (matches CI)
|
|
70
|
+
./scripts/test.sh
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Test Structure
|
|
74
|
+
|
|
75
|
+
- **Unit Tests**: General functionality tests in `tests/test_general.py`
|
|
76
|
+
- **Integration Tests**: Subprocess-based dftracer tests in `tests/test_dftracer.py`
|
|
77
|
+
- **Parallel Execution**: Tests run in parallel using `pytest-xdist` for faster execution
|
|
78
|
+
- **Process Isolation**: dftracer tests run in separate subprocesses to handle the per-process nature of dftracer
|
|
79
|
+
|
|
80
|
+
#### CI/CD
|
|
81
|
+
|
|
82
|
+
The project uses GitHub Actions for continuous integration with:
|
|
83
|
+
- Multi-Python version testing (3.9, 3.10, 3.11, 3.12)
|
|
84
|
+
- Parallel test execution with coverage reporting
|
|
85
|
+
- Code linting with `ruff`
|
|
86
|
+
- Type checking with `mypy`
|
|
87
|
+
- Package building and installation testing
|
|
88
|
+
|
|
89
|
+
## Citation and Reference
|
|
90
|
+
|
|
91
|
+
The original SC'24 paper describes the design and implementation of the DFTracer code. Please cite this paper and the code if you use DFTracer in your research.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
@inproceedings{devarajan_dftracer_2024,
|
|
95
|
+
address = {Atlanta, GA},
|
|
96
|
+
title = {{DFTracer}: {An} {Analysis}-{Friendly} {Data} {Flow} {Tracer} for {AI}-{Driven} {Workflows}},
|
|
97
|
+
shorttitle = {{DFTracer}},
|
|
98
|
+
urldate = {2024-07-31},
|
|
99
|
+
booktitle = {{SC24}: {International} {Conference} for {High} {Performance} {Computing}, {Networking}, {Storage} and {Analysis}},
|
|
100
|
+
publisher = {IEEE},
|
|
101
|
+
author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
|
|
102
|
+
month = nov,
|
|
103
|
+
year = {2024},
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@misc{devarajan_dftracer_code_2024,
|
|
107
|
+
type = {Github},
|
|
108
|
+
title = {Github {DFTracer}},
|
|
109
|
+
shorttitle = {{DFTracer}},
|
|
110
|
+
url = {https://github.com/LLNL/dftracer.git},
|
|
111
|
+
urldate = {2024-07-31},
|
|
112
|
+
journal = {DFTracer: A multi-level dataflow tracer for capture I/O calls from worklows.},
|
|
113
|
+
author = {Devarajan, Hariharan and Pottier, Loic and Velusamy, Kaushik and Zheng, Huihuo and Yildirim, Izzet and Kogiou, Olga and Yu, Weikuan and Kougkas, Anthony and Sun, Xian-He and Yeom, Jae Seung and Mohror, Kathryn},
|
|
114
|
+
month = jun,
|
|
115
|
+
year = {2024},
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Acknowledgments
|
|
120
|
+
|
|
121
|
+
This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344; and under the auspices of the National Cancer Institute (NCI) by Frederick National Laboratory for Cancer Research (FNLCR) under Contract 75N91019D00024. This research used resources of the Argonne Leadership Computing Facility, a U.S. Department of Energy (DOE) Office of Science user facility at Argonne National Laboratory and is based on research supported by the U.S. DOE Office of Science-Advanced Scientific Computing Research Program, under Contract No. DE-AC02-06CH11357. Office of Advanced Scientific Computing Research under the DOE Early Career Research Program. Also, This material is based upon work partially supported by LLNL LDRD 23-ERD-045 and 24-SI-005. LLNL-CONF-857447.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=80", "wheel", "setuptools-scm>=8"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pydftracer"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Python libs for DFTracer"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
authors = [
|
|
12
|
+
{ name = "Hariharan Devarajan (Hari)", email = "hariharandev1@llnl.gov" },
|
|
13
|
+
{ name = "Ray Andrew Sinurat", email = "raydreww@gmail.com" }
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{ name = "Hariharan Devarajan (Hari)", email = "hariharandev1@llnl.gov" },
|
|
17
|
+
{ name = "Ray Andrew Sinurat", email = "raydreww@gmail.com" }
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 3 - Alpha",
|
|
21
|
+
"Intended Audience :: Science/Research",
|
|
22
|
+
"Topic :: Software Development :: Build Tools",
|
|
23
|
+
"License :: OSI Approved :: MIT License",
|
|
24
|
+
"Programming Language :: Python :: 3.9",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
29
|
+
]
|
|
30
|
+
requires-python = ">=3.9"
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://github.com/LLNL/pydftracer"
|
|
34
|
+
Repository = "https://github.com/LLNL/pydftracer"
|
|
35
|
+
"Bug Tracker" = "https://github.com/LLNL/pydftracer/issues"
|
|
36
|
+
Documentation = "https://dftracer.readthedocs.io/en/latest/"
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
dev = [
|
|
40
|
+
"pytest>=6.0",
|
|
41
|
+
"pytest-cov",
|
|
42
|
+
"pytest-xdist",
|
|
43
|
+
"h5py",
|
|
44
|
+
"numpy",
|
|
45
|
+
"pillow",
|
|
46
|
+
"ruff",
|
|
47
|
+
"mypy",
|
|
48
|
+
]
|
|
49
|
+
dynamo = [
|
|
50
|
+
"torch>=2.5.1"
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[tool.setuptools.package-dir]
|
|
54
|
+
"" = "python"
|
|
55
|
+
|
|
56
|
+
[tool.setuptools.packages.find]
|
|
57
|
+
where = ["python"]
|
|
58
|
+
include = ["dftracer*"]
|
|
59
|
+
namespaces = true
|
|
60
|
+
|
|
61
|
+
[tool.pytest.ini_options]
|
|
62
|
+
testpaths = [
|
|
63
|
+
"tests"
|
|
64
|
+
]
|
|
65
|
+
python_files = "test_*.py"
|
|
66
|
+
python_classes = "Test*"
|
|
67
|
+
python_functions = "test_*"
|
|
68
|
+
addopts = "-v --strict-markers --tb=short"
|
|
69
|
+
markers = [
|
|
70
|
+
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
71
|
+
"subprocess: marks tests that run in subprocess",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
[tool.coverage.run]
|
|
75
|
+
source = ["python/dftracer"]
|
|
76
|
+
omit = [
|
|
77
|
+
"tests/*",
|
|
78
|
+
"demo_*.py",
|
|
79
|
+
"test_*.py",
|
|
80
|
+
"python/dftracer/dbg/*",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[tool.coverage.report]
|
|
84
|
+
exclude_lines = [
|
|
85
|
+
"pragma: no cover",
|
|
86
|
+
"def __repr__",
|
|
87
|
+
"if self.debug:",
|
|
88
|
+
"if settings.DEBUG",
|
|
89
|
+
"raise AssertionError",
|
|
90
|
+
"raise NotImplementedError",
|
|
91
|
+
"if 0:",
|
|
92
|
+
"if __name__ == .__main__.:",
|
|
93
|
+
"if TYPE_CHECKING:",
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
[tool.ruff]
|
|
97
|
+
line-length = 88
|
|
98
|
+
target-version = "py39"
|
|
99
|
+
|
|
100
|
+
[tool.ruff.lint]
|
|
101
|
+
select = ["E", "F", "W", "B", "I", "UP"]
|
|
102
|
+
ignore = [
|
|
103
|
+
"E501", # line too long, handled by formatter
|
|
104
|
+
"B006", # Do not use mutable data structures for argument defaults - acceptable in some cases
|
|
105
|
+
"B008", # do not perform function calls in argument defaults
|
|
106
|
+
"C901", # too complex
|
|
107
|
+
"F403", # Star imports - used for __all__ exports and acceptable in __init__ files
|
|
108
|
+
"UP006", # Use `list` instead of `List` for type annotation - keep for older Python compatibility
|
|
109
|
+
"UP028", # Use `X | Y` for union types - keep for older Python compatibility
|
|
110
|
+
"UP035", # typing.Dict/List is deprecated - keeping for older Python compatibility
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
[tool.ruff.lint.per-file-ignores]
|
|
114
|
+
"tests/*" = ["B011", "B023"]
|
|
115
|
+
"python/dftracer/python/logger.py" = ["E402", "F405"]
|
|
116
|
+
"python/dftracer/python/dbg/logger.py" = ["E402", "F405"]
|
|
117
|
+
"python/dftracer/python/dbg/ai.py" = ["E402"]
|
|
118
|
+
"python/dftracer/python/ai.py" = ["E402"]
|
|
119
|
+
"python/dftracer/python/ai_common.py" = ["F405"]
|
|
120
|
+
"python/dftracer/python/ai_init.py" = ["F405"]
|
|
121
|
+
"python/dftracer/python/common.py" = ["E701", "F405"]
|
|
122
|
+
"python/dftracer/python/dynamo.py" = ["B904"]
|
|
123
|
+
|
|
124
|
+
[tool.mypy]
|
|
125
|
+
python_version = "3.9"
|
|
126
|
+
warn_return_any = true
|
|
127
|
+
warn_unused_configs = true
|
|
128
|
+
disallow_untyped_defs = true
|
|
129
|
+
disallow_incomplete_defs = true
|
|
130
|
+
|
|
131
|
+
[[tool.mypy.overrides]]
|
|
132
|
+
module = [
|
|
133
|
+
"torch.*",
|
|
134
|
+
"functorch.*",
|
|
135
|
+
]
|
|
136
|
+
ignore_missing_imports = true
|
|
137
|
+
follow_imports = "skip"
|
|
138
|
+
|
|
139
|
+
[[tool.mypy.overrides]]
|
|
140
|
+
module = "dftracer.python.dynamo"
|
|
141
|
+
disallow_untyped_defs = false
|
|
142
|
+
disallow_incomplete_defs = false
|
|
143
|
+
|
|
144
|
+
[tool.setuptools_scm]
|
|
145
|
+
local_scheme = "no-local-version"
|
|
146
|
+
version_file = "python/dftracer/python/_version.py"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
2
|
+
|
|
3
|
+
from dftracer.python.ai import *
|
|
4
|
+
from dftracer.python.dynamo import *
|
|
5
|
+
from dftracer.python.logger import *
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
__version__ = version("pydftracer")
|
|
9
|
+
except PackageNotFoundError:
|
|
10
|
+
# package is not installed
|
|
11
|
+
pass
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
TYPE_CHECKING = False
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from typing import Tuple
|
|
16
|
+
from typing import Union
|
|
17
|
+
|
|
18
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
20
|
+
else:
|
|
21
|
+
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
23
|
+
|
|
24
|
+
version: str
|
|
25
|
+
__version__: str
|
|
26
|
+
__version_tuple__: VERSION_TUPLE
|
|
27
|
+
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
30
|
+
|
|
31
|
+
__version__ = version = '0.0.1.dev0'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 1, 'dev0')
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = 'gb666f039d'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import dftracer.python.ai_common as ai_common
|
|
2
|
+
from dftracer.python.logger import dft_fn as dft_fn_orig
|
|
3
|
+
from dftracer.python.logger import dftracer as dftracer_orig
|
|
4
|
+
|
|
5
|
+
ai_common.dft_fn = dft_fn_orig # type: ignore[misc]
|
|
6
|
+
ai_common.dftracer = dftracer_orig # type: ignore[misc]
|
|
7
|
+
|
|
8
|
+
from dftracer.python.ai_common import *
|
|
9
|
+
from dftracer.python.ai_init import *
|