pysfi 0.1.6__tar.gz → 0.1.10__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.
- {pysfi-0.1.6 → pysfi-0.1.10}/PKG-INFO +28 -3
- {pysfi-0.1.6 → pysfi-0.1.10}/README.md +99 -99
- pysfi-0.1.10/examples/pack_demo/README.md +77 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/pyproject.toml +31 -15
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/__init__.py +1 -1
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/bumpversion/__init__.py +1 -1
- pysfi-0.1.10/sfi/cli.py +11 -0
- pysfi-0.1.10/sfi/docscan/README.md +813 -0
- pysfi-0.1.10/sfi/docscan/__init__.py +3 -0
- pysfi-0.1.10/sfi/docscan/docscan.py +1145 -0
- pysfi-0.1.10/sfi/docscan/docscan_gui.py +1282 -0
- pysfi-0.1.10/sfi/docscan/lang/eng.py +152 -0
- pysfi-0.1.10/sfi/docscan/lang/zhcn.py +170 -0
- pysfi-0.1.10/sfi/docscan/tests/__init__.py +1 -0
- pysfi-0.1.10/sfi/docscan/tests/test_benchmark.py +427 -0
- pysfi-0.1.10/sfi/docscan/tests/test_docscan.py +1245 -0
- pysfi-0.1.10/sfi/docscan/tests/test_enhanced.py +267 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/embedinstall/embedinstall.py +77 -17
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/makepython/makepython.py +44 -27
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/pdfsplit/pdfsplit.py +173 -173
- pysfi-0.1.10/sfi/pdfsplit/tests/__init__.py +0 -0
- pysfi-0.1.10/sfi/projectparse/__init__.py +0 -0
- pysfi-0.1.10/sfi/pylibpack/README.md +102 -0
- pysfi-0.1.10/sfi/pylibpack/__init__.py +0 -0
- pysfi-0.1.10/sfi/pylibpack/pylibpack.py +913 -0
- pysfi-0.1.10/sfi/pyloadergen/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/pyloadergen/pyloadergen.py +697 -111
- pysfi-0.1.10/sfi/pyloadergen/tests/__init__.py +0 -0
- pysfi-0.1.10/sfi/pyloadergen/tests/test_benchmark.py +235 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/pyloadergen/tests/test_pyloadergen.py +211 -36
- pysfi-0.1.10/sfi/pypack/README.md +292 -0
- pysfi-0.1.10/sfi/pypack/__init__.py +0 -0
- pysfi-0.1.10/sfi/pypack/pypack.py +791 -0
- pysfi-0.1.10/sfi/pypack/tests/__init__.py +0 -0
- pysfi-0.1.10/sfi/pypack/tests/test_pack.py +257 -0
- pysfi-0.1.10/sfi/pysourcepack/README.md +201 -0
- pysfi-0.1.10/sfi/pysourcepack/pysourcepack.py +369 -0
- pysfi-0.1.10/sfi/taskkill/__init__.py +0 -0
- pysfi-0.1.10/sfi/which/__init__.py +0 -0
- pysfi-0.1.10/sfi/workflowengine/README.md +0 -0
- pysfi-0.1.10/sfi/workflowengine/__init__.py +0 -0
- pysfi-0.1.10/sfi/workflowengine/tests/__init__.py +1 -0
- pysfi-0.1.10/sfi/workflowengine/tests/test_benchmark.py +725 -0
- pysfi-0.1.10/sfi/workflowengine/tests/test_workflowengine.py +740 -0
- pysfi-0.1.10/sfi/workflowengine/workflowengine.py +444 -0
- pysfi-0.1.6/sfi/pypacker/fspacker.py +0 -91
- {pysfi-0.1.6 → pysfi-0.1.10}/.gitignore +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/alarmclock/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/alarmclock/alarmclock.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/bumpversion/README.md +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/bumpversion/bumpversion.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/bumpversion/tests/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/bumpversion/tests/test_bumpversion.py +0 -0
- {pysfi-0.1.6/sfi/filedate → pysfi-0.1.10/sfi/docscan/lang}/__init__.py +0 -0
- {pysfi-0.1.6/sfi/makepython → pysfi-0.1.10/sfi/embedinstall}/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/filedate/README.md +0 -0
- {pysfi-0.1.6/sfi/pdfsplit/tests → pysfi-0.1.10/sfi/filedate}/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/filedate/filedate.py +0 -0
- {pysfi-0.1.6/sfi/pyloadergen → pysfi-0.1.10/sfi/makepython}/__init__.py +0 -0
- {pysfi-0.1.6/sfi/pyloadergen/tests → pysfi-0.1.10/sfi/pdfsplit}/__init__.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/pdfsplit/tests/test_pdfsplit.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/projectparse/projectparse.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/taskkill/taskkill.py +0 -0
- {pysfi-0.1.6 → pysfi-0.1.10}/sfi/which/which.py +0 -0
|
@@ -1,13 +1,38 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pysfi
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.10
|
|
4
4
|
Summary: Single File commands for Interactive python.
|
|
5
5
|
Requires-Python: >=3.8
|
|
6
6
|
Requires-Dist: tomli>=2.4.0; python_version < '3.11'
|
|
7
7
|
Provides-Extra: all
|
|
8
|
+
Requires-Dist: ebooklib>=0.18; extra == 'all'
|
|
9
|
+
Requires-Dist: markdown>=3.5; extra == 'all'
|
|
10
|
+
Requires-Dist: odfpy>=1.4.1; extra == 'all'
|
|
11
|
+
Requires-Dist: openpyxl>=3.1.0; extra == 'all'
|
|
12
|
+
Requires-Dist: pillow>=10.0.0; extra == 'all'
|
|
8
13
|
Requires-Dist: pymupdf>=1.24.11; extra == 'all'
|
|
14
|
+
Requires-Dist: pypdf>=3.0.0; extra == 'all'
|
|
15
|
+
Requires-Dist: pyside2-stubs>=5.15.2.1.2; extra == 'all'
|
|
16
|
+
Requires-Dist: pyside2>=5.15.2.1; extra == 'all'
|
|
17
|
+
Requires-Dist: pytesseract>=0.3.10; extra == 'all'
|
|
18
|
+
Requires-Dist: python-docx>=1.1.0; extra == 'all'
|
|
19
|
+
Requires-Dist: python-pptx>=0.6.21; extra == 'all'
|
|
20
|
+
Provides-Extra: extra
|
|
21
|
+
Requires-Dist: ebooklib>=0.18; extra == 'extra'
|
|
22
|
+
Requires-Dist: markdown>=3.5; extra == 'extra'
|
|
23
|
+
Requires-Dist: odfpy>=1.4.1; extra == 'extra'
|
|
24
|
+
Requires-Dist: pypdf>=3.0.0; extra == 'extra'
|
|
25
|
+
Provides-Extra: gui
|
|
26
|
+
Requires-Dist: pyside2-stubs>=5.15.2.1.2; extra == 'gui'
|
|
27
|
+
Requires-Dist: pyside2>=5.15.2.1; extra == 'gui'
|
|
28
|
+
Provides-Extra: ocr
|
|
29
|
+
Requires-Dist: pillow>=10.0.0; extra == 'ocr'
|
|
30
|
+
Requires-Dist: pytesseract>=0.3.10; extra == 'ocr'
|
|
9
31
|
Provides-Extra: office
|
|
32
|
+
Requires-Dist: openpyxl>=3.1.0; extra == 'office'
|
|
10
33
|
Requires-Dist: pymupdf>=1.24.11; extra == 'office'
|
|
34
|
+
Requires-Dist: python-docx>=1.1.0; extra == 'office'
|
|
35
|
+
Requires-Dist: python-pptx>=0.6.21; extra == 'office'
|
|
11
36
|
Description-Content-Type: text/markdown
|
|
12
37
|
|
|
13
38
|
# pysfi
|
|
@@ -27,7 +52,7 @@ pysfi is a Python project that provides single-file command-line utilities, desi
|
|
|
27
52
|
- **mkp**: Make Python project utilities
|
|
28
53
|
- **projectparse**: Project parsing and analysis tools
|
|
29
54
|
- **pyloadergen**: Python loader code generation
|
|
30
|
-
- **
|
|
55
|
+
- **pypack**: Python packaging utilities
|
|
31
56
|
|
|
32
57
|
## Installation
|
|
33
58
|
|
|
@@ -97,7 +122,7 @@ pysfi/
|
|
|
97
122
|
│ ├── pyloadergen.py
|
|
98
123
|
│ ├── pyproject.toml
|
|
99
124
|
│ └── __init__.py
|
|
100
|
-
└──
|
|
125
|
+
└── pypack/ # pypack command module
|
|
101
126
|
├── fspacker.py
|
|
102
127
|
└── pyproject.toml
|
|
103
128
|
```
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
# pysfi
|
|
2
|
-
|
|
3
|
-
Single File commands for Interactive python.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
pysfi is a Python project that provides single-file command-line utilities, designed to be lightweight and easy-to-use.
|
|
8
|
-
|
|
9
|
-
## Available Commands
|
|
10
|
-
|
|
11
|
-
- **alarmclk**: Alarm clock functionality
|
|
12
|
-
- **[bumpversion](sfi/bumpversion/README.md)**: Automated version number management tool
|
|
13
|
-
- **embedinstall**: Embed installation utilities
|
|
14
|
-
- **[filedate](sfi/filedate/README.md)**: A file date management tool that normalizes date prefixes in filenames
|
|
15
|
-
- **mkp**: Make Python project utilities
|
|
16
|
-
- **projectparse**: Project parsing and analysis tools
|
|
17
|
-
- **pyloadergen**: Python loader code generation
|
|
18
|
-
- **
|
|
19
|
-
|
|
20
|
-
## Installation
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
# Install using uv (recommended)
|
|
24
|
-
uv add pysfi
|
|
25
|
-
|
|
26
|
-
# Or using pip
|
|
27
|
-
pip install pysfi
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Development
|
|
31
|
-
|
|
32
|
-
### Requirements
|
|
33
|
-
|
|
34
|
-
- Python >= 3.8
|
|
35
|
-
- [uv](https://github.com/astral-sh/uv) (recommended) or pip
|
|
36
|
-
|
|
37
|
-
### Development Dependencies
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
uv pip install -e ".[dev]"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Code Standards
|
|
44
|
-
|
|
45
|
-
The project uses Ruff for code linting and formatting:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# Check code
|
|
49
|
-
ruff check .
|
|
50
|
-
|
|
51
|
-
# Format code
|
|
52
|
-
ruff format .
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Project Structure
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
pysfi/
|
|
59
|
-
├── pyproject.toml # Main project configuration
|
|
60
|
-
├── README.md
|
|
61
|
-
└── sfi/
|
|
62
|
-
├── __init__.py
|
|
63
|
-
├── alarmclock/ # alarmclk command module
|
|
64
|
-
│ ├── alarmclock.py
|
|
65
|
-
│ ├── pyproject.toml
|
|
66
|
-
│ └── __init__.py
|
|
67
|
-
├── embedinstall/ # embedinstall command module
|
|
68
|
-
│ ├── embedinstall.py
|
|
69
|
-
│ ├── pyproject.toml
|
|
70
|
-
│ └── __init__.py
|
|
71
|
-
├── filedate/ # filedate command module
|
|
72
|
-
│ ├── filedate.py
|
|
73
|
-
│ ├── pyproject.toml
|
|
74
|
-
│ ├── README.md # Detailed documentation
|
|
75
|
-
│ └── __init__.py
|
|
76
|
-
├── makepython/ # mkp command module
|
|
77
|
-
│ ├── makepython.py
|
|
78
|
-
│ ├── pyproject.toml
|
|
79
|
-
│ └── __init__.py
|
|
80
|
-
├── projectparse/ # projectparse command module
|
|
81
|
-
│ ├── projectparse.py
|
|
82
|
-
│ ├── pyproject.toml
|
|
83
|
-
│ └── __init__.py
|
|
84
|
-
├── pyloadergen/ # pyloadergen command module
|
|
85
|
-
│ ├── pyloadergen.py
|
|
86
|
-
│ ├── pyproject.toml
|
|
87
|
-
│ └── __init__.py
|
|
88
|
-
└──
|
|
89
|
-
├── fspacker.py
|
|
90
|
-
└── pyproject.toml
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## License
|
|
94
|
-
|
|
95
|
-
MIT License
|
|
96
|
-
|
|
97
|
-
## Contributing
|
|
98
|
-
|
|
99
|
-
Issues and Pull Requests are welcome!
|
|
1
|
+
# pysfi
|
|
2
|
+
|
|
3
|
+
Single File commands for Interactive python.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
pysfi is a Python project that provides single-file command-line utilities, designed to be lightweight and easy-to-use.
|
|
8
|
+
|
|
9
|
+
## Available Commands
|
|
10
|
+
|
|
11
|
+
- **alarmclk**: Alarm clock functionality
|
|
12
|
+
- **[bumpversion](sfi/bumpversion/README.md)**: Automated version number management tool
|
|
13
|
+
- **embedinstall**: Embed installation utilities
|
|
14
|
+
- **[filedate](sfi/filedate/README.md)**: A file date management tool that normalizes date prefixes in filenames
|
|
15
|
+
- **mkp**: Make Python project utilities
|
|
16
|
+
- **projectparse**: Project parsing and analysis tools
|
|
17
|
+
- **pyloadergen**: Python loader code generation
|
|
18
|
+
- **pypack**: Python packaging utilities
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Install using uv (recommended)
|
|
24
|
+
uv add pysfi
|
|
25
|
+
|
|
26
|
+
# Or using pip
|
|
27
|
+
pip install pysfi
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Development
|
|
31
|
+
|
|
32
|
+
### Requirements
|
|
33
|
+
|
|
34
|
+
- Python >= 3.8
|
|
35
|
+
- [uv](https://github.com/astral-sh/uv) (recommended) or pip
|
|
36
|
+
|
|
37
|
+
### Development Dependencies
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
uv pip install -e ".[dev]"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Code Standards
|
|
44
|
+
|
|
45
|
+
The project uses Ruff for code linting and formatting:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Check code
|
|
49
|
+
ruff check .
|
|
50
|
+
|
|
51
|
+
# Format code
|
|
52
|
+
ruff format .
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Project Structure
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pysfi/
|
|
59
|
+
├── pyproject.toml # Main project configuration
|
|
60
|
+
├── README.md
|
|
61
|
+
└── sfi/
|
|
62
|
+
├── __init__.py
|
|
63
|
+
├── alarmclock/ # alarmclk command module
|
|
64
|
+
│ ├── alarmclock.py
|
|
65
|
+
│ ├── pyproject.toml
|
|
66
|
+
│ └── __init__.py
|
|
67
|
+
├── embedinstall/ # embedinstall command module
|
|
68
|
+
│ ├── embedinstall.py
|
|
69
|
+
│ ├── pyproject.toml
|
|
70
|
+
│ └── __init__.py
|
|
71
|
+
├── filedate/ # filedate command module
|
|
72
|
+
│ ├── filedate.py
|
|
73
|
+
│ ├── pyproject.toml
|
|
74
|
+
│ ├── README.md # Detailed documentation
|
|
75
|
+
│ └── __init__.py
|
|
76
|
+
├── makepython/ # mkp command module
|
|
77
|
+
│ ├── makepython.py
|
|
78
|
+
│ ├── pyproject.toml
|
|
79
|
+
│ └── __init__.py
|
|
80
|
+
├── projectparse/ # projectparse command module
|
|
81
|
+
│ ├── projectparse.py
|
|
82
|
+
│ ├── pyproject.toml
|
|
83
|
+
│ └── __init__.py
|
|
84
|
+
├── pyloadergen/ # pyloadergen command module
|
|
85
|
+
│ ├── pyloadergen.py
|
|
86
|
+
│ ├── pyproject.toml
|
|
87
|
+
│ └── __init__.py
|
|
88
|
+
└── pypack/ # pypack command module
|
|
89
|
+
├── fspacker.py
|
|
90
|
+
└── pyproject.toml
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## License
|
|
94
|
+
|
|
95
|
+
MIT License
|
|
96
|
+
|
|
97
|
+
## Contributing
|
|
98
|
+
|
|
99
|
+
Issues and Pull Requests are welcome!
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Pypack Demo
|
|
2
|
+
|
|
3
|
+
This is a demo application to showcase the pypack workflow packaging tool.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Ensure pypack is installed:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cd sfi/pypack
|
|
11
|
+
pip install -e .
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
### Basic Build
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
cd sfi/examples/pack_demo
|
|
20
|
+
pypack build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This will:
|
|
24
|
+
|
|
25
|
+
1. Parse the `pyproject.toml` file
|
|
26
|
+
2. Pack the source code
|
|
27
|
+
3. Install Python runtime
|
|
28
|
+
4. Generate a console loader
|
|
29
|
+
5. Assemble the final package
|
|
30
|
+
|
|
31
|
+
### Advanced Build Options
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Build with GUI loader
|
|
35
|
+
pypack build --loader-type gui
|
|
36
|
+
|
|
37
|
+
# Build with specific Python version
|
|
38
|
+
pypack build --python-version 3.11.5
|
|
39
|
+
|
|
40
|
+
# Skip loader generation (faster for development)
|
|
41
|
+
pypack build --no-loader
|
|
42
|
+
|
|
43
|
+
# Build with verbose logging
|
|
44
|
+
pypack build --debug
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
After successful build, the output will be in `dist/package/`:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
dist/package/
|
|
53
|
+
├── src/ # Packed source code
|
|
54
|
+
├── runtime/ # Python runtime
|
|
55
|
+
├── main.exe # Generated loader
|
|
56
|
+
└── metadata.json # Package metadata
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Running the Packaged Application
|
|
60
|
+
|
|
61
|
+
Run the generated loader:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
cd dist/package
|
|
65
|
+
./main.exe
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Workflow Stages
|
|
69
|
+
|
|
70
|
+
The packaging process executes the following stages:
|
|
71
|
+
|
|
72
|
+
1. **Parse Project**: Extract project information from `pyproject.toml`
|
|
73
|
+
2. **Pack Source & Install Python**: Parallel execution of source packing and Python installation
|
|
74
|
+
3. **Generate Loader**: Create cross-platform loader executable
|
|
75
|
+
4. **Assemble Package**: Combine all components into final package
|
|
76
|
+
|
|
77
|
+
Each stage can run independently or in parallel based on dependencies, maximizing efficiency.
|
|
@@ -8,24 +8,38 @@ description = "Single File commands for Interactive python."
|
|
|
8
8
|
name = "pysfi"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
11
|
-
version = "0.1.
|
|
11
|
+
version = "0.1.10"
|
|
12
12
|
|
|
13
13
|
[project.scripts]
|
|
14
14
|
alarmclk = "sfi.alarmclock.alarmclock:main"
|
|
15
15
|
bumpversion = "sfi.bumpversion.bumpversion:main"
|
|
16
|
+
docscan = "sfi.docscan.docscan:main"
|
|
17
|
+
docscan-gui = "sfi.docscan.docscan_gui:main"
|
|
16
18
|
embedinstall = "sfi.embedinstall.embedinstall:main"
|
|
17
19
|
filedate = "sfi.filedate.filedate:main"
|
|
18
20
|
mkp = "sfi.makepython.makepython:main"
|
|
19
21
|
pdfsplit = "sfi.pdfsplit.pdfsplit:main"
|
|
20
22
|
projectparse = "sfi.projectparse.projectparse:main"
|
|
23
|
+
pylibpack = "sfi.pylibpack.pylibpack:main"
|
|
21
24
|
pyloadergen = "sfi.pyloadergen.pyloadergen:main"
|
|
22
|
-
|
|
25
|
+
pyp = "sfi.pypack.pypack:main"
|
|
26
|
+
pypack = "sfi.pypack.pypack:main"
|
|
27
|
+
pysourcepack = "sfi.pysourcepack.pysourcepack:main"
|
|
28
|
+
sfi = "sfi.cli:main"
|
|
23
29
|
taskk = "sfi.taskkill.taskkill:main"
|
|
24
30
|
wch = "sfi.which.which:main"
|
|
25
31
|
|
|
26
32
|
[project.optional-dependencies]
|
|
27
|
-
all = ["pysfi[office]"]
|
|
28
|
-
|
|
33
|
+
all = ["pysfi[gui,office,ocr,extra]"]
|
|
34
|
+
extra = ["ebooklib>=0.18", "markdown>=3.5", "odfpy>=1.4.1", "pypdf>=3.0.0"]
|
|
35
|
+
gui = ["PySide2>=5.15.2.1", "pyside2-stubs>=5.15.2.1.2"]
|
|
36
|
+
ocr = ["Pillow>=10.0.0", "pytesseract>=0.3.10"]
|
|
37
|
+
office = [
|
|
38
|
+
"openpyxl>=3.1.0",
|
|
39
|
+
"pymupdf>=1.24.11",
|
|
40
|
+
"python-docx>=1.1.0",
|
|
41
|
+
"python-pptx>=0.6.21",
|
|
42
|
+
]
|
|
29
43
|
|
|
30
44
|
[tool.hatch.build.targets.wheel]
|
|
31
45
|
exclude = [
|
|
@@ -73,8 +87,11 @@ exclude = [
|
|
|
73
87
|
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
74
88
|
fixable = ["ALL"]
|
|
75
89
|
ignore = [
|
|
76
|
-
"B008",
|
|
77
|
-
"E501",
|
|
90
|
+
"B008", # Do not perform function calls in function arguments
|
|
91
|
+
"E501", # Line too long (handled by formatter)
|
|
92
|
+
"RUF001", # Language specific rules
|
|
93
|
+
"RUF002", # Language specific rules
|
|
94
|
+
"RUF003", # Language specific rules
|
|
78
95
|
]
|
|
79
96
|
select = [
|
|
80
97
|
"B", # flake8-bugbear
|
|
@@ -100,15 +117,19 @@ known-first-party = ["sfi"]
|
|
|
100
117
|
members = [
|
|
101
118
|
"sfi/alarmclock",
|
|
102
119
|
"sfi/bumpversion",
|
|
120
|
+
"sfi/docscan",
|
|
103
121
|
"sfi/embedinstall",
|
|
104
122
|
"sfi/filedate",
|
|
105
123
|
"sfi/makepython",
|
|
106
124
|
"sfi/pdfsplit",
|
|
107
125
|
"sfi/projectparse",
|
|
126
|
+
"sfi/pylibpack",
|
|
108
127
|
"sfi/pyloadergen",
|
|
109
|
-
"sfi/
|
|
128
|
+
"sfi/pypack",
|
|
129
|
+
"sfi/pysourcepack",
|
|
110
130
|
"sfi/taskkill",
|
|
111
131
|
"sfi/which",
|
|
132
|
+
"sfi/workflowengine",
|
|
112
133
|
]
|
|
113
134
|
|
|
114
135
|
[dependency-groups]
|
|
@@ -116,17 +137,12 @@ dev = [
|
|
|
116
137
|
"hatch>=1.14.2",
|
|
117
138
|
"pysfi[all]",
|
|
118
139
|
"pyside2>=5.15.2.1",
|
|
140
|
+
"pytest-asyncio>=0.24.0",
|
|
141
|
+
"pytest-benchmark>=4.0.0",
|
|
119
142
|
"pytest-cov>=5.0.0",
|
|
143
|
+
"pytest-mock>=3.14.0",
|
|
120
144
|
"pytest>=8.3.5",
|
|
121
145
|
"qdarkstyle>=3.2.3",
|
|
122
146
|
"ruff>=0.14.11",
|
|
123
147
|
"tomli>=2.4.0",
|
|
124
148
|
]
|
|
125
|
-
|
|
126
|
-
[tool.pytest.ini_options]
|
|
127
|
-
addopts = "-v --tb=short"
|
|
128
|
-
python_classes = ["Test*"]
|
|
129
|
-
python_files = ["test_*.py"]
|
|
130
|
-
python_functions = ["test_*"]
|
|
131
|
-
pythonpath = ["."]
|
|
132
|
-
testpaths = ["sfi"]
|
pysfi-0.1.10/sfi/cli.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from sfi import __version__ as VERSION # noqa: N812
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main():
|
|
7
|
+
parser = argparse.ArgumentParser()
|
|
8
|
+
parser.add_argument(
|
|
9
|
+
"-v", "--version", action="version", version=f"%(prog)s v{VERSION}", help="Print version and exit"
|
|
10
|
+
)
|
|
11
|
+
parser.parse_args()
|