pyprojkit 0.5.0__tar.gz → 0.7.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyprojkit
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: Development workflow toolkit for Python projects: pyproject.toml sync, doit tasks, nox sessions
5
5
  Author: mm21
6
6
  Author-email: mm21 <mm21.dev@gmail.com>
@@ -183,7 +183,7 @@ Tool configurations are grouped by category under `ToolsConfig`. Every category
183
183
  - `publish`: build/publish output directory
184
184
  - `skill`: a `pyprojkit-python` [agent skill](https://agentskills.io) generated from the configuration
185
185
 
186
- `create_kitchen_sink_tools()` returns a `ToolsConfig` with everything enabled (except sphinx, which needs project-specific settings). Customize it with `dataclasses.replace`:
186
+ `create_recommended_tools()` returns a `ToolsConfig` with everything enabled (except sphinx, which needs project-specific settings). Customize it with `dataclasses.replace`:
187
187
 
188
188
  ```python
189
189
  from dataclasses import replace
@@ -195,7 +195,7 @@ from pyprojkit import (
195
195
  PythonVersions,
196
196
  RequiresPython,
197
197
  SphinxConfig,
198
- create_kitchen_sink_tools,
198
+ create_recommended_tools,
199
199
  )
200
200
 
201
201
  config = ProjectConfig(
@@ -203,7 +203,7 @@ config = ProjectConfig(
203
203
  requires_python=RequiresPython((3, 12)),
204
204
  pinned_python=PythonVersions(3, (12, 14)),
205
205
  tools=replace(
206
- create_kitchen_sink_tools(),
206
+ create_recommended_tools(),
207
207
  doc=DocConfig(sphinx=SphinxConfig(copy_env_var="MY_PACKAGE_DOCS_DIR")),
208
208
  analysis=None,
209
209
  ),
@@ -214,7 +214,7 @@ To tweak a managed value, replace it in the tool's config:
214
214
 
215
215
  ```python
216
216
  tools=replace(
217
- create_kitchen_sink_tools(),
217
+ create_recommended_tools(),
218
218
  test=TestConfig(pytest=PytestConfig(addopts="-x")),
219
219
  )
220
220
  ```
@@ -334,11 +334,11 @@ There is no profile registry: a shared configuration is just a function or globa
334
334
  # in your shared module, e.g. mycompany_config.py
335
335
  from dataclasses import replace
336
336
 
337
- from pyprojkit import AnalysisConfig, ToolsConfig, create_kitchen_sink_tools
337
+ from pyprojkit import AnalysisConfig, ToolsConfig, create_recommended_tools
338
338
 
339
339
 
340
340
  def create_mycompany_tools() -> ToolsConfig:
341
- return replace(create_kitchen_sink_tools(), analysis=AnalysisConfig())
341
+ return replace(create_recommended_tools(), analysis=AnalysisConfig())
342
342
  ```
343
343
 
344
344
  ```python
@@ -140,7 +140,7 @@ Tool configurations are grouped by category under `ToolsConfig`. Every category
140
140
  - `publish`: build/publish output directory
141
141
  - `skill`: a `pyprojkit-python` [agent skill](https://agentskills.io) generated from the configuration
142
142
 
143
- `create_kitchen_sink_tools()` returns a `ToolsConfig` with everything enabled (except sphinx, which needs project-specific settings). Customize it with `dataclasses.replace`:
143
+ `create_recommended_tools()` returns a `ToolsConfig` with everything enabled (except sphinx, which needs project-specific settings). Customize it with `dataclasses.replace`:
144
144
 
145
145
  ```python
146
146
  from dataclasses import replace
@@ -152,7 +152,7 @@ from pyprojkit import (
152
152
  PythonVersions,
153
153
  RequiresPython,
154
154
  SphinxConfig,
155
- create_kitchen_sink_tools,
155
+ create_recommended_tools,
156
156
  )
157
157
 
158
158
  config = ProjectConfig(
@@ -160,7 +160,7 @@ config = ProjectConfig(
160
160
  requires_python=RequiresPython((3, 12)),
161
161
  pinned_python=PythonVersions(3, (12, 14)),
162
162
  tools=replace(
163
- create_kitchen_sink_tools(),
163
+ create_recommended_tools(),
164
164
  doc=DocConfig(sphinx=SphinxConfig(copy_env_var="MY_PACKAGE_DOCS_DIR")),
165
165
  analysis=None,
166
166
  ),
@@ -171,7 +171,7 @@ To tweak a managed value, replace it in the tool's config:
171
171
 
172
172
  ```python
173
173
  tools=replace(
174
- create_kitchen_sink_tools(),
174
+ create_recommended_tools(),
175
175
  test=TestConfig(pytest=PytestConfig(addopts="-x")),
176
176
  )
177
177
  ```
@@ -291,11 +291,11 @@ There is no profile registry: a shared configuration is just a function or globa
291
291
  # in your shared module, e.g. mycompany_config.py
292
292
  from dataclasses import replace
293
293
 
294
- from pyprojkit import AnalysisConfig, ToolsConfig, create_kitchen_sink_tools
294
+ from pyprojkit import AnalysisConfig, ToolsConfig, create_recommended_tools
295
295
 
296
296
 
297
297
  def create_mycompany_tools() -> ToolsConfig:
298
- return replace(create_kitchen_sink_tools(), analysis=AnalysisConfig())
298
+ return replace(create_recommended_tools(), analysis=AnalysisConfig())
299
299
  ```
300
300
 
301
301
  ```python
@@ -29,7 +29,7 @@ license-files = ["LICENSE"]
29
29
  name = "pyprojkit"
30
30
  readme = "README.md"
31
31
  requires-python = ">=3.12,<4.0" # pyprojkit-managed
32
- version = "0.5.0"
32
+ version = "0.7.0"
33
33
 
34
34
  [project.optional-dependencies]
35
35
  all = [
@@ -108,7 +108,6 @@ quiet = true # pyprojkit-managed
108
108
 
109
109
  [tool.mypy]
110
110
  check_untyped_defs = true # pyprojkit-managed
111
- ignore_missing_imports = true # pyprojkit-managed
112
111
  python_version = "3.12" # pyprojkit-managed
113
112
 
114
113
  [tool.nox]
@@ -44,7 +44,7 @@ from .config import (
44
44
  AnalysisConfig,
45
45
  PublishConfig,
46
46
  SkillConfig,
47
- create_kitchen_sink_tools,
47
+ create_recommended_tools,
48
48
  )
49
49
  from .versions import (
50
50
  DEFAULT_PATCH_VERSIONS,
@@ -98,7 +98,7 @@ __all__ = [
98
98
  "AnalysisConfig",
99
99
  "PublishConfig",
100
100
  "SkillConfig",
101
- "create_kitchen_sink_tools",
101
+ "create_recommended_tools",
102
102
  "DEFAULT_PATCH_VERSIONS",
103
103
  "PythonVersions",
104
104
  "PythonVersionSet",
@@ -44,7 +44,7 @@ from .project import (
44
44
  SkillConfig,
45
45
  )
46
46
  from .profiles import (
47
- create_kitchen_sink_tools,
47
+ create_recommended_tools,
48
48
  )
49
49
 
50
50
  __all__ = [
@@ -74,6 +74,6 @@ __all__ = [
74
74
  "AnalysisConfig",
75
75
  "PublishConfig",
76
76
  "SkillConfig",
77
- "create_kitchen_sink_tools",
77
+ "create_recommended_tools",
78
78
  ]
79
79
  # </AUTOGEN_INIT>
@@ -31,16 +31,15 @@ class BaseConfig(ABC):
31
31
  individual tools' `pyproject.toml` tables (e.g. `PytestConfig`).
32
32
 
33
33
  A default-constructed config is empty: every setting is unset and every optional
34
- sub-config is disabled. Opinionated settings are provided by
35
- `create_kitchen_sink()`.
34
+ sub-config is disabled. Opinionated settings are provided by `create_recommended()`.
36
35
  """
37
36
 
38
37
  @classmethod
39
38
  @abstractmethod
40
- def create_kitchen_sink(cls) -> Self:
39
+ def create_recommended(cls) -> Self:
41
40
  """
42
41
  Get a new instance with opinionated settings, as used by
43
- `create_kitchen_sink_tools()`.
42
+ `create_recommended_tools()`.
44
43
  """
45
44
  ...
46
45
 
@@ -30,7 +30,7 @@ def create_mycompany_tools() -> ToolsConfig:
30
30
  )
31
31
  ```
32
32
 
33
- Alternatively, start from `create_kitchen_sink_tools()` and override parts of it with
33
+ Alternatively, start from `create_recommended_tools()` and override parts of it with
34
34
  `dataclasses.replace()`.
35
35
  """
36
36
 
@@ -39,13 +39,14 @@ from __future__ import annotations
39
39
  from .project import ToolsConfig
40
40
 
41
41
  __all__ = [
42
- "create_kitchen_sink_tools",
42
+ "create_recommended_tools",
43
43
  ]
44
44
 
45
45
 
46
- def create_kitchen_sink_tools() -> ToolsConfig:
46
+ def create_recommended_tools() -> ToolsConfig:
47
47
  """
48
- Get a new instance of the configuration which enables every tool; equivalent to
49
- `ToolsConfig.create_kitchen_sink()`.
48
+ Get a new instance of the recommended configuration: every tool which doesn't need
49
+ project-specific settings, with opinionated settings; equivalent to
50
+ `ToolsConfig.create_recommended()`.
50
51
  """
51
- return ToolsConfig.create_kitchen_sink()
52
+ return ToolsConfig.create_recommended()
@@ -52,14 +52,14 @@ class FormattingConfig(BaseConfig):
52
52
  """
53
53
 
54
54
  @classmethod
55
- def create_kitchen_sink(cls) -> Self:
55
+ def create_recommended(cls) -> Self:
56
56
  return cls(
57
57
  formatters=(
58
- AutoflakeConfig.create_kitchen_sink(),
59
- IsortConfig.create_kitchen_sink(),
60
- DocfmtConfig.create_kitchen_sink(),
61
- BlackConfig.create_kitchen_sink(),
62
- TomlSortConfig.create_kitchen_sink(),
58
+ AutoflakeConfig.create_recommended(),
59
+ IsortConfig.create_recommended(),
60
+ DocfmtConfig.create_recommended(),
61
+ BlackConfig.create_recommended(),
62
+ TomlSortConfig.create_recommended(),
63
63
  )
64
64
  )
65
65
 
@@ -75,11 +75,11 @@ class TestConfig(BaseConfig):
75
75
  coverage_report: CoverageReportConfig = field(default_factory=CoverageReportConfig)
76
76
 
77
77
  @classmethod
78
- def create_kitchen_sink(cls) -> Self:
78
+ def create_recommended(cls) -> Self:
79
79
  return cls(
80
- pytest=PytestConfig.create_kitchen_sink(),
81
- coverage_run=CoverageRunConfig.create_kitchen_sink(),
82
- coverage_report=CoverageReportConfig.create_kitchen_sink(),
80
+ pytest=PytestConfig.create_recommended(),
81
+ coverage_run=CoverageRunConfig.create_recommended(),
82
+ coverage_report=CoverageReportConfig.create_recommended(),
83
83
  )
84
84
 
85
85
 
@@ -95,7 +95,7 @@ class MkinitConfig(BaseConfig):
95
95
  """
96
96
 
97
97
  @classmethod
98
- def create_kitchen_sink(cls) -> Self:
98
+ def create_recommended(cls) -> Self:
99
99
  return cls(
100
100
  args=("--recursive", "--nomods", "--relative", "-i", "--source-order")
101
101
  )
@@ -119,7 +119,7 @@ class SphinxConfig(BaseConfig):
119
119
  """
120
120
 
121
121
  @classmethod
122
- def create_kitchen_sink(cls) -> Self:
122
+ def create_recommended(cls) -> Self:
123
123
  return cls()
124
124
 
125
125
 
@@ -140,12 +140,12 @@ class DocConfig(BaseConfig):
140
140
  """
141
141
 
142
142
  @classmethod
143
- def create_kitchen_sink(cls) -> Self:
143
+ def create_recommended(cls) -> Self:
144
144
  """
145
145
  Enables mkinit; sphinx is left disabled since it needs project-specific
146
146
  settings.
147
147
  """
148
- return cls(mkinit=MkinitConfig.create_kitchen_sink())
148
+ return cls(mkinit=MkinitConfig.create_recommended())
149
149
 
150
150
 
151
151
  @dataclass(kw_only=True)
@@ -158,10 +158,10 @@ class AnalysisConfig(BaseConfig):
158
158
  pyright: PyrightConfig | None = None
159
159
 
160
160
  @classmethod
161
- def create_kitchen_sink(cls) -> Self:
161
+ def create_recommended(cls) -> Self:
162
162
  return cls(
163
- mypy=MypyConfig.create_kitchen_sink(),
164
- pyright=PyrightConfig.create_kitchen_sink(),
163
+ mypy=MypyConfig.create_recommended(),
164
+ pyright=PyrightConfig.create_recommended(),
165
165
  )
166
166
 
167
167
 
@@ -178,7 +178,7 @@ class PublishConfig(BaseConfig):
178
178
  """
179
179
 
180
180
  @classmethod
181
- def create_kitchen_sink(cls) -> Self:
181
+ def create_recommended(cls) -> Self:
182
182
  return cls(out_dir=str(_paths.UV_PATH))
183
183
 
184
184
 
@@ -198,7 +198,7 @@ class SkillConfig(BaseConfig):
198
198
  """
199
199
 
200
200
  @classmethod
201
- def create_kitchen_sink(cls) -> Self:
201
+ def create_recommended(cls) -> Self:
202
202
  return cls()
203
203
 
204
204
 
@@ -208,8 +208,8 @@ class ToolsConfig(BaseConfig):
208
208
  Development tool configurations, grouped by broad tool category.
209
209
 
210
210
  Every category is opt-in: `None` (the default) means the tool is neither managed nor
211
- given a task. For a pre-canned set of everything, see `create_kitchen_sink()` (also
212
- available as `create_kitchen_sink_tools()`); to share a configuration across
211
+ given a task. For a pre-canned set of everything, see `create_recommended()` (also
212
+ available as `create_recommended_tools()`); to share a configuration across
213
213
  projects, define your own factory function or global.
214
214
  """
215
215
 
@@ -233,7 +233,7 @@ class ToolsConfig(BaseConfig):
233
233
  """
234
234
 
235
235
  @classmethod
236
- def create_kitchen_sink(cls) -> Self:
236
+ def create_recommended(cls) -> Self:
237
237
  """
238
238
  Enables every tool category, each with its opinionated settings: uv as the
239
239
  workflow tool, formatting, testing, doit, nox, mkinit, static analysis,
@@ -242,14 +242,14 @@ class ToolsConfig(BaseConfig):
242
242
  """
243
243
  return cls(
244
244
  workflow_tool="uv",
245
- formatting=FormattingConfig.create_kitchen_sink(),
246
- test=TestConfig.create_kitchen_sink(),
247
- doit=DoitConfig.create_kitchen_sink(),
248
- nox=NoxConfig.create_kitchen_sink(),
249
- doc=DocConfig.create_kitchen_sink(),
250
- analysis=AnalysisConfig.create_kitchen_sink(),
251
- publish=PublishConfig.create_kitchen_sink(),
252
- skill=SkillConfig.create_kitchen_sink(),
245
+ formatting=FormattingConfig.create_recommended(),
246
+ test=TestConfig.create_recommended(),
247
+ doit=DoitConfig.create_recommended(),
248
+ nox=NoxConfig.create_recommended(),
249
+ doc=DocConfig.create_recommended(),
250
+ analysis=AnalysisConfig.create_recommended(),
251
+ publish=PublishConfig.create_recommended(),
252
+ skill=SkillConfig.create_recommended(),
253
253
  )
254
254
 
255
255
 
@@ -3,7 +3,7 @@ Configurations for all supported tools.
3
3
 
4
4
  Formatters are tools which additionally run as part of the `format` task. Every field
5
5
  defaults to `None` (unset); each tool's opinionated settings are provided by its
6
- `create_kitchen_sink()`.
6
+ `create_recommended()`.
7
7
  """
8
8
 
9
9
  from __future__ import annotations
@@ -50,7 +50,7 @@ class AutoflakeConfig(BaseFormatterConfig):
50
50
  )
51
51
 
52
52
  @classmethod
53
- def create_kitchen_sink(cls) -> Self:
53
+ def create_recommended(cls) -> Self:
54
54
  return cls(
55
55
  in_place=True,
56
56
  recursive=True,
@@ -70,7 +70,7 @@ class IsortConfig(BaseFormatterConfig):
70
70
  quiet: bool | None = None
71
71
 
72
72
  @classmethod
73
- def create_kitchen_sink(cls) -> Self:
73
+ def create_recommended(cls) -> Self:
74
74
  return cls(profile="black", quiet=True)
75
75
 
76
76
  def command(self, py_paths: list[str], toml_paths: list[str]) -> list[str]:
@@ -84,7 +84,7 @@ class BlackConfig(BaseFormatterConfig):
84
84
  quiet: bool | None = None
85
85
 
86
86
  @classmethod
87
- def create_kitchen_sink(cls) -> Self:
87
+ def create_recommended(cls) -> Self:
88
88
  return cls(quiet=True)
89
89
 
90
90
  def extra_toml(self, project: ProjectConfig) -> dict[str, Any]:
@@ -114,7 +114,7 @@ class DocfmtConfig(BaseFormatterConfig):
114
114
  force_reflow: bool | None = field(default=None, metadata={"toml": "force-reflow"})
115
115
 
116
116
  @classmethod
117
- def create_kitchen_sink(cls) -> Self:
117
+ def create_recommended(cls) -> Self:
118
118
  return cls(
119
119
  in_place=True, recursive=True, summary_on_own_line=True, force_reflow=True
120
120
  )
@@ -135,7 +135,7 @@ class TomlSortConfig(BaseFormatterConfig):
135
135
  spaces_before_inline_comment: int | None = None
136
136
 
137
137
  @classmethod
138
- def create_kitchen_sink(cls) -> Self:
138
+ def create_recommended(cls) -> Self:
139
139
  return cls(
140
140
  sort_first=("project", "dependency-groups", "build-system"),
141
141
  sort_table_keys=True,
@@ -158,7 +158,7 @@ class PytestConfig(BaseToolConfig):
158
158
  testpaths: str | None = None
159
159
 
160
160
  @classmethod
161
- def create_kitchen_sink(cls) -> Self:
161
+ def create_recommended(cls) -> Self:
162
162
  return cls(
163
163
  addopts="--import-mode=importlib -s -v -rA",
164
164
  cache_dir=str(_paths.PYTEST_CACHE_PATH),
@@ -173,7 +173,7 @@ class CoverageRunConfig(BaseToolConfig):
173
173
  data_file: str | None = None
174
174
 
175
175
  @classmethod
176
- def create_kitchen_sink(cls) -> Self:
176
+ def create_recommended(cls) -> Self:
177
177
  return cls(data_file=str(_paths.COVERAGE_DATA_PATH))
178
178
 
179
179
 
@@ -184,7 +184,7 @@ class CoverageReportConfig(BaseToolConfig):
184
184
  exclude_lines: tuple[str, ...] | None = None
185
185
 
186
186
  @classmethod
187
- def create_kitchen_sink(cls) -> Self:
187
+ def create_recommended(cls) -> Self:
188
188
  return cls(exclude_lines=("if TYPE_CHECKING:", "\\.\\.\\.$"))
189
189
 
190
190
 
@@ -196,7 +196,7 @@ class DoitConfig(BaseToolConfig):
196
196
  verbosity: int | None = None
197
197
 
198
198
  @classmethod
199
- def create_kitchen_sink(cls) -> Self:
199
+ def create_recommended(cls) -> Self:
200
200
  return cls(dep_file=str(_paths.DOIT_DB_PATH), verbosity=2)
201
201
 
202
202
 
@@ -208,7 +208,7 @@ class NoxConfig(BaseToolConfig):
208
208
  envdir: str | None = None
209
209
 
210
210
  @classmethod
211
- def create_kitchen_sink(cls) -> Self:
211
+ def create_recommended(cls) -> Self:
212
212
  return cls(default_venv_backend="uv", envdir=str(_paths.NOX_ENVDIR_PATH))
213
213
 
214
214
 
@@ -216,12 +216,11 @@ class NoxConfig(BaseToolConfig):
216
216
  class MypyConfig(BaseToolConfig):
217
217
  table_path: ClassVar[str] = "tool.mypy"
218
218
 
219
- ignore_missing_imports: bool | None = None
220
219
  check_untyped_defs: bool | None = None
221
220
 
222
221
  @classmethod
223
- def create_kitchen_sink(cls) -> Self:
224
- return cls(ignore_missing_imports=True, check_untyped_defs=True)
222
+ def create_recommended(cls) -> Self:
223
+ return cls(check_untyped_defs=True)
225
224
 
226
225
  def extra_toml(self, project: ProjectConfig) -> dict[str, Any]:
227
226
  versions = project.pinned_versions
@@ -236,7 +235,7 @@ class PyrightConfig(BaseToolConfig):
236
235
  table_path: ClassVar[str] = "tool.pyright"
237
236
 
238
237
  @classmethod
239
- def create_kitchen_sink(cls) -> Self:
238
+ def create_recommended(cls) -> Self:
240
239
  return cls()
241
240
 
242
241
  def extra_toml(self, project: ProjectConfig) -> dict[str, Any]:
@@ -0,0 +1 @@
1
+
File without changes