gulp-cli 1.1.1__tar.gz → 1.1.3__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.
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/.github/workflows/portable-bundles.yml +53 -1
- {gulp_cli-1.1.1/src/gulp_cli.egg-info → gulp_cli-1.1.3}/PKG-INFO +2 -2
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/README.md +1 -1
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/command-reference.md +6 -1
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/examples.md +5 -5
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/getting-started.md +9 -2
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/portable.md +37 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/_version.py +3 -3
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/ingest.py +653 -51
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/stats.py +218 -43
- {gulp_cli-1.1.1 → gulp_cli-1.1.3/src/gulp_cli.egg-info}/PKG-INFO +2 -2
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/.github/workflows/python-package.yml +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/.gitignore +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/extensions.md +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/resource-management.md +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/docs/troubleshooting-cli.md +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/gulp-cli.spec +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/portable/launch-linux.sh +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/portable/launch-macos.sh +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/portable/launch-windows.bat +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/pyproject.toml +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/setup.cfg +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/__init__.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/__main__.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/cli.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/client.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/__init__.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/acl.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/auth.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/collab.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/context.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/db.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/enhance_map.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/glyph.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/mapping.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/operations.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/plugin.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/query.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/source.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/storage.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/user_group.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/commands/users.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/config.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/extension/__init__.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/extension/query_sigma_zip.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/extension/story.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/extension_helpers.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/extensions.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/output.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli/utils.py +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli.egg-info/SOURCES.txt +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli.egg-info/dependency_links.txt +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli.egg-info/entry_points.txt +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli.egg-info/requires.txt +0 -0
- {gulp_cli-1.1.1 → gulp_cli-1.1.3}/src/gulp_cli.egg-info/top_level.txt +0 -0
|
@@ -3,8 +3,13 @@ name: Portable bundles
|
|
|
3
3
|
"on":
|
|
4
4
|
push:
|
|
5
5
|
tags: ['v*', 'test-v*']
|
|
6
|
+
release:
|
|
7
|
+
types: [published]
|
|
6
8
|
workflow_dispatch: {}
|
|
7
9
|
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
|
|
8
13
|
jobs:
|
|
9
14
|
build-portable:
|
|
10
15
|
name: Build portable bundle (${{ matrix.bundle_name }})
|
|
@@ -72,9 +77,33 @@ jobs:
|
|
|
72
77
|
path: dist/${{ matrix.bundle_name }}
|
|
73
78
|
if-no-files-found: error
|
|
74
79
|
|
|
80
|
+
- name: Create release archive
|
|
81
|
+
shell: python
|
|
82
|
+
env:
|
|
83
|
+
BUNDLE_NAME: ${{ matrix.bundle_name }}
|
|
84
|
+
run: |
|
|
85
|
+
import os
|
|
86
|
+
import shutil
|
|
87
|
+
from pathlib import Path
|
|
88
|
+
|
|
89
|
+
dist_dir = Path("dist")
|
|
90
|
+
bundle_name = os.environ["BUNDLE_NAME"]
|
|
91
|
+
bundle_dir = dist_dir / bundle_name
|
|
92
|
+
archive_base = dist_dir / bundle_name
|
|
93
|
+
shutil.make_archive(str(archive_base), "zip", root_dir=bundle_dir.parent, base_dir=bundle_dir.name)
|
|
94
|
+
|
|
95
|
+
- name: Upload release asset
|
|
96
|
+
if: github.event_name == 'release'
|
|
97
|
+
uses: softprops/action-gh-release@v2
|
|
98
|
+
with:
|
|
99
|
+
tag_name: ${{ github.event.release.tag_name }}
|
|
100
|
+
files: dist/${{ matrix.bundle_name }}.zip
|
|
101
|
+
fail_on_unmatched_files: true
|
|
102
|
+
|
|
75
103
|
build-portable-macos-x64:
|
|
76
104
|
name: Build portable bundle (gulp-cli-portable-macos-x64)
|
|
77
|
-
if: github.event_name == 'workflow_dispatch'
|
|
105
|
+
if: github.event_name == 'workflow_dispatch' || github.event_name == 'release'
|
|
106
|
+
continue-on-error: ${{ github.event_name == 'release' }}
|
|
78
107
|
runs-on: macos-15-intel
|
|
79
108
|
timeout-minutes: 90
|
|
80
109
|
|
|
@@ -125,3 +154,26 @@ jobs:
|
|
|
125
154
|
name: gulp-cli-portable-macos-x64
|
|
126
155
|
path: dist/gulp-cli-portable-macos-x64
|
|
127
156
|
if-no-files-found: error
|
|
157
|
+
|
|
158
|
+
- name: Create release archive
|
|
159
|
+
shell: python
|
|
160
|
+
env:
|
|
161
|
+
BUNDLE_NAME: gulp-cli-portable-macos-x64
|
|
162
|
+
run: |
|
|
163
|
+
import os
|
|
164
|
+
import shutil
|
|
165
|
+
from pathlib import Path
|
|
166
|
+
|
|
167
|
+
dist_dir = Path("dist")
|
|
168
|
+
bundle_name = os.environ["BUNDLE_NAME"]
|
|
169
|
+
bundle_dir = dist_dir / bundle_name
|
|
170
|
+
archive_base = dist_dir / bundle_name
|
|
171
|
+
shutil.make_archive(str(archive_base), "zip", root_dir=bundle_dir.parent, base_dir=bundle_dir.name)
|
|
172
|
+
|
|
173
|
+
- name: Upload release asset
|
|
174
|
+
if: github.event_name == 'release'
|
|
175
|
+
uses: softprops/action-gh-release@v2
|
|
176
|
+
with:
|
|
177
|
+
tag_name: ${{ github.event.release.tag_name }}
|
|
178
|
+
files: dist/gulp-cli-portable-macos-x64.zip
|
|
179
|
+
fail_on_unmatched_files: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gulp-cli
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
4
4
|
Summary: Command-line client for gULP
|
|
5
5
|
Author-email: Mentat <info@mentat.is>
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -80,7 +80,7 @@ gulp-cli auth whoami
|
|
|
80
80
|
# List operations
|
|
81
81
|
gulp-cli operation list
|
|
82
82
|
|
|
83
|
-
# Ingest files with wildcard
|
|
83
|
+
# Ingest files with wildcard (per-file progress is on by default; use --no-show-per-file-progress to hide it)
|
|
84
84
|
gulp-cli ingest file my_operation win_evtx 'samples/win_evtx/*.evtx'
|
|
85
85
|
|
|
86
86
|
# Query documents
|
|
@@ -66,7 +66,7 @@ gulp-cli auth whoami
|
|
|
66
66
|
# List operations
|
|
67
67
|
gulp-cli operation list
|
|
68
68
|
|
|
69
|
-
# Ingest files with wildcard
|
|
69
|
+
# Ingest files with wildcard (per-file progress is on by default; use --no-show-per-file-progress to hide it)
|
|
70
70
|
gulp-cli ingest file my_operation win_evtx 'samples/win_evtx/*.evtx'
|
|
71
71
|
|
|
72
72
|
# Query documents
|
|
@@ -455,7 +455,9 @@ gulp-cli ingest file OPERATION_ID PLUGIN FILE [FILE...] [OPTIONS]
|
|
|
455
455
|
- `--create-operation` — Create operation automatically when it does not exist
|
|
456
456
|
- `--preview` — Run preview-only ingestion (no persistence)
|
|
457
457
|
- `--wait` — Wait for completion with progress
|
|
458
|
+
- `--show-per-file-progress / --no-show-per-file-progress` — Show one line per completed file request in `--wait` mode (default: on)
|
|
458
459
|
- `--timeout INTEGER` — Timeout in seconds for `--wait` mode
|
|
460
|
+
- `--batch-size INTEGER` — Number of file ingestion requests to submit concurrently per window (default: `cores * 2`)
|
|
459
461
|
|
|
460
462
|
**Examples:**
|
|
461
463
|
|
|
@@ -481,7 +483,7 @@ gulp-cli ingest file my_op win_evtx /path/to/System.evtx --preview
|
|
|
481
483
|
# Reset operation data before ingest (destructive for collab/request data)
|
|
482
484
|
gulp-cli ingest file my_op win_evtx 'samples/win_evtx/*.evtx' --reset-operation
|
|
483
485
|
|
|
484
|
-
# Wait for completion
|
|
486
|
+
# Wait for completion (per-file progress is enabled by default)
|
|
485
487
|
gulp-cli ingest file my_op win_evtx 'samples/win_evtx/*.evtx' --wait
|
|
486
488
|
```
|
|
487
489
|
|
|
@@ -505,7 +507,9 @@ gulp-cli ingest file-to-source SOURCE_ID FILE [FILE...] [OPTIONS]
|
|
|
505
507
|
- `--plugin-params TEXT` — JSON object for plugin_params (overrides source defaults)
|
|
506
508
|
- `--flt TEXT` — JSON object for GulpIngestionFilter
|
|
507
509
|
- `--wait` — Wait for completion with progress
|
|
510
|
+
- `--show-per-file-progress / --no-show-per-file-progress` — Show one line per completed file request in `--wait` mode (default: on)
|
|
508
511
|
- `--timeout INTEGER` — Timeout in seconds for `--wait` mode
|
|
512
|
+
- `--batch-size INTEGER` — Number of file ingestion requests to submit concurrently per window (default: `cores * 2`)
|
|
509
513
|
|
|
510
514
|
**Examples:**
|
|
511
515
|
|
|
@@ -1017,6 +1021,7 @@ gulp-cli stats list OPERATION_ID [OPTIONS]
|
|
|
1017
1021
|
- Shows only ongoing stats (`--ongoing-only` enabled)
|
|
1018
1022
|
- Renders a live table (`--live` enabled)
|
|
1019
1023
|
- Default columns: `user_id`, `ws_id`, `req_id`, `status`, `req_type`, `time_updated`, `data`, `errors`
|
|
1024
|
+
- The `data` column shows human-readable source information for ingest stats when available
|
|
1020
1025
|
|
|
1021
1026
|
**Options:**
|
|
1022
1027
|
|
|
@@ -142,10 +142,10 @@ cap --plugin-params '{ "mapping_parameters": { "mapping_file": "pcap.json" } }'
|
|
|
142
142
|
### Bulk File Ingestion with Wildcard
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
|
-
# Ingest all .evtx files from directory
|
|
145
|
+
# Ingest all .evtx files from directory (default batch size is `cores * 2`)
|
|
146
146
|
gulp-cli ingest file incident-001 win_evtx '/evidence/**/*.evtx'
|
|
147
147
|
|
|
148
|
-
# Ingest from multiple locations
|
|
148
|
+
# Ingest from multiple locations (files are processed in alphabetical order)
|
|
149
149
|
gulp-cli ingest file incident-001 win_evtx '/suspect-machine/*.evtx' '/network-share/backups/*.evtx'
|
|
150
150
|
|
|
151
151
|
# Preview parser output without ingesting
|
|
@@ -158,7 +158,7 @@ gulp-cli ingest file incident-001 win_evtx '/suspect-machine/System.evtx' --prev
|
|
|
158
158
|
# Create operation for multi-source investigation
|
|
159
159
|
gulp-cli operation create incident-2026-001
|
|
160
160
|
|
|
161
|
-
# Ingest evidence from different sources concurrently
|
|
161
|
+
# Ingest evidence from different sources concurrently (per-file progress is shown by default)
|
|
162
162
|
gulp-cli ingest file incident-2026-001 win_evtx '/forensic/windows/*.evtx' --wait &
|
|
163
163
|
gulp-cli ingest file incident-2026-001 syslog '/forensic/linux/**/*.log' --wait &
|
|
164
164
|
gulp-cli ingest file incident-2026-001 pcap '/forensic/network/*.pcap' --wait &
|
|
@@ -195,10 +195,10 @@ gulp-cli ingest file incident-001 json '/logs/**/*.json' --create-operation
|
|
|
195
195
|
### Add More Evidence to Existing Source
|
|
196
196
|
|
|
197
197
|
```bash
|
|
198
|
-
# First ingestion creates data-2026-001 source
|
|
198
|
+
# First ingestion creates data-2026-001 source (default batch size is `cores * 2`)
|
|
199
199
|
gulp-cli ingest file incident-001 win_evtx /initial/evidence.evtx
|
|
200
200
|
|
|
201
|
-
# Later, add more files to same source
|
|
201
|
+
# Later, add more files to same source (per-file progress is shown by default)
|
|
202
202
|
gulp-cli ingest file-to-source data-2026-001 /additional/evidence.evtx --wait
|
|
203
203
|
|
|
204
204
|
# You can also ingest multiple files via glob
|
|
@@ -44,11 +44,13 @@ gulp-cli auth login --url http://localhost:8080 --username admin --password admi
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
This:
|
|
47
|
+
|
|
47
48
|
- Connects to your gULP instance
|
|
48
49
|
- Exchanges credentials for a token
|
|
49
50
|
- Stores the session in `~/.config/gulp-cli/config.json`
|
|
50
51
|
|
|
51
52
|
**Output should be:**
|
|
53
|
+
|
|
52
54
|
```
|
|
53
55
|
✓ Authentication successful
|
|
54
56
|
Token stored in ~/.config/gulp-cli/config.json
|
|
@@ -61,6 +63,7 @@ gulp-cli auth whoami
|
|
|
61
63
|
```
|
|
62
64
|
|
|
63
65
|
**Expected output:**
|
|
66
|
+
|
|
64
67
|
```
|
|
65
68
|
├─ User: admin
|
|
66
69
|
├─ Permissions: admin
|
|
@@ -102,6 +105,7 @@ gulp-cli operation list
|
|
|
102
105
|
```
|
|
103
106
|
|
|
104
107
|
**Expected output:**
|
|
108
|
+
|
|
105
109
|
```
|
|
106
110
|
╭────────────────────────────────────────────────────╮
|
|
107
111
|
│ OPERATIONS │
|
|
@@ -121,6 +125,7 @@ gulp-cli operation create my_investigation --description "Investigation into inc
|
|
|
121
125
|
```
|
|
122
126
|
|
|
123
127
|
**Expected output:**
|
|
128
|
+
|
|
124
129
|
```
|
|
125
130
|
✓ Operation created successfully
|
|
126
131
|
ID: my_investigation
|
|
@@ -165,6 +170,7 @@ gulp-cli ingest file my_investigation win_evtx /gulp/samples/win_evtx/System.evt
|
|
|
165
170
|
```
|
|
166
171
|
|
|
167
172
|
**Expected output:**
|
|
173
|
+
|
|
168
174
|
```
|
|
169
175
|
📥 Ingesting files...
|
|
170
176
|
✓ /gulp/samples/win_evtx/System.evtx
|
|
@@ -177,7 +183,7 @@ Documents queued for processing
|
|
|
177
183
|
gulp-cli ingest file my_investigation win_evtx '/gulp/samples/win_evtx/*.evtx'
|
|
178
184
|
```
|
|
179
185
|
|
|
180
|
-
This ingests all `.evtx` files
|
|
186
|
+
This ingests all `.evtx` files using the default batch size (`cores * 2`) and shows per-file progress by default.
|
|
181
187
|
|
|
182
188
|
### Preview Before Ingest
|
|
183
189
|
|
|
@@ -193,7 +199,7 @@ This runs parser preview without persisting documents.
|
|
|
193
199
|
gulp-cli ingest file my_investigation win_evtx '/gulp/samples/win_evtx/*.evtx' --wait
|
|
194
200
|
```
|
|
195
201
|
|
|
196
|
-
This shows a real-time progress bar while documents are being ingested.
|
|
202
|
+
This shows a real-time progress bar while documents are being ingested. Per-file progress is enabled by default; use `--no-show-per-file-progress` to suppress the per-file lines.
|
|
197
203
|
|
|
198
204
|
### Add Data to Existing Source
|
|
199
205
|
|
|
@@ -234,6 +240,7 @@ gulp-cli query raw my_investigation --q '{"query":{"match_all":{}}}'
|
|
|
234
240
|
```
|
|
235
241
|
|
|
236
242
|
**Expected output:**
|
|
243
|
+
|
|
237
244
|
```
|
|
238
245
|
╭────────────────────────────────────────────────────────╮
|
|
239
246
|
│ QUERY RESULTS │
|
|
@@ -74,3 +74,40 @@ The repository includes a matrix workflow that builds portable artifacts for:
|
|
|
74
74
|
- macOS `arm64`
|
|
75
75
|
|
|
76
76
|
Artifacts are uploaded from `.github/workflows/portable-bundles.yml`.
|
|
77
|
+
|
|
78
|
+
## practical usage examples
|
|
79
|
+
|
|
80
|
+
following are some practical usage examples of the portable bundles
|
|
81
|
+
|
|
82
|
+
### ingesting windows evtx files taken from a windows machine and ingesting them on a linux machine
|
|
83
|
+
|
|
84
|
+
#### step 1: take windows evtx files from a windows machine
|
|
85
|
+
|
|
86
|
+
1. Unzip the portable bundle on a USB stick and plug it into the windows machine
|
|
87
|
+
2. Open a command prompt and navigate to the gulp-cli portable bundle on the USB stick
|
|
88
|
+
3. Run the following command to generate the zip with evtx files
|
|
89
|
+
~~~bash
|
|
90
|
+
D:\> cd \path\to\gulp-cli-portable-windows-x64
|
|
91
|
+
|
|
92
|
+
D:\path\to\gulp-cli-portable-windows-x64> .\launch-windows.bat ingest zip-create ./evtx.zip C:\Windows\System32\winevt\Logs\
|
|
93
|
+
~~~
|
|
94
|
+
|
|
95
|
+
#### step 2: ingest the evtx files on a linux machine
|
|
96
|
+
|
|
97
|
+
> we assume the linux machine have gulp-cli installed and configured to connect to the gULP server, and the user have permissions to ingest data to the gULP server.
|
|
98
|
+
|
|
99
|
+
1. Go on the linux machine (which can connect to the gULP server) and plug in the USB stick with the portable bundle from above
|
|
100
|
+
2. Open a terminal and navigate to the gulp-cli portable bundle on the USB stick
|
|
101
|
+
3. Unzip the evtx.zip file to a local directory
|
|
102
|
+
~~~bash
|
|
103
|
+
$ cd /path/to/gulp-cli-portable-windows-x64
|
|
104
|
+
$ unzip evtx.zip
|
|
105
|
+
# you obtain a `Logs` directory with the evtx files
|
|
106
|
+
~~~
|
|
107
|
+
4. Run the following commands to ingest the evtx files to the gULP server
|
|
108
|
+
~~~bash
|
|
109
|
+
# authenticate to the gULP server (if not already authenticated)
|
|
110
|
+
gulp-cli auth login --url http://localhost:8080 --username admin --password admin
|
|
111
|
+
# ingest the evtx files to the gULP server, we assume a `test_operation` exists on the gULP server, and we want to ingest the evtx files to that operation
|
|
112
|
+
gulp-cli ingest file test_operation win_evtx ./Logs/*.evtx --wait --batch-size 64
|
|
113
|
+
~~~
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 1,
|
|
21
|
+
__version__ = version = '1.1.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 1, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gb7959a376'
|