omdev 0.0.0.dev32__py3-none-any.whl → 0.0.0.dev33__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.

Potentially problematic release.


This version of omdev might be problematic. Click here for more details.

omdev/.manifests.json CHANGED
@@ -1,121 +1,121 @@
1
1
  [
2
2
  {
3
- "module": ".classdot",
3
+ "module": ".amalg.__main__",
4
4
  "attr": "_CLI_MODULE",
5
- "file": "omdev/classdot.py",
6
- "line": 62,
5
+ "file": "omdev/amalg/__main__.py",
6
+ "line": 4,
7
7
  "value": {
8
8
  "$.cli.types.CliModule": {
9
- "cmd_name": "classdot",
10
- "mod_name": "omdev.classdot"
9
+ "cmd_name": "amalg",
10
+ "mod_name": "omdev.amalg.__main__"
11
11
  }
12
12
  }
13
13
  },
14
14
  {
15
- "module": ".tools.piptools",
15
+ "module": ".cexts.cmake",
16
16
  "attr": "_CLI_MODULE",
17
- "file": "omdev/tools/piptools.py",
18
- "line": 51,
17
+ "file": "omdev/cexts/cmake.py",
18
+ "line": 323,
19
19
  "value": {
20
20
  "$.cli.types.CliModule": {
21
- "cmd_name": "pip",
22
- "mod_name": "omdev.tools.piptools"
21
+ "cmd_name": "cmake",
22
+ "mod_name": "omdev.cexts.cmake"
23
23
  }
24
24
  }
25
25
  },
26
26
  {
27
- "module": ".tools.gittools",
27
+ "module": ".classdot",
28
28
  "attr": "_CLI_MODULE",
29
- "file": "omdev/tools/gittools.py",
30
- "line": 22,
29
+ "file": "omdev/classdot.py",
30
+ "line": 62,
31
31
  "value": {
32
32
  "$.cli.types.CliModule": {
33
- "cmd_name": "git",
34
- "mod_name": "omdev.tools.gittools"
33
+ "cmd_name": "classdot",
34
+ "mod_name": "omdev.classdot"
35
35
  }
36
36
  }
37
37
  },
38
38
  {
39
- "module": ".tools.dockertools",
39
+ "module": ".interp.__main__",
40
40
  "attr": "_CLI_MODULE",
41
- "file": "omdev/tools/dockertools.py",
42
- "line": 183,
41
+ "file": "omdev/interp/__main__.py",
42
+ "line": 4,
43
43
  "value": {
44
44
  "$.cli.types.CliModule": {
45
- "cmd_name": "docker",
46
- "mod_name": "omdev.tools.dockertools"
45
+ "cmd_name": "interp",
46
+ "mod_name": "omdev.interp.__main__"
47
47
  }
48
48
  }
49
49
  },
50
50
  {
51
- "module": ".tools.sqlrepl",
51
+ "module": ".precheck.precheck",
52
52
  "attr": "_CLI_MODULE",
53
- "file": "omdev/tools/sqlrepl.py",
54
- "line": 193,
53
+ "file": "omdev/precheck/precheck.py",
54
+ "line": 90,
55
55
  "value": {
56
56
  "$.cli.types.CliModule": {
57
- "cmd_name": "sqlrepl",
58
- "mod_name": "omdev.tools.sqlrepl"
57
+ "cmd_name": "precheck",
58
+ "mod_name": "omdev.precheck.precheck"
59
59
  }
60
60
  }
61
61
  },
62
62
  {
63
- "module": ".interp.__main__",
63
+ "module": ".pyproject.__main__",
64
64
  "attr": "_CLI_MODULE",
65
- "file": "omdev/interp/__main__.py",
65
+ "file": "omdev/pyproject/__main__.py",
66
66
  "line": 4,
67
67
  "value": {
68
68
  "$.cli.types.CliModule": {
69
- "cmd_name": "interp",
70
- "mod_name": "omdev.interp.__main__"
69
+ "cmd_name": "pyproject",
70
+ "mod_name": "omdev.pyproject.__main__"
71
71
  }
72
72
  }
73
73
  },
74
74
  {
75
- "module": ".pyproject.__main__",
75
+ "module": ".tools.dockertools",
76
76
  "attr": "_CLI_MODULE",
77
- "file": "omdev/pyproject/__main__.py",
78
- "line": 4,
77
+ "file": "omdev/tools/dockertools.py",
78
+ "line": 183,
79
79
  "value": {
80
80
  "$.cli.types.CliModule": {
81
- "cmd_name": "pyproject",
82
- "mod_name": "omdev.pyproject.__main__"
81
+ "cmd_name": "docker",
82
+ "mod_name": "omdev.tools.dockertools"
83
83
  }
84
84
  }
85
85
  },
86
86
  {
87
- "module": ".cexts.cmake",
87
+ "module": ".tools.gittools",
88
88
  "attr": "_CLI_MODULE",
89
- "file": "omdev/cexts/cmake.py",
90
- "line": 323,
89
+ "file": "omdev/tools/gittools.py",
90
+ "line": 22,
91
91
  "value": {
92
92
  "$.cli.types.CliModule": {
93
- "cmd_name": "cmake",
94
- "mod_name": "omdev.cexts.cmake"
93
+ "cmd_name": "git",
94
+ "mod_name": "omdev.tools.gittools"
95
95
  }
96
96
  }
97
97
  },
98
98
  {
99
- "module": ".precheck.precheck",
99
+ "module": ".tools.piptools",
100
100
  "attr": "_CLI_MODULE",
101
- "file": "omdev/precheck/precheck.py",
102
- "line": 90,
101
+ "file": "omdev/tools/piptools.py",
102
+ "line": 51,
103
103
  "value": {
104
104
  "$.cli.types.CliModule": {
105
- "cmd_name": "precheck",
106
- "mod_name": "omdev.precheck.precheck"
105
+ "cmd_name": "pip",
106
+ "mod_name": "omdev.tools.piptools"
107
107
  }
108
108
  }
109
109
  },
110
110
  {
111
- "module": ".amalg.__main__",
111
+ "module": ".tools.sqlrepl",
112
112
  "attr": "_CLI_MODULE",
113
- "file": "omdev/amalg/__main__.py",
114
- "line": 4,
113
+ "file": "omdev/tools/sqlrepl.py",
114
+ "line": 193,
115
115
  "value": {
116
116
  "$.cli.types.CliModule": {
117
- "cmd_name": "amalg",
118
- "mod_name": "omdev.amalg.__main__"
117
+ "cmd_name": "sqlrepl",
118
+ "mod_name": "omdev.tools.sqlrepl"
119
119
  }
120
120
  }
121
121
  }
omdev/__about__.py CHANGED
@@ -39,10 +39,9 @@ class Project(ProjectBase):
39
39
  'omlish.manifests': {name: name},
40
40
  }
