Skip to content

Commit 9a3a5c5

Browse files
AvasamToufoolAlgomancerzalgo3
authored
Update dev branch with 2.0.0 (#203)
* First linting pass Configured VSCode and Markdownlint settings Added and configured the following linters as strict as I could: pylint, flake8, mypy, bandit, pyright Partially filled in some type stubs: cv2, imagehash, keyboard, pyautogui, pythonwin, win32helper [Breaking change] Using interpolation=cv2.INTER_NEAREST everywhere as it is the fastest interlpolation method Hide generated/compiled files SelectRegionWidget width and height as functions Added validate_images_before_parsing() to validate images both before maxFPS and starting autosplitter * Moved most settings to pyproject.toml and ran autopep8 * Removed mypy and Fixed import-outside-toplevel * Double quotes and pylint complete linting * Configured linting workflow * add pause after start image tip * Fix crash on LiveSplit open and missing link in error message * Merge * Fixed certificate error and random crash on open when compiled * Using python/typeshed/pull/6492 * PEP8 naming convention * Added build artifact * AutoSplitImage Class and simplified code Simplified and reduced image conversions Reduced duplicated code, especially in settings Build Artifact * Average FPS over all images with all actions * Added badges * Fixed "Select Window" not working for windows with negative coordinates Split screen_region in smaller functions WIP towards #94: No pop-up on loading settings with no capture window Don't stop/reset AutoSplit upon loosing capture window No pop-up on loosing capture window Don't allow selecting desktop. * Ability to recover window Fixed regressions: Fix crash on clising window mid-run Forgot to migrate split_delay to image.delay Removed dead load_pyqt_settings code Fixed dummy groups Pause time from filename not set correctly Setting hotkeys on load * Differentiate "undo/skip split" from "previous/next image" Skip/udo will now actually call command This makes grouping option obsolete as user now has finer control anyway UI is a bit cramped, but that should be resolved with UI revamp Updated README * Make Save Settings more intuitive Don't close if user has cancelled "saving sattings as" Removed more attributes from AutoSplit class Don't update last_successfully_loaded_settings_file_path if load was not successful "Save Settings As" defaults to the last_successfully_loaded_settings_file_path THEN the .exe When closing app, ue save_settings instead of save_settings_as * Initial UI update for 2.0.0. Add settings window. * Hooked new settings window to actual values (#151) * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group Co-authored-by: Austin <[email protected]> * Image comparison method and default delay time (#135) * hooked new settings window to actual values * Implemented image specific comparison method and default delay time. Closes #26 * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group * Fixed images comparison method defaulting to 0 rather than none Co-authored-by: Austin <[email protected]> * Support hotkeys with modifiers (#136) * hooked new settings window to actual values * Better "seconds remaining" text * Support modifiers the same way LiveSplit does. Closes #34 * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group Co-authored-by: Austin <[email protected]> * Linted pyi files (#137) * hooked new settings window to actual values * Linted pyi files * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group * Turn off pyright(reportFunctionMemberAccess) in favor of pylint(no-member) * Massively sped up Flake tests Removed 400+kb of type stubs * Centralized qWait typing fix * Autosort imports * Resynced settings Co-authored-by: Austin <[email protected]> * Toml profiles + Python 3.10 (#140) * Typings update * Full setup and configuration update * User Profile, Revamped settings, Start image fixes & __auto_splitter method refactor * Added new Capture Method system for more capture options + utils (#141) * Add D3DShot types from python/typeshed#8652 * New Capture Method system * Warning if AutoSplit is already open + Build number + Splash Screen + Doc update + Fixes (#161) * Doc + Setup update * typings update * Warning if AutoSplit is already open + Build number + Splash Screen * Target the right repository/fork * Fix #155 * Actions shortcut and prevent double open window Closes #154 * ImageHash hotfix * Toggle autoreset image + ui adjustments (#164) * merge master into 2.0.0 (#165) * update credits * oops * Toggle autoreset image (#162) * Fix #52 Comparisons with empty masks * Save 'Check For Updates On Open' immediatly * showErrorSignal to show error message box from another thread * Fixes #86 Stop uncaught exceptions from silently crashing the app * Fixes #86 Stop uncaught exceptions from silently crashing the app * Fix #114, try to load Start Image on browse & load settings, don't allow a start image to load if hotkeys are not set. * First linting pass Configured VSCode and Markdownlint settings Added and configured the following linters as strict as I could: pylint, flake8, mypy, bandit, pyright Partially filled in some type stubs: cv2, imagehash, keyboard, pyautogui, pythonwin, win32helper [Breaking change] Using interpolation=cv2.INTER_NEAREST everywhere as it is the fastest interlpolation method Hide generated/compiled files SelectRegionWidget width and height as functions Added validate_images_before_parsing() to validate images both before maxFPS and starting autosplitter * Moved most settings to pyproject.toml and ran autopep8 * Removed mypy and Fixed import-outside-toplevel * Double quotes and pylint complete linting * Configured linting workflow * Async check for updates * Fix crash on LiveSplit open and missing link in error message * Merge * Fixed certificate error and random crash on open when compiled * Using python/typeshed/pull/6492 * PEP8 naming convention * Added build artifact * AutoSplitImage Class and simplified code Simplified and reduced image conversions Reduced duplicated code, especially in settings Build Artifact * Average FPS over all images with all actions * Added badges * Fixed "Select Window" not working for windows with negative coordinates Split screen_region in smaller functions WIP towards #94: No pop-up on loading settings with no capture window Don't stop/reset AutoSplit upon loosing capture window No pop-up on loosing capture window Don't allow selecting desktop. * Ability to recover window Fixed regressions: Fix crash on clising window mid-run Forgot to migrate split_delay to image.delay Removed dead load_pyqt_settings code Fixed dummy groups Pause time from filename not set correctly Setting hotkeys on load * Differentiate "undo/skip split" from "previous/next image" Skip/udo will now actually call command This makes grouping option obsolete as user now has finer control anyway UI is a bit cramped, but that should be resolved with UI revamp Updated README * Make Save Settings more intuitive Don't close if user has cancelled "saving sattings as" Removed more attributes from AutoSplit class Don't update last_successfully_loaded_settings_file_path if load was not successful "Save Settings As" defaults to the last_successfully_loaded_settings_file_path THEN the .exe When closing app, ue save_settings instead of save_settings_as * Initial UI update for 2.0.0. Add settings window. * Hooked new settings window to actual values (#151) * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group Co-authored-by: Austin <[email protected]> * Image comparison method and default delay time (#135) * hooked new settings window to actual values * Implemented image specific comparison method and default delay time. Closes #26 * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group * Fixed images comparison method defaulting to 0 rather than none Co-authored-by: Austin <[email protected]> * Support hotkeys with modifiers (#136) * hooked new settings window to actual values * Better "seconds remaining" text * Support modifiers the same way LiveSplit does. Closes #34 * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group Co-authored-by: Austin <[email protected]> * Linted pyi files (#137) * hooked new settings window to actual values * Linted pyi files * Initial UI update for 2.0.0. Add settings window. * hooked new settings window to actual values * Better "seconds remaining" text * Undo split goes to the end of the group * Turn off pyright(reportFunctionMemberAccess) in favor of pylint(no-member) * Massively sped up Flake tests Removed 400+kb of type stubs * Centralized qWait typing fix * Autosort imports * Resynced settings Co-authored-by: Austin <[email protected]> * Toml profiles + Python 3.10 (#140) * Typings update * Full setup and configuration update * User Profile, Revamped settings, Start image fixes & __auto_splitter method refactor * Added new Capture Method system for more capture options + utils (#141) * Add D3DShot types from python/typeshed#8652 * New Capture Method system * Warning if AutoSplit is already open + Build number + Splash Screen + Doc update + Fixes (#161) * Doc + Setup update * typings update * Warning if AutoSplit is already open + Build number + Splash Screen * Target the right repository/fork * Fix #155 * Actions shortcut and prevent double open window Closes #154 * ImageHash hotfix * Toggle autoreset image + ui adjustments Co-authored-by: Austin <[email protected]> * Revert "Toggle autoreset image (#162)" (#163) This reverts commit 9e48c51. Co-authored-by: Samuel T <[email protected]> * test building without --windowed * First round of QA testing fixes (#171) * Added sonarcloud.properties * Remove duplicate DeleteDC & allow errors to show May fix #167 * Rename CaptureMethodInterface to CaptureMethodBase * Added autofix script and faster linting * Disable device probing for now. Fixes #169 * Updated settings widget text and workaround to fix #170 * Bump AUTOSPLIT_VERSION * Next Image even if it's not possible to split Fixes #168 * Fix build * First round of QA testing fixes + build fixes (#172) * back to windowed * Fix #47, updated some configs and types from typeshed (#173) * Updated configs * Updated typings * Updated some code * Fix #47 * Revert mypy stuff * More consistent formatting (#174) * More consistent formatting and types - Added autofixes to the lint script. - Added a quotes autofixer using `unify` - Added a trailing comma checker and autofixer - Applied trailing commas - Ordered requirements alphabetically - Ensure the last version of D3DShot is used (0.1.5, not 0.1.3) - Remove configuration for unused linters (black/prettier/sonarlint) - Updated types from typeshed * Updated virtual camera link * Update types and pylint * Batch fixes (#176) * pyright update * lint-and-build cover more files * Get IDirect3dDevice from LearningModelDevice Closes #175 Co-authored-by: Algomancer <[email protected]> * Ensure we're using the right camera size And not OpenCV's default 640x480 * Fix rounding error in displayed decimal * Revert "back to windowed" This reverts commit 9553271. * Fix highest similarity for start image * Fix split below treshold when image is not valid * Detect gray frames from OBS-Camera Co-authored-by: Algomancer <[email protected]> * Adaptive resizing for masked images (#177) Especially in the case of 1080p or higher, if the non-transparent area of the mask image used for the split is small, resizing the entire image to 320x240 will lose the information inside the mask. One idea to prevent this is to adaptively determine the target size according to the number of nonzero elements in the alpha channel of the split image. At least for the L2 norm and histogram, such a change would not affect performance since they only use information about the mask's interior. Masks are not recommended with pHash anyway. Co-authored-by: zalgo3 <[email protected]> * Bump opencv-python to 4.6 (#178) * Point python_grabber to andreaschiavinato (#179) * Batch of updates and fixes for 2.0.0 (#188) * Point python_grabber to andreaschiavinato * Added summary of histogram * Backport changes from linux branch * Improved pyright and formatters usage * Config updates * Fix links * Disable next/previous while delaying * proper `is_running` variable * Fix loading and clearing of start image * Rename "already_running" to "already_open" * Fix delay intervals * Add support for start image pause time * Default to MediaCapture's d3d * Re-enable buttons after delay * Beta 1 (feature-freeze, bugfixes only) * Updated configs to use Python 3.11 (#180) * Option to build without build number + Adaptive mask fix (#189) * Option to build without build number * Fix repo url from workflow build * Resize mask with image * Pin more dependencies, Speed-up installs and update comments * Add mypy config for optional support. * pin requests and allow pyright warnings (#193) * Fix B028 (#194) * Fixed run_start_time with start image pause loop (#197) Also fixed run_start_time not accounting for the delay in parsing images * Disable Capture device: dropdown when Capture method: is not Video Capture Device (#198) Fix issue with programatically setting capture_device_combobox index * Fix start issue after finishing splits (#199) * Fix start issue after finishing splits - `self.is_running = False` at the end of `__auto_splitter` - Revert moving initialization of some values - Move `self.run_start_time = time()` before parsing images * Update hardcoded references to repo name * Change default capture method to WGA (#200) * Delete example1.6.0.gif * 2.0.0 gif * update gif to 2.0.0 * Update some docs and fix lint issue (#202) * Update docs, comments and typings Add link to dev builds bump beta version Update flake8 checks "fix" typing issue caused by PyQt6 incorrect callable * Slight build improvement * Fix D3DDD issue on hybrid GPU laptops (#205) * Fix D3DDD issue on hybrid gpu laptops 1. Some Desktop Duplication setup was done in advance, even if that method won't be used 2. Hybrid GPU laptops can have issues with D3D Desktop Duplication. The issue and a workaround is now documented * Fixed some blocking typing and linting issues * Fix obs-camera image freezing for a sec when it gives a blank frame (#206) --------- Co-authored-by: Austin <[email protected]> Co-authored-by: Algomancer <[email protected]> Co-authored-by: zalgo3 <[email protected]>
1 parent ab9b2c0 commit 9a3a5c5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+11287
-6299
lines changed

.flake8

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
[flake8]
2+
color=always
3+
max-line-length=120
4+
; Auto generated
5+
exclude=src/gen/, typings/cv2-stubs/__init__.pyi
6+
ignore=
7+
; Linebreak before binary operator
8+
W503,
9+
; Closing bracket may not match multi-line method invocation style (enforced by add-trailing-comma)
10+
E124,
11+
; Allow imports at the bottom of file
12+
E402,
13+
; Not using typing_extensions
14+
Y026,
15+
; contextlib.suppress is roughly 3x slower than try/except
16+
SIM105,
17+
; False positives for attribute docstrings
18+
CCE001,
19+
per-file-ignores=
20+
; Quotes
21+
; Allow ... on same line as class
22+
; Allow ... on same line as def
23+
; Line too long
24+
; Naming conventions can't be controlled for external libraries
25+
; Variable names can't be controlled for external libraries
26+
; Argument names can't be controlled for external libraries
27+
; Attribute names can't be controlled for external libraries
28+
; False positive Class level expression with elipsis
29+
; Type re-exports
30+
; mypy 3.7 Union issue
31+
*.pyi: Q000,E701,E704,E501,N8,A001,A002,A003,CCE002,F401,Y037
32+
; PyQt methods
33+
ignore-names=closeEvent,paintEvent,keyPressEvent,mousePressEvent,mouseMoveEvent,mouseReleaseEvent
34+
; McCabe max-complexity is also taken care of by Pylint and doesn't fail the build there
35+
; So this is the hard limit
36+
max-complexity=32
37+
inline-quotes=double

.github/workflows/codeql-analysis.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# For most projects, this workflow file will not need changing; you simply need
2+
# to commit it to your repository.
3+
#
4+
# You may wish to alter this file to override the set of languages analyzed,
5+
# or to provide custom queries or build logic.
6+
#
7+
# ******** NOTE ********
8+
# We have attempted to detect the languages in your repository. Please check
9+
# the `language` matrix defined below to confirm you have the correct set of
10+
# supported CodeQL languages.
11+
#
12+
name: "CodeQL"
13+
14+
on:
15+
push:
16+
branches: [main, master, develop, dev, 2.0.0]
17+
pull_request:
18+
# The branches below must be a subset of the branches above
19+
branches: [develop, dev, 2.0.0]
20+
schedule:
21+
- cron: "26 13 * * 6"
22+
23+
jobs:
24+
analyze:
25+
name: Analyze
26+
runs-on: ubuntu-latest
27+
28+
strategy:
29+
fail-fast: false
30+
matrix:
31+
language: ["python"]
32+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
33+
# Learn more:
34+
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
35+
36+
steps:
37+
- name: Checkout repository
38+
uses: actions/checkout@v2
39+
40+
# Initializes the CodeQL tools for scanning.
41+
- name: Initialize CodeQL
42+
uses: github/codeql-action/init@v2
43+
with:
44+
languages: ${{ matrix.language }}
45+
# If you wish to specify custom queries, you can do so here or in a config file.
46+
# By default, queries listed here will override any specified in a config file.
47+
# Prefix the list here with "+" to use these queries and those in the config file.
48+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
49+
50+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
51+
# If this step fails, then you should remove it and run the build manually (see below)
52+
- name: Autobuild
53+
uses: github/codeql-action/autobuild@v2
54+
55+
# ℹ️ Command-line programs to run using the OS shell.
56+
# 📚 https://git.io/JvXDl
57+
58+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
59+
# and modify them (or add more) to build your code if your project
60+
# uses a compiled language
61+
62+
#- run: |
63+
# make bootstrap
64+
# make release
65+
66+
- name: Perform CodeQL Analysis
67+
uses: github/codeql-action/analyze@v2

.github/workflows/lint-and-build.yml

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
2+
name: Lint and build
3+
on:
4+
workflow_dispatch: # Allows manual builds
5+
inputs:
6+
excludeBuildNumber:
7+
description: "Exclude build number"
8+
required: true
9+
default: false
10+
type: boolean
11+
push:
12+
branches:
13+
- main
14+
- master
15+
paths:
16+
- "**.py"
17+
- "**.ui"
18+
- ".github/workflows/lint-and-build.yml"
19+
- "**/requirements.txt"
20+
pull_request:
21+
branches:
22+
- main
23+
- master
24+
- dev*
25+
- 2.0.0
26+
paths:
27+
- "**.py"
28+
- "**.pyi"
29+
- "**.ui"
30+
- ".github/workflows/lint-and-build.yml"
31+
- "**/requirements*.txt"
32+
33+
env:
34+
GITHUB_HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name }}
35+
GITHUB_EXCLUDE_BUILD_NUMBER: ${{ inputs.excludeBuildNumber }}
36+
37+
jobs:
38+
isort:
39+
runs-on: windows-latest
40+
steps:
41+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
42+
uses: actions/checkout@v3
43+
- name: Set up Python 3.11
44+
uses: actions/setup-python@v4
45+
with:
46+
python-version: "3.11"
47+
cache: "pip"
48+
cache-dependency-path: "scripts/requirements*.txt"
49+
- run: scripts/install.ps1
50+
shell: pwsh
51+
- name: Analysing the code with isort
52+
run: isort src/ typings/ --check-only
53+
add-trailing-comma:
54+
runs-on: windows-latest
55+
steps:
56+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
57+
uses: actions/checkout@v3
58+
- name: Set up Python 3.11
59+
uses: actions/setup-python@v4
60+
with:
61+
python-version: "3.11"
62+
- run: pip install add-trailing-comma
63+
- name: Analysing the code with add-trailing-comma
64+
run: add-trailing-comma $(git ls-files '**.py*') --py36-plus
65+
Bandit:
66+
# Bandit only matters on the version deployed. Platform checks are ignored
67+
runs-on: windows-latest
68+
steps:
69+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
70+
uses: actions/checkout@v3
71+
- name: Set up Python 3.11
72+
uses: actions/setup-python@v4
73+
with:
74+
python-version: "3.11"
75+
- run: pip install bandit
76+
- name: Analysing the code with Bandit
77+
run: bandit src/ -n 1 --severity-level medium --recursive
78+
Pyright:
79+
runs-on: windows-latest
80+
strategy:
81+
fail-fast: false
82+
# Pyright is version and platform sensible
83+
matrix:
84+
python-version: ["3.9", "3.10", "3.11"]
85+
steps:
86+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
87+
uses: actions/checkout@v3
88+
- name: Set up Python ${{ matrix.python-version }}
89+
uses: actions/setup-python@v4
90+
with:
91+
python-version: ${{ matrix.python-version }}
92+
cache: "pip"
93+
cache-dependency-path: "scripts/requirements*.txt"
94+
- run: scripts/install.ps1
95+
shell: pwsh
96+
- name: Analysing the code with Pyright
97+
uses: jakebailey/pyright-action@v1
98+
with:
99+
working-directory: src/
100+
Pylint:
101+
runs-on: windows-latest
102+
strategy:
103+
fail-fast: false
104+
# Pylint is version and platform sensible
105+
matrix:
106+
python-version: ["3.9", "3.10", "3.11"]
107+
steps:
108+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
109+
uses: actions/checkout@v3
110+
- name: Set up Python ${{ matrix.python-version }}
111+
uses: actions/setup-python@v4
112+
with:
113+
python-version: ${{ matrix.python-version }}
114+
cache: "pip"
115+
cache-dependency-path: "scripts/requirements*.txt"
116+
- run: scripts/install.ps1
117+
shell: pwsh
118+
- name: Analysing the code with Pylint
119+
run: pylint src/ --reports=y --output-format=colorized
120+
Flake8:
121+
runs-on: windows-latest
122+
strategy:
123+
fail-fast: false
124+
# Flake8 is tied to the version of Python on which it runs. Platform checks are ignored
125+
matrix:
126+
python-version: ["3.9", "3.10", "3.11"]
127+
steps:
128+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
129+
uses: actions/checkout@v3
130+
- name: Set up Python ${{ matrix.python-version }}
131+
uses: actions/setup-python@v4
132+
with:
133+
python-version: ${{ matrix.python-version }}
134+
cache: "pip"
135+
cache-dependency-path: "scripts/requirements*.txt"
136+
- run: scripts/install.ps1
137+
shell: pwsh
138+
- name: Analysing the code with Flake8
139+
run: flake8 src/ typings/
140+
Build:
141+
runs-on: windows-latest
142+
strategy:
143+
fail-fast: false
144+
# Only the Python version we plan on shipping matters.
145+
matrix:
146+
python-version: ["3.10", "3.11"]
147+
steps:
148+
- name: Checkout ${{ github.repository }}/${{ github.ref }}
149+
uses: actions/checkout@v3
150+
- name: Set up Python ${{ matrix.python-version }}
151+
uses: actions/setup-python@v4
152+
with:
153+
python-version: ${{ matrix.python-version }}
154+
cache: "pip"
155+
cache-dependency-path: "scripts/requirements.txt"
156+
- run: scripts/install.ps1
157+
shell: pwsh
158+
- run: scripts/build.ps1
159+
shell: pwsh
160+
- name: Upload Build Artifact
161+
uses: actions/upload-artifact@v3
162+
with:
163+
name: AutoSplit (Python ${{ matrix.python-version }})
164+
path: dist/AutoSplit*
165+
if-no-files-found: error
166+
- name: Upload Build logs
167+
uses: actions/upload-artifact@v3
168+
with:
169+
name: Build logs (Python ${{ matrix.python-version }})
170+
path: |
171+
build/AutoSplit/*.toc
172+
build/AutoSplit/*.txt
173+
build/AutoSplit/*.html
174+
if-no-files-found: error

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
22

3+
# Caches
4+
.cache/
5+
36
# Byte-compiled / optimized / DLL files
47
__pycache__/
58

69
# Distribution / packaging
710
env/
811
build/
912
dist/
13+
*.prof
14+
# Generated
15+
**/gen/*.py
16+
!**/gen/*.pyi
1017

1118
# PyInstaller
1219
# Usually these files are written by a python script from a template
@@ -16,3 +23,4 @@ dist/
1623

1724
# Dev settings
1825
*.pkl
26+
settings.toml

.markdownlint.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"default": true,
3+
"MD001": false,
4+
"MD013": false,
5+
"MD025": false
6+
}

.sonarcloud.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sonar.python.version=3.9, 3.10, 3.11

.vscode/extensions.json

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,41 @@
1+
// Keep in alphabetical order
12
{
23
"recommendations": [
3-
"ms-python.vscode-pylance",
4-
"ms-python.python",
5-
"sonarsource.sonarlint-vscode",
4+
"bungcip.better-toml",
65
"davidanson.vscode-markdownlint",
6+
"eamodio.gitlens",
7+
"emeraldwalk.runonsave",
8+
"ms-python.autopep8",
9+
"ms-python.flake8",
10+
"ms-python.isort",
11+
"ms-python.pylint",
12+
"ms-python.python",
13+
"ms-python.vscode-pylance",
14+
"ms-vscode.powershell",
15+
"pkief.material-icon-theme",
16+
"redhat.vscode-xml",
17+
"redhat.vscode-yaml",
718
"shardulm94.trailing-spaces",
8-
"eamodio.gitlens"
919
],
1020
"unwantedRecommendations": [
21+
// Must disable in this workspace //
22+
// https://github.com/microsoft/vscode/issues/40239 //
23+
//
24+
// VSCode has implemented an optimized version
25+
"coenraads.bracket-pair-colorizer",
26+
"coenraads.bracket-pair-colorizer-2",
27+
// Obsoleted by Pylance
1128
"ms-pyright.pyright",
12-
"esbenp.prettier-vscode"
13-
]
29+
// Not configurable per workspace, tends to conflict with other linters
30+
"sonarsource.sonarlint-vscode",
31+
//
32+
// Don't recommend to autoinstall //
33+
//
34+
// We use autopep8
35+
"ms-python.black-formatter",
36+
// This is a Git project
37+
"johnstoncode.svn-scm",
38+
// Prefer using VSCode itself as a text editor
39+
"vscodevim.vim",
40+
],
1441
}

0 commit comments

Comments
 (0)