wexample-wex-addon-dev-python 0.0.40__py3-none-any.whl → 0.0.43__py3-none-any.whl

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.
@@ -0,0 +1,58 @@
1
+ Metadata-Version: 2.1
2
+ Name: wexample-wex-addon-dev-python
3
+ Version: 0.0.43
4
+ Summary: Python dev addon for wex
5
+ Author-Email: weeger <contact@wexample.com>
6
+ License: MIT
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Project-URL: homepage, https://github.com/wexample/python-wex-dev-python
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: pydantic<3,>=2
13
+ Requires-Dist: pylint
14
+ Requires-Dist: pyright
15
+ Requires-Dist: wexample-filestate-python==0.0.39
16
+ Requires-Dist: wexample-wex-addon-app==0.0.41
17
+ Requires-Dist: wexample-wex-core==6.0.43
18
+ Provides-Extra: dev
19
+ Requires-Dist: pytest; extra == "dev"
20
+ Description-Content-Type: text/markdown
21
+
22
+ # wexample-wex-addon-dev-python
23
+
24
+ Python dev addon for wex
25
+
26
+ Version: 0.0.41
27
+
28
+ ## Requirements
29
+
30
+ - Python >=3.10
31
+
32
+ ## Dependencies
33
+
34
+ - pydantic>=2,<3
35
+ - pylint
36
+ - pyright
37
+ - wexample-filestate-python==0.0.37
38
+ - wexample-wex-addon-app==0.0.39
39
+ - wexample-wex-core==6.0.41
40
+
41
+ ## Installation
42
+
43
+ ```bash
44
+ pip install wexample-wex-addon-dev-python
45
+ ```
46
+
47
+ ## Links
48
+
49
+ - Homepage: https://github.com/wexample/python-wex-dev-python
50
+
51
+ ## License
52
+
53
+ MIT
54
+ ## Credits
55
+
56
+ This package has been developed by [Wexample](https://wexample.com), a collection of tools and utilities to streamline development workflows.
57
+
58
+ Visit [wexample.com](https://wexample.com) to discover more tools and resources for efficient development.
@@ -0,0 +1,5 @@
1
+ wexample_wex_addon_dev_python-0.0.43.dist-info/METADATA,sha256=-CZaOJi_qz3KPVeRPk1X-tv1ilIGZRlJeL6innF2ITY,1401
2
+ wexample_wex_addon_dev_python-0.0.43.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
3
+ wexample_wex_addon_dev_python-0.0.43.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
+ wexample_wex_addon_dev_python/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ wexample_wex_addon_dev_python-0.0.43.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: pdm-backend (2.4.5)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+
3
+ [gui_scripts]
4
+
@@ -1,44 +0,0 @@
1
- from wexample_wex_core.common.kernel import Kernel
2
-
3
-
4
- def _code_check_mypy(kernel: "Kernel", file_path: str) -> bool:
5
- """Check a Python file using mypy for static type checking.
6
-
7
- Args:
8
- kernel: The application kernel
9
- file_path: Path to the Python file to check
10
-
11
- Returns:
12
- bool: True if check passes, False otherwise
13
- """
14
- import sys
15
-
16
- # Import mypy modules
17
- from mypy import build
18
- from mypy.modulefinder import BuildSource
19
- from mypy.options import Options
20
-
21
- # Configure mypy options
22
- options = Options()
23
- options.python_version = sys.version_info[:2]
24
- options.show_traceback = True
25
- options.disallow_untyped_defs = True
26
- options.disallow_incomplete_defs = True
27
-
28
- # Ignore import as file might be placed anywhere, we have no more context.
29
- options.ignore_missing_imports = True
30
-
31
- # Build and check the file
32
- source = BuildSource(path=file_path, module=None, text=None)
33
- result = build.build(sources=[source], options=options, alt_lib_path=None)
34
- if result.errors:
35
- kernel.io.log_indent_up()
36
- kernel.io.error(f"Mypy errors:")
37
- kernel.io.log_indent_up()
38
-
39
- for error in result.errors:
40
- kernel.io.error(message=error, symbol=False)
41
-
42
- kernel.io.log_indent_down(number=2)
43
- return False
44
- return True
@@ -1,106 +0,0 @@
1
- from typing import TYPE_CHECKING
2
-
3
- if TYPE_CHECKING:
4
- from wexample_wex_core.common.execution_context import ExecutionContext
5
-
6
-
7
- def _code_check_pylint(context: "ExecutionContext", file_path: str) -> bool:
8
- """Check a Python file using pylint for code quality.
9
-
10
- Args:
11
- kernel: The application kernel
12
- file_path: Path to the Python file to check
13
-
14
- Returns:
15
- bool: True if check passes, False otherwise
16
- """
17
- import json
18
- import subprocess
19
- import sys
20
-
21
- # Use subprocess to capture pylint output
22
- # This avoids issues with pylint's direct printing to stdout
23
- # List of warnings to disable
24
- disabled_warnings = [
25
- "missing-module-docstring",
26
- "import-outside-toplevel",
27
- "no-name-in-module",
28
- "broad-exception-caught",
29
- "c-extension-no-member",
30
- "line-too-long",
31
- ]
32
-
33
- cmd = [
34
- sys.executable,
35
- "-m",
36
- "pylint",
37
- file_path,
38
- "--output-format=json",
39
- f"--disable={','.join(disabled_warnings)}",
40
- ]
41
- process = subprocess.run(cmd, capture_output=True, text=True, check=False)
42
-
43
- # Get the output from stdout
44
- json_output = process.stdout.strip()
45
-
46
- # If no output or invalid JSON, return empty list
47
- if not json_output:
48
- context.io.success(f"No pylint issues found in {file_path}")
49
- return True
50
-
51
- # Parse the JSON output
52
- results = json.loads(json_output)
53
-
54
- # Filter messages by type
55
- errors = [msg for msg in results if msg.get("type") in ("error", "fatal")]
56
- warnings = [msg for msg in results if msg.get("type") == "warning"]
57
- conventions = [
58
- msg for msg in results if msg.get("type") in ("convention", "refactor", "info")
59
- ]
60
-
61
- # Display results if any issues found
62
- if errors or warnings or conventions:
63
- # Display errors
64
- if errors:
65
- context.io.log_indent_up()
66
- context.io.error(f"Pylint errors:")
67
- context.io.log_indent_up()
68
-
69
- for error in errors:
70
- context.io.error(
71
- message=f"Line {error.get('line')}: "
72
- f"{error.get('message')} ({error.get('symbol')})",
73
- symbol=False,
74
- )
75
-
76
- context.io.log_indent_down(number=2)
77
-
78
- # Display warnings with detailed logging
79
- if warnings:
80
- context.io.log_indent_up()
81
- context.io.warning(f"Pylint warnings:")
82
- context.io.log_indent_up()
83
-
84
- for warning in warnings:
85
- context.io.warning(
86
- f"Line {warning.get('line')}: "
87
- f"{warning.get('message')} ({warning.get('symbol')})",
88
- symbol=False,
89
- )
90
- context.io.properties(warning)
91
-
92
- context.io.log_indent_down(number=2)
93
- # Display conventions
94
- if conventions:
95
- context.io.info("Conventions:")
96
- for convention in conventions:
97
- context.io.base(
98
- message=f" Line {convention.get('line')}: "
99
- f"{convention.get('message')} ({convention.get('symbol')})"
100
- )
101
-
102
- # Only consider errors as failures
103
- if errors:
104
- return False
105
- return True
106
- return True
@@ -1,99 +0,0 @@
1
- from wexample_wex_core.common.kernel import Kernel
2
-
3
-
4
- def _code_check_pyright(kernel: "Kernel", file_path: str) -> bool:
5
- """Check a Python file using pyright for static type checking.
6
-
7
- Args:
8
- kernel: The application kernel
9
- file_path: Path to the Python file to check
10
-
11
- Returns:
12
- bool: True if check passes, False otherwise
13
- """
14
- import json
15
- import subprocess
16
- import sys
17
-
18
- # Use subprocess to run pyright
19
- cmd = [sys.executable, "-m", "pyright", file_path, "--outputjson"]
20
- process = subprocess.run(cmd, capture_output=True, text=True, check=False)
21
-
22
- # Get the output from stdout
23
- json_output = process.stdout.strip()
24
-
25
- # If command failed or no output, handle the error
26
- if process.returncode != 0 and not json_output:
27
- kernel.io.error(f"Pyright failed to run on {file_path}")
28
- if process.stderr:
29
- kernel.io.error(f"Error: {process.stderr}")
30
- return False
31
-
32
- # If no output, assume success
33
- if not json_output:
34
- kernel.io.success(f"No pyright issues found in {file_path}")
35
- return True
36
-
37
- # Parse the JSON output
38
- results = json.loads(json_output)
39
-
40
- # Extract diagnostics
41
- diagnostics = results.get("diagnostics", [])
42
-
43
- # Filter by severity
44
- errors = [diag for diag in diagnostics if diag.get("severity") == "error"]
45
- warnings = [diag for diag in diagnostics if diag.get("severity") == "warning"]
46
- info = [diag for diag in diagnostics if diag.get("severity") == "information"]
47
-
48
- # Display results if any issues found
49
- if errors or warnings or info:
50
- # Display errors
51
- if errors:
52
- kernel.io.log_indent_up()
53
- kernel.io.error(f"Pyright errors:")
54
-
55
- for error in errors:
56
- line = error.get("range", {}).get("start", {}).get("line", 0) + 1
57
- message = error.get("message", "Unknown error")
58
- rule = error.get("rule", "")
59
- rule_text = f" ({rule})" if rule else ""
60
- kernel.io.error(f"Line {line}: {message}{rule_text}", symbol=False)
61
- kernel.io.properties(error)
62
-
63
- kernel.io.log_indent_down(number=2)
64
-
65
- # Display warnings
66
- if warnings:
67
- kernel.io.log_indent_up()
68
- kernel.io.warning(f"Pyright warnings:")
69
-
70
- for warning in warnings:
71
- line = warning.get("range", {}).get("start", {}).get("line", 0) + 1
72
- message = warning.get("message", "Unknown warning")
73
- rule = warning.get("rule", "")
74
- rule_text = f" ({rule})" if rule else ""
75
- kernel.io.warning(f"Line {line}: {message}{rule_text}", symbol=False)
76
- kernel.io.properties(warning)
77
-
78
- kernel.io.log_indent_down(number=2)
79
-
80
- # Display information
81
- if info:
82
- kernel.io.log_indent_up()
83
- kernel.io.info(f"Pyright information:")
84
- kernel.io.log_indent_up()
85
-
86
- for item in info:
87
- line = item.get("range", {}).get("start", {}).get("line", 0) + 1
88
- message = item.get("message", "Unknown info")
89
- rule = item.get("rule", "")
90
- rule_text = f" ({rule})" if rule else ""
91
- kernel.io.info(f"Line {line}: {message}{rule_text}", symbol=False)
92
- kernel.io.properties(item)
93
-
94
- kernel.io.log_indent_down(number=2)
95
-
96
- # Only consider errors as failures
97
- if errors:
98
- return False
99
- return True
@@ -1,103 +0,0 @@
1
- from typing import Optional, TYPE_CHECKING
2
-
3
- from wexample_wex_core.const.middleware import MIDDLEWARE_OPTION_VALUE_OPTIONAL, MIDDLEWARE_OPTION_VALUE_ALLWAYS
4
- from wexample_wex_core.decorator.command import command
5
- from wexample_wex_core.decorator.middleware import middleware
6
- from wexample_wex_core.decorator.option import option
7
- from wexample_wex_core.decorator.option_stop_on_failure import option_stop_on_failure
8
-
9
- if TYPE_CHECKING:
10
- from wexample_wex_core.common.execution_context import ExecutionContext
11
-
12
-
13
- # TODO working command: bash cli/wex python::code/check --file ../../pip/wex-core/wexample_wex_core/ -sof
14
- @option(
15
- name="tool",
16
- type=str,
17
- required=False,
18
- description="Specific tool to run (mypy, pylint, pyright). If not specified, all tools will be run.",
19
- )
20
- @option_stop_on_failure()
21
- @middleware(
22
- name="each_python_file",
23
- should_exist=True,
24
- expand_glob=True,
25
- stop_on_failure=MIDDLEWARE_OPTION_VALUE_OPTIONAL,
26
- recursive=True,
27
- parallel=MIDDLEWARE_OPTION_VALUE_OPTIONAL,
28
- show_progress=MIDDLEWARE_OPTION_VALUE_ALLWAYS
29
- )
30
- # TODO
31
- # - Créer des commandes de test
32
- # - Les outils utilisent des méthodes pour exécuter des commandes shell, on peut les wrap dans des premier helpers
33
- # - Dans les commandes de test:
34
- # > teste l'appel de commandes en interne
35
- # > teste du prompting et des context de prompt et du nesting
36
- @command()
37
- def python__code__check(
38
- context: "ExecutionContext",
39
- file: str,
40
- tool: Optional[str] = None,
41
- stop_on_failure: bool = True,
42
- parallel: bool = True,
43
- ) -> bool:
44
- """Check a Python file using various code quality tools."""
45
- from wexample_wex_addon_dev_python.commands.code.check.mypy import _code_check_mypy
46
- from wexample_helpers.helpers.cli import cli_make_clickable_path
47
- from wexample_wex_addon_dev_python.commands.code.check.pylint import (
48
- _code_check_pylint,
49
- )
50
- from wexample_wex_addon_dev_python.commands.code.check.pyright import (
51
- _code_check_pyright,
52
- )
53
-
54
- # Map tool names to their check functions
55
- tool_map = {
56
- "mypy": _code_check_mypy,
57
- "pylint": _code_check_pylint,
58
- "pyright": _code_check_pyright,
59
- }
60
-
61
- # Determine which tools to run
62
- if tool and tool.lower() in tool_map:
63
- # Run only the specified tool
64
- check_functions = [tool_map[tool.lower()]]
65
- else:
66
- # Run all tools if no specific tool is specified or if the specified tool is invalid
67
- check_functions = [
68
- _code_check_mypy,
69
- _code_check_pylint,
70
- _code_check_pyright,
71
- ]
72
-
73
- # Track overall success
74
- all_checks_passed = True
75
-
76
- # Run each check function
77
- for check_function in check_functions:
78
- context.io.title(check_function.__name__)
79
- context.io.log_indent_up()
80
-
81
- context.io.log(
82
- f'🐍 Python: {cli_make_clickable_path(context.kernel.host_workdir.get_resolved_target(file))}'
83
- )
84
-
85
- check_result = check_function(context, file)
86
-
87
- if check_result:
88
- context.io.success(f"No critical issue found for {check_function.__name__}")
89
-
90
- # Update overall success status
91
- all_checks_passed = all_checks_passed and check_result
92
-
93
- # Stop if a check fails and stop_on_failure is True
94
- if not check_result and stop_on_failure:
95
- context.io.error("One check failed")
96
-
97
- from wexample_app.response.failure_response import FailureResponse
98
- context.io.log_indent_down()
99
-
100
- return FailureResponse(message="One check failed", kernel=context.kernel)
101
-
102
- context.io.log_indent_down()
103
- return all_checks_passed
@@ -1,41 +0,0 @@
1
- from wexample_wex_core.common.kernel import Kernel
2
-
3
-
4
- def _code_format_black(kernel: "Kernel", file_path: str) -> bool:
5
- """Format a Python file using Black.
6
-
7
- Args:
8
- kernel: The application kernel
9
- file_path: Path to the Python file to format
10
-
11
- Returns:
12
- bool: True if formatting succeeds, False otherwise
13
- """
14
- import subprocess
15
- import sys
16
-
17
- # Use subprocess to run black
18
- cmd = [sys.executable, "-m", "black", file_path]
19
- process = subprocess.run(cmd, capture_output=True, text=True, check=False)
20
-
21
- # Check if the command was successful
22
- if process.returncode == 0:
23
- if "reformatted" in process.stderr or "reformatted" in process.stdout:
24
- kernel.io.success(f"Black successfully reformatted {file_path}")
25
- else:
26
- kernel.io.success(f"Black: {file_path} already well formatted")
27
- return True
28
- else:
29
- kernel.io.error(f"Black failed to format {file_path}")
30
- kernel.io.log_indent_up()
31
-
32
- if process.stderr:
33
- kernel.io.error(f"Error: {process.stderr}", symbol=False)
34
- if process.stdout:
35
- kernel.io.error(f"Output: {process.stdout}", symbol=False)
36
-
37
- # Add detailed error properties
38
- kernel.io.properties({"returncode": process.returncode, "command": cmd})
39
-
40
- kernel.io.log_indent_down()
41
- return False
@@ -1,42 +0,0 @@
1
- from wexample_wex_core.common.kernel import Kernel
2
-
3
-
4
- def _code_format_isort(kernel: "Kernel", file_path: str) -> bool:
5
- """Format imports in a Python file using isort.
6
-
7
- Args:
8
- kernel: The application kernel
9
- file_path: Path to the Python file to format
10
-
11
- Returns:
12
- bool: True if formatting succeeds, False otherwise
13
- """
14
- import subprocess
15
- import sys
16
-
17
- # Use subprocess to run isort
18
- # --profile=black ensures compatibility with Black formatter
19
- cmd = [sys.executable, "-m", "isort", "--profile=black", file_path]
20
- process = subprocess.run(cmd, capture_output=True, text=True, check=False)
21
-
22
- # Check if the command was successful
23
- if process.returncode == 0:
24
- if "Skipped" in process.stdout:
25
- kernel.io.success(f"isort: {file_path} already well formatted")
26
- else:
27
- kernel.io.success(f"isort successfully reformatted imports in {file_path}")
28
- return True
29
- else:
30
- kernel.io.error(f"isort failed to format imports in {file_path}")
31
- kernel.io.log_indent_up()
32
-
33
- if process.stderr:
34
- kernel.io.error(f"Error: {process.stderr}", symbol=False)
35
- if process.stdout:
36
- kernel.io.error(f"Output: {process.stdout}", symbol=False)
37
-
38
- # Add detailed error properties
39
- kernel.io.properties({"returncode": process.returncode, "command": cmd})
40
-
41
- kernel.io.log_indent_down()
42
- return False
@@ -1,75 +0,0 @@
1
- from typing import Optional
2
-
3
- from wexample_wex_core.common.kernel import Kernel
4
- from wexample_wex_core.decorator.command import command
5
- from wexample_wex_core.decorator.middleware import middleware
6
- from wexample_wex_core.decorator.option import option
7
-
8
-
9
- @option(
10
- name="tool",
11
- type=str,
12
- required=False,
13
- description="Specific tool to run (black, isort). If not specified, all tools will be run.",
14
- )
15
- @option(
16
- name="stop_on_failure",
17
- type=bool,
18
- required=False,
19
- default=True,
20
- description="Stop execution when a tool reports a failure",
21
- )
22
- @middleware(name="each_python_file", should_exist=True, expand_glob=True, recursive=True)
23
- @command()
24
- def python__code__format(
25
- kernel: "Kernel",
26
- file: str,
27
- tool: Optional[str] = None,
28
- stop_on_failure: bool = True,
29
- ) -> bool:
30
- """Format a Python file using various code formatting tools."""
31
- from wexample_wex_addon_dev_python.commands.code.format.black import (
32
- _code_format_black,
33
- )
34
- from wexample_wex_addon_dev_python.commands.code.format.isort import (
35
- _code_format_isort,
36
- )
37
-
38
- # Map tool names to their format functions
39
- tool_map = {
40
- "black": _code_format_black,
41
- "isort": _code_format_isort,
42
- }
43
-
44
- # Determine which tools to run
45
- if tool and tool.lower() in tool_map:
46
- # Run only the specified tool
47
- format_functions = [tool_map[tool.lower()]]
48
- else:
49
- # Run all tools if no specific tool is specified or if the specified tool is invalid
50
- if tool and tool.lower() not in tool_map:
51
- kernel.io.warning(f"Unknown tool '{tool}', running all available tools")
52
-
53
- # Run isort first, then black (recommended order)
54
- format_functions = [
55
- _code_format_isort,
56
- _code_format_black,
57
- ]
58
-
59
- # Track overall success
60
- all_formats_passed = True
61
-
62
- # Run each format function
63
- for format_function in format_functions:
64
- kernel.io.title(format_function.__name__)
65
- format_result = format_function(kernel, file)
66
-
67
- # Update overall success status
68
- all_formats_passed = all_formats_passed and format_result
69
-
70
- # Stop if a format fails and stop_on_failure is True
71
- if not format_result and stop_on_failure:
72
- kernel.io.warning("One formatting failed")
73
- return False
74
-
75
- return all_formats_passed
File without changes
@@ -1,74 +0,0 @@
1
- import os.path
2
- from typing import Set, TYPE_CHECKING
3
-
4
- from wexample_wex_core.middleware.each_file_middleware import EachFileMiddleware
5
-
6
- if TYPE_CHECKING:
7
- from wexample_wex_core.common.command_request import CommandRequest
8
-
9
-
10
- class EachPythonFileMiddleware(EachFileMiddleware):
11
- """
12
- Middleware for processing Python files only.
13
- - Filters files by .py extension by default
14
- - Ignores special directories like __pycache__ during recursion
15
- """
16
- # Default extension to filter
17
- python_extension_only: bool = True
18
-
19
- # Default list of directories to ignore during recursion
20
- ignored_directories: Set[str] = {
21
- "__pycache__",
22
- ".git",
23
- ".idea",
24
- ".vscode",
25
- "venv",
26
- "env",
27
- "node_modules",
28
- ".pytest_cache",
29
- ".mypy_cache",
30
- ".ruff_cache",
31
- }
32
-
33
- def __init__(self, **kwargs):
34
- # Allow overriding the default settings
35
- if "python_extension_only" in kwargs:
36
- self.python_extension_only = kwargs.pop("python_extension_only")
37
-
38
- if "ignored_directories" in kwargs:
39
- self.ignored_directories = set(kwargs.pop("ignored_directories"))
40
-
41
- super().__init__(**kwargs)
42
-
43
- def _should_process_item(self, request: "CommandRequest", item_path: str) -> bool:
44
- """
45
- Only process Python files based on extension.
46
-
47
- Args:
48
- item_path: Path to the item to check
49
-
50
- Returns:
51
- True if the item should be processed, False otherwise
52
- """
53
- # First check if it's a file (parent class behavior)
54
- if not os.path.isfile(item_path):
55
- return False
56
-
57
- # If python_extension_only is enabled, check file extension
58
- if self.python_extension_only:
59
- return item_path.endswith(".py")
60
-
61
- # Otherwise, accept all files
62
- return True
63
-
64
- def _should_explore_directory(self, request: "CommandRequest", directory_name: str) -> bool:
65
- """
66
- Skip directories that are in the ignored_directories list.
67
-
68
- Args:
69
- directory_name: Name of the directory to check
70
-
71
- Returns:
72
- False if the directory is in the ignored list, True otherwise
73
- """
74
- return directory_name not in self.ignored_directories
@@ -1,13 +0,0 @@
1
- from typing import List, Type
2
-
3
- from wexample_wex_core.common.abstract_addon_manager import AbstractAddonManager
4
- from wexample_wex_core.middleware.abstract_middleware import AbstractMiddleware
5
-
6
-
7
- class PythonAddonManager(AbstractAddonManager):
8
- def get_middlewares_classes(self) -> List[Type["AbstractMiddleware"]]:
9
- from wexample_wex_addon_dev_python.middleware.each_python_file_middleware import EachPythonFileMiddleware
10
-
11
- return [
12
- EachPythonFileMiddleware,
13
- ]
@@ -1,15 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: wexample-wex-addon-dev-python
3
- Version: 0.0.40
4
- Summary: Python dev addon for wex
5
- Author-email: weeger <contact@wexample.com>
6
- License: MIT
7
- Project-URL: homepage, https://github.com/wexample/python-wex-dev-python
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: License :: OSI Approved :: MIT License
10
- Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.6
12
- Description-Content-Type: text/markdown
13
- Requires-Dist: wexample-wex-core
14
-
15
- # Wex Addon Dev Python
@@ -1,17 +0,0 @@
1
- wexample_wex_addon_dev_python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- wexample_wex_addon_dev_python/python_addon_manager.py,sha256=iEgJ-jqrReMMkI2tHIOSKlumKXBW1ZAbGTzXY17Ilh0,497
3
- wexample_wex_addon_dev_python/commands/code/check.py,sha256=f_cTeGVAiLJCjTe-lOa74ynOrhtkDOJFwtW4sdj_J6Q,3682
4
- wexample_wex_addon_dev_python/commands/code/format.py,sha256=r2DNT6_Mf9ltKRY7beqBCHIXmXn6LWe8h0Jm7TAX0xs,2395
5
- wexample_wex_addon_dev_python/commands/code/check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- wexample_wex_addon_dev_python/commands/code/check/mypy.py,sha256=2Dy72ctj6RFaL4uMQTyWKAJePhULqu9AMfOli8DYF4w,1337
7
- wexample_wex_addon_dev_python/commands/code/check/pylint.py,sha256=HmGUfJQWlVcmFrPHwwTimfegUAdmIJvga5_lfl8i258,3309
8
- wexample_wex_addon_dev_python/commands/code/check/pyright.py,sha256=22a8bOBrVSZzSTJRggGx1smgT9ZsnxbIy4EpJdvBLZg,3529
9
- wexample_wex_addon_dev_python/commands/code/format/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
10
- wexample_wex_addon_dev_python/commands/code/format/black.py,sha256=qDr_siZYzSDoCv1BIqa95S0C97cW7mp7kWLxidJvP4s,1372
11
- wexample_wex_addon_dev_python/commands/code/format/isort.py,sha256=IwBeUntdtUwbmvW2OMDwVSjmxrPCPu2BOuZ_8RAnFC8,1450
12
- wexample_wex_addon_dev_python/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py,sha256=K9thNgehAKN3WDvOCfa_k9pfPGZi_ooay7m9ttWOhK8,2317
14
- wexample_wex_addon_dev_python-0.0.40.dist-info/METADATA,sha256=HVLI1ODWv2zXky-VB7qco92dAi-dHTLUKRLBrS-Oj_s,504
15
- wexample_wex_addon_dev_python-0.0.40.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
- wexample_wex_addon_dev_python-0.0.40.dist-info/top_level.txt,sha256=UH2tJu4bqlyH4nrhg8KctBXufm1rw1ZprTwvdz0robs,30
17
- wexample_wex_addon_dev_python-0.0.40.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- wexample_wex_addon_dev_python
File without changes