41
41
 
42
- # FIXME: omdev-cli ?
43
- # scripts = {
44
- # 'om': f'{name}.cli.main:_main [cli]',
45
- # }
42
+ cli_scripts = {
43
+ 'om': f'{name}.cli.main:_main',
44
+ }
46
45
 
47
46
 
48
47
  class Setuptools(SetuptoolsBase):
omdev/manifests/build.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """
2
2
  TODO:
3
- - relative keys - if startswith self pkg then `$.foo.bar`
3
+ - separate build from cli
4
4
 
5
5
  - See (entry_points):
6
6
  - https://github.com/pytest-dev/pluggy/blob/main/src/pluggy/_manager.py#L405
@@ -205,11 +205,11 @@ def build_package_manifests(
205
205
 
206
206
  manifests: ta.List[Manifest] = []
207
207
 
208
- for file in findmagic.find_magic(
208
+ for file in sorted(findmagic.find_magic(
209
209
  [pkg_dir],
210
210
  [MANIFEST_MAGIC],
211
211
  ['py'],
212
- ):
212
+ )):
213
213
  manifests.extend(build_module_manifests(os.path.relpath(file, base), base))
214
214
 
215
215
  if write:
omdev/pyproject/pkg.py CHANGED
@@ -301,6 +301,8 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
301
301
  if (scs := prj.pop('scripts', None)):
302
302
  pyp_dct['project.scripts'] = scs
303
303
 
304
+ prj.pop('cli_scripts', None)
305
+
304
306
  ##
305
307
 
306
308
  st = dict(specs.setuptools)
@@ -385,6 +387,13 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
385
387
  pkg_suffix='-cext',
386
388
  ).gen(opts)
387
389
 
390
+ if self.build_specs().pyproject.get('cli_scripts'):
391
+ _PyprojectCliPackageGenerator(
392
+ self._dir_name,
393
+ self._pkgs_root,
394
+ pkg_suffix='-cli',
395
+ ).gen(opts)
396
+
388
397
  return ret
389
398
 
390
399
 
@@ -430,6 +439,7 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
430
439
  'optional_dependencies',
431
440
  'entry_points',
432
441
  'scripts',
442
+ 'cli_scripts',
433
443
  ]:
434
444
  prj.pop(k, None)
435
445
 
@@ -494,3 +504,73 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
494
504
 
495
505
  with open(os.path.join(self._pkg_dir(), 'setup.py'), 'w') as f:
496
506
  f.write(fc.setup_py)
507
+
508
+
509
+ ##
510
+
511
+
512
+ class _PyprojectCliPackageGenerator(BasePyprojectPackageGenerator):
513
+
514
+ #
515
+
516
+ @dc.dataclass(frozen=True)
517
+ class FileContents:
518
+ pyproject_dct: ta.Mapping[str, ta.Any]
519
+
520
+ @cached_nullary
521
+ def file_contents(self) -> FileContents:
522
+ specs = self.build_specs()
523
+
524
+ #
525
+
526
+ pyp_dct = {}
527
+
528
+ pyp_dct['build-system'] = {
529
+ 'requires': ['setuptools'],
530
+ 'build-backend': 'setuptools.build_meta',
531
+ }
532
+
533
+ prj = specs.pyproject
534
+ prj['dependencies'] = [f'{prj["name"]} == {prj["version"]}']
535
+ prj['name'] += self._pkg_suffix
536
+ for k in [
537
+ 'optional_dependencies',
538
+ 'entry_points',
539
+ 'scripts',
540
+ ]:
541
+ prj.pop(k, None)
542
+
543
+ pyp_dct['project'] = prj
544
+
545
+ if (scs := prj.pop('cli_scripts', None)):
546
+ pyp_dct['project.scripts'] = scs
547
+
548
+ #
549
+
550
+ st = dict(specs.setuptools)
551
+ pyp_dct['tool.setuptools'] = st
552
+
553
+ for k in [
554
+ 'cexts',
555
+
556
+ 'find_packages',
557
+ 'package_data',
558
+ 'manifest_in',
559
+ ]:
560
+ st.pop(k, None)
561
+
562
+ pyp_dct['tool.setuptools.packages.find'] = {
563
+ 'include': [],
564
+ }
565
+
566
+ #
567
+
568
+ return self.FileContents(
569
+ pyp_dct,
570
+ )
571
+
572
+ def _write_file_contents(self) -> None:
573
+ fc = self.file_contents()
574
+
575
+ with open(os.path.join(self._pkg_dir(), 'pyproject.toml'), 'w') as f:
576
+ TomlWriter(f).write_root(fc.pyproject_dct)
@@ -3989,6 +3989,8 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
3989
3989
  if (scs := prj.pop('scripts', None)):
3990
3990
  pyp_dct['project.scripts'] = scs
3991
3991
 
3992
+ prj.pop('cli_scripts', None)
3993
+
3992
3994
  ##
3993
3995
 
3994
3996
  st = dict(specs.setuptools)
@@ -4073,6 +4075,13 @@ class PyprojectPackageGenerator(BasePyprojectPackageGenerator):
4073
4075
  pkg_suffix='-cext',
4074
4076
  ).gen(opts)
4075
4077
 
4078
+ if self.build_specs().pyproject.get('cli_scripts'):
4079
+ _PyprojectCliPackageGenerator(
4080
+ self._dir_name,
4081
+ self._pkgs_root,
4082
+ pkg_suffix='-cli',
4083
+ ).gen(opts)
4084
+
4076
4085
  return ret
4077
4086
 
4078
4087
 
@@ -4118,6 +4127,7 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
4118
4127
  'optional_dependencies',
4119
4128
  'entry_points',
4120
4129
  'scripts',
4130
+ 'cli_scripts',
4121
4131
  ]:
4122
4132
  prj.pop(k, None)
4123
4133
 
@@ -4184,6 +4194,76 @@ class _PyprojectCextPackageGenerator(BasePyprojectPackageGenerator):
4184
4194
  f.write(fc.setup_py)
4185
4195
 
4186
4196
 
4197
+ ##
4198
+
4199
+
4200
+ class _PyprojectCliPackageGenerator(BasePyprojectPackageGenerator):
4201
+
4202
+ #
4203
+
4204
+ @dc.dataclass(frozen=True)
4205
+ class FileContents:
4206
+ pyproject_dct: ta.Mapping[str, ta.Any]
4207
+
4208
+ @cached_nullary
4209
+ def file_contents(self) -> FileContents:
4210
+ specs = self.build_specs()
4211
+
4212
+ #
4213
+
4214
+ pyp_dct = {}
4215
+
4216
+ pyp_dct['build-system'] = {
4217
+ 'requires': ['setuptools'],
4218
+ 'build-backend': 'setuptools.build_meta',
4219
+ }
4220
+
4221
+ prj = specs.pyproject
4222
+ prj['dependencies'] = [f'{prj["name"]} == {prj["version"]}']
4223
+ prj['name'] += self._pkg_suffix
4224
+ for k in [
4225
+ 'optional_dependencies',
4226
+ 'entry_points',
4227
+ 'scripts',
4228
+ ]:
4229
+ prj.pop(k, None)
4230
+
4231
+ pyp_dct['project'] = prj
4232
+
4233
+ if (scs := prj.pop('cli_scripts', None)):
4234
+ pyp_dct['project.scripts'] = scs
4235
+
4236
+ #
4237
+
4238
+ st = dict(specs.setuptools)
4239
+ pyp_dct['tool.setuptools'] = st
4240
+
4241
+ for k in [
4242
+ 'cexts',
4243
+
4244
+ 'find_packages',
4245
+ 'package_data',
4246
+ 'manifest_in',
4247
+ ]:
4248
+ st.pop(k, None)
4249
+
4250
+ pyp_dct['tool.setuptools.packages.find'] = {
4251
+ 'include': [],
4252
+ }
4253
+
4254
+ #
4255
+
4256
+ return self.FileContents(
4257
+ pyp_dct,
4258
+ )
4259
+
4260
+ def _write_file_contents(self) -> None:
4261
+ fc = self.file_contents()
4262
+
4263
+ with open(os.path.join(self._pkg_dir(), 'pyproject.toml'), 'w') as f:
4264
+ TomlWriter(f).write_root(fc.pyproject_dct)
4265
+
4266
+
4187
4267
  ########################################
4188
4268
  # ../../interp/providers.py
4189
4269
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omdev
3
- Version: 0.0.0.dev32
3
+ Version: 0.0.0.dev33
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: ~=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish ==0.0.0.dev32
15
+ Requires-Dist: omlish ==0.0.0.dev33
16
16
  Provides-Extra: all
17
17
  Requires-Dist: pycparser ~=2.22 ; extra == 'all'
18
18
  Requires-Dist: cffi ~=1.17 ; extra == 'all'
@@ -1,5 +1,5 @@
1
- omdev/.manifests.json,sha256=uWqRwRlD4qALke0LvCnuVOYpDsiXEiiK3gWiMyTUjG8,2596
2
- omdev/__about__.py,sha256=aopfqA_z5OUJ5yDq9cZ89zt7_8Jrsys3mTi1Bgkjpl4,1038
1
+ omdev/.manifests.json,sha256=wj37gX22lyU9HrbsBNcHY7eY7PIMBsKRq7SC2tae97k,2596
2
+ omdev/__about__.py,sha256=LqSNNFFcT84xW3W8fIOJ78kPYJKFLIXZyDX-AJREvN0,1005
3
3
  omdev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  omdev/bracepy.py,sha256=HwBK5XmlOsF_juTel25fRLJK9vHSJCWXuCc-OZlevRQ,2619
5
5
  omdev/classdot.py,sha256=K0YMTngaC6uuEKhDb95tFzW33Re_YEdgIWBBeze4PTI,1628
@@ -68,7 +68,7 @@ omdev/interp/standalone.py,sha256=XcltiL7ypcfV89C82_3knQ3Kx7aW4wnnxf2056ZXC3A,77
68
68
  omdev/interp/system.py,sha256=UFHfMR0CHCEnNx5fhrze8esAwigpRrJUA33ftq6nA0I,3514
69
69
  omdev/interp/types.py,sha256=2nM3MJaOU8O1XA8DrvwyOjBWSboBn16kgFIy5JVkDck,2440
70
70
  omdev/manifests/__init__.py,sha256=P2B0dpT8D7l5lJwRGPA92IcQj6oeXfd90X5-q9BJrKg,51
71
- omdev/manifests/build.py,sha256=Jmp3hQqezisxBSuj5761tNrYEw8XvAhjhaAgHJ8qzEQ,9071
71
+ omdev/manifests/build.py,sha256=m5PleX03pDxG4Pl2PtNKWsuZVxrNPBxPZ3Gkh6qlrEQ,9047
72
72
  omdev/manifests/load.py,sha256=1QznPL4zNlu1eIFkoGrO78coIQCk9LlMC8FJ6PcvhNM,4373
73
73
  omdev/manifests/types.py,sha256=Jv6PAdVLPb9Hh4y6vDhPlWuMNBBViin1bC_u83jfsH4,234
74
74
  omdev/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -85,13 +85,13 @@ omdev/pyproject/__main__.py,sha256=gn3Rl1aYPYdiTtEqa9ifi0t-e4ZwPY0vhJ4UXvYdJDY,1
85
85
  omdev/pyproject/cexts.py,sha256=x13piOOnNrYbA17qZLDVuR0p1sqhgEwpk4FtImX-klM,4281
86
86
  omdev/pyproject/cli.py,sha256=hE2bjfXmJy1xnadSyIcFjF3kYYTqNK4Y5dqTjnMtjVs,10909
87
87
  omdev/pyproject/configs.py,sha256=K9H5cGwVLgHi8wKwtYvlXHZ9ThtmnI4jo8JAb-t1-70,2859
88
- omdev/pyproject/pkg.py,sha256=G6S6iIYBXc640qLgSPdIxYg75wC3Pr2vVnVdnCrOxx4,12949
88
+ omdev/pyproject/pkg.py,sha256=-8meXIJSVkXrDJDsqEcdJ05bssAnTlLp2Y7bElcxI-g,14753
89
89
  omdev/pyproject/reqs.py,sha256=jgDH_nmOkcgxKshbeFt-byPAuGfwoxHuyzaolGu-lms,2299
90
90
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
91
91
  omdev/scripts/bumpversion.py,sha256=Kn7fo73Hs8uJh3Hi3EIyLOlzLPWAC6dwuD_lZ3cIzuY,1064
92
92
  omdev/scripts/execrss.py,sha256=HzDNmwXOO8fMwIRXw9q8CUnVfLFCQASyU2tfY_y2Vf8,324
93
93
  omdev/scripts/interp.py,sha256=nSXgULEj1gXCT0zM4cfgK0LV_CcazWSN6xH3pX9uYGY,70845
94
- omdev/scripts/pyproject.py,sha256=CLf0NciY_R5N5iKbgt-JGpFiSSBEVYrZgXSDmwWTyJ0,155172
94
+ omdev/scripts/pyproject.py,sha256=h8qbqvHywoZtpcIcm549XiRoxMm9j8qrWOK8fUb-Djs,156976
95
95
  omdev/toml/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
96
96
  omdev/toml/parser.py,sha256=84bn09uhYHwQGyfww6Rw6y1RxPAE_HDltODOSakcqDM,29186
97
97
  omdev/toml/writer.py,sha256=lk3on3YXVbWuLJa-xsOzOhs1bBAT1vXqw4mBbluZl_w,3040
@@ -106,9 +106,9 @@ omdev/tools/sqlrepl.py,sha256=tmFZh80-xsGM62dyQ7_UGLebChrj7IHbIPYBWDJMgVk,5741
106
106
  omdev/versioning/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
107
107
  omdev/versioning/specifiers.py,sha256=6Odf9e6farwlPRsD_YqwTfYKG-BXn_dIcKtqfkhfodI,17432
108
108
  omdev/versioning/versions.py,sha256=ei2eopEsJq3zSMJmezK1nzZgikgCdxFtnF3f69nCRZQ,12246
109
- omdev-0.0.0.dev32.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
110
- omdev-0.0.0.dev32.dist-info/METADATA,sha256=kc1thCr-dn6QQKdpT28XJPd1t6kvW2PIvNxRd36gSiU,1252
111
- omdev-0.0.0.dev32.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
112
- omdev-0.0.0.dev32.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
113
- omdev-0.0.0.dev32.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
114
- omdev-0.0.0.dev32.dist-info/RECORD,,
109
+ omdev-0.0.0.dev33.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
110
+ omdev-0.0.0.dev33.dist-info/METADATA,sha256=AstTXi__Uh-euxlhHRQCTcQdsMrmqRQ1C9EPWgSQT6g,1252
111
+ omdev-0.0.0.dev33.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
112
+ omdev-0.0.0.dev33.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
113
+ omdev-0.0.0.dev33.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
114
+ omdev-0.0.0.dev33.dist-info/RECORD,,