python-infrakit-dev 0.1.4__tar.gz → 0.1.6__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.
Files changed (82) hide show
  1. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/.gitignore +2 -1
  2. python_infrakit_dev-0.1.4/README.md → python_infrakit_dev-0.1.6/PKG-INFO +126 -3
  3. python_infrakit_dev-0.1.4/PKG-INFO → python_infrakit_dev-0.1.6/README.md +102 -20
  4. python_infrakit_dev-0.1.6/infrakit/__init__.py +74 -0
  5. python_infrakit_dev-0.1.6/infrakit/cli/__init__.py +5 -0
  6. python_infrakit_dev-0.1.6/infrakit/cli/commands/__init__.py +19 -0
  7. python_infrakit_dev-0.1.6/infrakit/core/__init__.py +46 -0
  8. python_infrakit_dev-0.1.6/infrakit/core/config/__init__.py +71 -0
  9. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/__init__.py +2 -1
  10. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/client.py +140 -20
  11. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/key_manager.py +57 -6
  12. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/models.py +1 -0
  13. python_infrakit_dev-0.1.6/infrakit/llm/providers/__init__.py +6 -0
  14. python_infrakit_dev-0.1.6/infrakit/llm/providers/groq.py +167 -0
  15. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/ai.py +19 -6
  16. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/backend.py +27 -9
  17. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/cli_tool.py +20 -10
  18. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/generator.py +62 -2
  19. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/pipeline.py +17 -8
  20. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/pyproject.toml +13 -5
  21. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/test_llm.py +376 -1
  22. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/test_scaffolders.py +125 -0
  23. python_infrakit_dev-0.1.4/.claude/settings.local.json +0 -7
  24. python_infrakit_dev-0.1.4/infrakit/cli/__init__.py +0 -1
  25. python_infrakit_dev-0.1.4/infrakit/cli/commands/__init__.py +0 -1
  26. python_infrakit_dev-0.1.4/infrakit/llm/providers/__init__.py +0 -5
  27. python_infrakit_dev-0.1.4/tests/core/__init__.py +0 -0
  28. python_infrakit_dev-0.1.4/tests/core/config/__init__.py +0 -0
  29. python_infrakit_dev-0.1.4/tests/core/logger/__init__.py +0 -0
  30. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/.python-version +0 -0
  31. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/config.py +0 -0
  32. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/deps.py +0 -0
  33. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/init.py +0 -0
  34. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/llm.py +0 -0
  35. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/logger.py +0 -0
  36. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/module.py +0 -0
  37. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/commands/time.py +0 -0
  38. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/cli/main.py +0 -0
  39. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/config/converter.py +0 -0
  40. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/config/exporter.py +0 -0
  41. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/config/loader.py +0 -0
  42. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/config/validator.py +0 -0
  43. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/logger/__init__.py +0 -0
  44. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/logger/formatters.py +0 -0
  45. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/logger/handlers.py +0 -0
  46. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/logger/retention.py +0 -0
  47. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/core/logger/setup.py +0 -0
  48. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/__init__.py +0 -0
  49. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/clean.py +0 -0
  50. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/depfile.py +0 -0
  51. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/health.py +0 -0
  52. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/optimizer.py +0 -0
  53. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/deps/scanner.py +0 -0
  54. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/batch.py +0 -0
  55. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/llm_readme.md +0 -0
  56. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/providers/base.py +0 -0
  57. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/providers/gemini.py +0 -0
  58. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/providers/openai.py +0 -0
  59. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/llm/rate_limiter.py +0 -0
  60. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/__init__.py +0 -0
  61. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/scaffolder/registry.py +0 -0
  62. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/time/__init__.py +0 -0
  63. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/infrakit/time/profiler.py +0 -0
  64. {python_infrakit_dev-0.1.4/infrakit → python_infrakit_dev-0.1.6/tests}/__init__.py +0 -0
  65. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/__init__.py +0 -0
  66. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/conftest.py +0 -0
  67. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/test_config.py +0 -0
  68. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/test_init.py +0 -0
  69. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/test_logger.py +0 -0
  70. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/cli/test_module.py +0 -0
  71. {python_infrakit_dev-0.1.4/infrakit → python_infrakit_dev-0.1.6/tests}/core/__init__.py +0 -0
  72. {python_infrakit_dev-0.1.4/infrakit → python_infrakit_dev-0.1.6/tests}/core/config/__init__.py +0 -0
  73. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/config/test_converter.py +0 -0
  74. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/config/test_exporter.py +0 -0
  75. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/config/test_loader.py +0 -0
  76. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/config/test_validator.py +0 -0
  77. {python_infrakit_dev-0.1.4/tests → python_infrakit_dev-0.1.6/tests/core/logger}/__init__.py +0 -0
  78. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/logger/test_formatters.py +0 -0
  79. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/logger/test_handler.py +0 -0
  80. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/logger/test_retention.py +0 -0
  81. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/core/logger/test_setup.py +0 -0
  82. {python_infrakit_dev-0.1.4 → python_infrakit_dev-0.1.6}/tests/test_time.py +0 -0
@@ -18,4 +18,5 @@ new_requirements.txt
18
18
  .env
19
19
  config.ini
20
20
  testing.ipynb
21
- api_key_dir
21
+ api_key_dir
22
+ .claude/
@@ -1,12 +1,90 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-infrakit-dev
3
+ Version: 0.1.6
4
+ Summary: A comprehensive Python developer infrastructure toolkit
5
+ Project-URL: Homepage, https://github.com/chiragg21/infrakit
6
+ Project-URL: Repository, https://github.com/chiragg21/infrakit
7
+ Requires-Python: >=3.10
8
+ Requires-Dist: isort>=8.0.1
9
+ Requires-Dist: pydantic>=2.12.5
10
+ Requires-Dist: python-dotenv>=1.2.2
11
+ Requires-Dist: pyyaml>=6.0.3
12
+ Requires-Dist: typer>=0.24.1
13
+ Provides-Extra: all
14
+ Requires-Dist: google-genai>=1.69.0; extra == 'all'
15
+ Requires-Dist: groq>=0.9.0; extra == 'all'
16
+ Requires-Dist: openai>=2.30.0; extra == 'all'
17
+ Requires-Dist: tqdm>=4.67.3; extra == 'all'
18
+ Provides-Extra: llm
19
+ Requires-Dist: google-genai>=1.69.0; extra == 'llm'
20
+ Requires-Dist: groq>=0.9.0; extra == 'llm'
21
+ Requires-Dist: openai>=2.30.0; extra == 'llm'
22
+ Requires-Dist: tqdm>=4.67.3; extra == 'llm'
23
+ Description-Content-Type: text/markdown
24
+
1
25
  # Infrakit
2
26
 
3
27
  A modular developer toolkit for Python — project scaffolding, logging, config loading, a multi-provider LLM client, and dependency utilities.
4
28
 
29
+ **Requires Python 3.10+**
30
+
31
+ ---
32
+
33
+ ## Installation
34
+
35
+ **Core** — scaffolding, config, logging, deps, profiling, and CLI:
36
+
5
37
  ```bash
6
- pip install infrakit
38
+ pip install python-infrakit-dev
7
39
  ```
8
40
 
9
- The CLI is available as `ik`.
41
+ **With LLM support** adds OpenAI and Gemini providers:
42
+
43
+ ```bash
44
+ pip install python-infrakit-dev[llm]
45
+ ```
46
+
47
+ **Everything:**
48
+
49
+ ```bash
50
+ pip install python-infrakit-dev[all]
51
+ ```
52
+
53
+ The CLI is available as both `infrakit` and `ik`.
54
+
55
+ ---
56
+
57
+ ## Quick Imports
58
+
59
+ Most public symbols are available directly from the top-level package:
60
+
61
+ ```python
62
+ # Logging
63
+ from infrakit import setup, get_logger
64
+
65
+ # Config
66
+ from infrakit import load, load_env, validate, Schema, field
67
+
68
+ # Config conversion / export
69
+ from infrakit import convert_file, convert_dict, export_file, export_dict
70
+
71
+ # LLM (requires infrakit[llm])
72
+ from infrakit import LLMClient, Prompt, QuotaConfig
73
+
74
+ # Subpackages
75
+ from infrakit import deps, scaffolder, time
76
+ ```
77
+
78
+ Or import from the specific subpackages:
79
+
80
+ ```python
81
+ from infrakit.core.config import load, validate, convert_dict, export_file
82
+ from infrakit.core.logger import setup, get_logger
83
+ from infrakit.llm import LLMClient, Prompt
84
+ from infrakit.deps import scan, export, check, clean, optimise
85
+ from infrakit.scaffolder import scaffold_basic, scaffold_ai, scaffold_backend
86
+ from infrakit.time import pipeline_profiler, track
87
+ ```
10
88
 
11
89
  ---
12
90
 
@@ -43,7 +121,7 @@ Every template generates a config file pre-populated with the variables its util
43
121
  ### Config loader
44
122
 
45
123
  ```python
46
- from infrakit.core.config.loader import load, load_env
124
+ from infrakit.core.config import load, load_env
47
125
 
48
126
  cfg = load_env(".env", cast_values=True) # "true" → bool, "42" → int
49
127
  cfg = load("config.yaml")
@@ -67,6 +145,49 @@ port = cfg.get("APP_PORT", 8000)
67
145
 
68
146
  ---
69
147
 
148
+ ### Config validation
149
+
150
+ ```python
151
+ from infrakit.core.config import validate, Schema, field
152
+ from pydantic import BaseModel
153
+
154
+ # Pydantic model
155
+ class AppConfig(BaseModel):
156
+ host: str
157
+ port: int
158
+ debug: bool = False
159
+
160
+ result = validate({"host": "localhost", "port": 8080}, AppConfig)
161
+ if result.ok:
162
+ cfg = result.data # fully typed AppConfig instance
163
+
164
+ # Lightweight dict schema (no Pydantic model needed)
165
+ schema = Schema({
166
+ "host": field(str, required=True),
167
+ "port": field(int, required=True),
168
+ "debug": field(bool, required=False, default=False),
169
+ })
170
+ result = schema.validate({"host": "localhost", "port": 8080})
171
+ ```
172
+
173
+ ---
174
+
175
+ ### Config conversion and export
176
+
177
+ ```python
178
+ from infrakit.core.config import convert_file, convert_dict, export_file, export_dict
179
+
180
+ # Convert between formats
181
+ convert_file("config.yaml", "config.ini")
182
+ output, warnings = convert_dict(data, from_format="yaml", to_format="env")
183
+
184
+ # Sanitize config for sharing (replaces all values with YOUR_VALUE_HERE)
185
+ export_file("config.yaml", ".env.example", to_format="env")
186
+ safe = export_dict({"PORT": 8080, "SECRET": "abc"}, to_format="env")
187
+ ```
188
+
189
+ ---
190
+
70
191
  ### Logger
71
192
 
72
193
  ```python
@@ -99,6 +220,8 @@ log.info("started on port %d", 8080)
99
220
 
100
221
  ## LLM Client
101
222
 
223
+ > Requires `pip install python-infrakit-dev[llm]`
224
+
102
225
  A unified client for **OpenAI** and **Gemini** with key rotation, rate limiting, quota tracking, and async/batch generation.
103
226
 
104
227
  ```python
@@ -1,29 +1,66 @@
1
- Metadata-Version: 2.4
2
- Name: python-infrakit-dev
3
- Version: 0.1.4
4
- Summary: A comprehensive Python developer infrastructure toolkit
5
- Project-URL: Homepage, https://github.com/chiragg21/infrakit
6
- Project-URL: Repository, https://github.com/chiragg21/infrakit
7
- Requires-Python: >=3.13
8
- Requires-Dist: google-genai>=1.69.0
9
- Requires-Dist: isort>=8.0.1
10
- Requires-Dist: openai>=2.30.0
11
- Requires-Dist: pydantic>=2.12.5
12
- Requires-Dist: python-dotenv>=1.2.2
13
- Requires-Dist: pyyaml>=6.0.3
14
- Requires-Dist: tqdm>=4.67.3
15
- Requires-Dist: typer>=0.24.1
16
- Description-Content-Type: text/markdown
17
-
18
1
  # Infrakit
19
2
 
20
3
  A modular developer toolkit for Python — project scaffolding, logging, config loading, a multi-provider LLM client, and dependency utilities.
21
4
 
5
+ **Requires Python 3.10+**
6
+
7
+ ---
8
+
9
+ ## Installation
10
+
11
+ **Core** — scaffolding, config, logging, deps, profiling, and CLI:
12
+
22
13
  ```bash
23
- pip install infrakit
14
+ pip install python-infrakit-dev
24
15
  ```
25
16
 
26
- The CLI is available as `ik`.
17
+ **With LLM support** adds OpenAI and Gemini providers:
18
+
19
+ ```bash
20
+ pip install python-infrakit-dev[llm]
21
+ ```
22
+
23
+ **Everything:**
24
+
25
+ ```bash
26
+ pip install python-infrakit-dev[all]
27
+ ```
28
+
29
+ The CLI is available as both `infrakit` and `ik`.
30
+
31
+ ---
32
+
33
+ ## Quick Imports
34
+
35
+ Most public symbols are available directly from the top-level package:
36
+
37
+ ```python
38
+ # Logging
39
+ from infrakit import setup, get_logger
40
+
41
+ # Config
42
+ from infrakit import load, load_env, validate, Schema, field
43
+
44
+ # Config conversion / export
45
+ from infrakit import convert_file, convert_dict, export_file, export_dict
46
+
47
+ # LLM (requires infrakit[llm])
48
+ from infrakit import LLMClient, Prompt, QuotaConfig
49
+
50
+ # Subpackages
51
+ from infrakit import deps, scaffolder, time
52
+ ```
53
+
54
+ Or import from the specific subpackages:
55
+
56
+ ```python
57
+ from infrakit.core.config import load, validate, convert_dict, export_file
58
+ from infrakit.core.logger import setup, get_logger
59
+ from infrakit.llm import LLMClient, Prompt
60
+ from infrakit.deps import scan, export, check, clean, optimise
61
+ from infrakit.scaffolder import scaffold_basic, scaffold_ai, scaffold_backend
62
+ from infrakit.time import pipeline_profiler, track
63
+ ```
27
64
 
28
65
  ---
29
66
 
@@ -60,7 +97,7 @@ Every template generates a config file pre-populated with the variables its util
60
97
  ### Config loader
61
98
 
62
99
  ```python
63
- from infrakit.core.config.loader import load, load_env
100
+ from infrakit.core.config import load, load_env
64
101
 
65
102
  cfg = load_env(".env", cast_values=True) # "true" → bool, "42" → int
66
103
  cfg = load("config.yaml")
@@ -84,6 +121,49 @@ port = cfg.get("APP_PORT", 8000)
84
121
 
85
122
  ---
86
123
 
124
+ ### Config validation
125
+
126
+ ```python
127
+ from infrakit.core.config import validate, Schema, field
128
+ from pydantic import BaseModel
129
+
130
+ # Pydantic model
131
+ class AppConfig(BaseModel):
132
+ host: str
133
+ port: int
134
+ debug: bool = False
135
+
136
+ result = validate({"host": "localhost", "port": 8080}, AppConfig)
137
+ if result.ok:
138
+ cfg = result.data # fully typed AppConfig instance
139
+
140
+ # Lightweight dict schema (no Pydantic model needed)
141
+ schema = Schema({
142
+ "host": field(str, required=True),
143
+ "port": field(int, required=True),
144
+ "debug": field(bool, required=False, default=False),
145
+ })
146
+ result = schema.validate({"host": "localhost", "port": 8080})
147
+ ```
148
+
149
+ ---
150
+
151
+ ### Config conversion and export
152
+
153
+ ```python
154
+ from infrakit.core.config import convert_file, convert_dict, export_file, export_dict
155
+
156
+ # Convert between formats
157
+ convert_file("config.yaml", "config.ini")
158
+ output, warnings = convert_dict(data, from_format="yaml", to_format="env")
159
+
160
+ # Sanitize config for sharing (replaces all values with YOUR_VALUE_HERE)
161
+ export_file("config.yaml", ".env.example", to_format="env")
162
+ safe = export_dict({"PORT": 8080, "SECRET": "abc"}, to_format="env")
163
+ ```
164
+
165
+ ---
166
+
87
167
  ### Logger
88
168
 
89
169
  ```python
@@ -116,6 +196,8 @@ log.info("started on port %d", 8080)
116
196
 
117
197
  ## LLM Client
118
198
 
199
+ > Requires `pip install python-infrakit-dev[llm]`
200
+
119
201
  A unified client for **OpenAI** and **Gemini** with key rotation, rate limiting, quota tracking, and async/batch generation.
120
202
 
121
203
  ```python
@@ -0,0 +1,74 @@
1
+ """
2
+ infrakit
3
+ ~~~~~~~~
4
+ A comprehensive Python developer infrastructure toolkit.
5
+
6
+ Quick imports::
7
+
8
+ # Logging
9
+ from infrakit import setup, get_logger
10
+
11
+ # Config
12
+ from infrakit import load, validate
13
+
14
+ # LLM
15
+ from infrakit import LLMClient
16
+
17
+ # Dependencies
18
+ from infrakit import deps
19
+
20
+ # Scaffolding
21
+ from infrakit import scaffolder
22
+
23
+ # Profiling
24
+ from infrakit import time
25
+ """
26
+
27
+ from infrakit.core.logger.setup import setup, get_logger, reset
28
+ from infrakit.core.config import (
29
+ load,
30
+ load_env,
31
+ validate,
32
+ Schema,
33
+ field,
34
+ convert_file,
35
+ convert_dict,
36
+ export_file,
37
+ export_dict,
38
+ export_string,
39
+ )
40
+ from infrakit import deps, scaffolder, time
41
+
42
+ try:
43
+ from infrakit.llm import LLMClient, LLMResponse, Prompt, QuotaConfig
44
+ _LLM_AVAILABLE = True
45
+ except ImportError:
46
+ _LLM_AVAILABLE = False
47
+
48
+ __version__ = "0.1.4"
49
+
50
+ __all__ = [
51
+ "__version__",
52
+ # logging
53
+ "setup",
54
+ "get_logger",
55
+ "reset",
56
+ # config
57
+ "load",
58
+ "load_env",
59
+ "validate",
60
+ "Schema",
61
+ "field",
62
+ "convert_file",
63
+ "convert_dict",
64
+ "export_file",
65
+ "export_dict",
66
+ "export_string",
67
+ # subpackages
68
+ "deps",
69
+ "scaffolder",
70
+ "time",
71
+ ]
72
+
73
+ if _LLM_AVAILABLE:
74
+ __all__ += ["LLMClient", "LLMResponse", "Prompt", "QuotaConfig"]
@@ -0,0 +1,5 @@
1
+ """infrakit.cli — command-line interface for infrakit."""
2
+
3
+ from infrakit.cli.main import main
4
+
5
+ __all__ = ["main"]
@@ -0,0 +1,19 @@
1
+ """infrakit.cli.commands — subcommand groups."""
2
+
3
+ from infrakit.cli.commands.config import config_app
4
+ from infrakit.cli.commands.logger import logger_app
5
+ from infrakit.cli.commands.module import module_app
6
+ from infrakit.cli.commands.time import time_app
7
+ from infrakit.cli.commands.deps import deps_app
8
+ from infrakit.cli.commands.llm import app as llm_app
9
+ from infrakit.cli.commands.init import cmd_init
10
+
11
+ __all__ = [
12
+ "config_app",
13
+ "logger_app",
14
+ "module_app",
15
+ "time_app",
16
+ "deps_app",
17
+ "llm_app",
18
+ "cmd_init",
19
+ ]
@@ -0,0 +1,46 @@
1
+ """
2
+ infrakit.core
3
+ ~~~~~~~~~~~~~
4
+ Core infrastructure: config management and structured logging.
5
+
6
+ Quick imports::
7
+
8
+ from infrakit.core import setup, get_logger
9
+ from infrakit.core import load, validate
10
+ """
11
+
12
+ from infrakit.core.logger.setup import setup, get_logger, reset
13
+ from infrakit.core.config import (
14
+ load,
15
+ load_env,
16
+ cast_value,
17
+ detect_format,
18
+ validate,
19
+ Schema,
20
+ field,
21
+ convert_file,
22
+ convert_dict,
23
+ export_file,
24
+ export_dict,
25
+ export_string,
26
+ )
27
+
28
+ __all__ = [
29
+ # logger
30
+ "setup",
31
+ "get_logger",
32
+ "reset",
33
+ # config
34
+ "load",
35
+ "load_env",
36
+ "cast_value",
37
+ "detect_format",
38
+ "validate",
39
+ "Schema",
40
+ "field",
41
+ "convert_file",
42
+ "convert_dict",
43
+ "export_file",
44
+ "export_dict",
45
+ "export_string",
46
+ ]
@@ -0,0 +1,71 @@
1
+ """
2
+ infrakit.core.config
3
+ ~~~~~~~~~~~~~~~~~~~~~
4
+ Configuration loading, validation, conversion, and export.
5
+
6
+ Quick imports::
7
+
8
+ from infrakit.core.config import load, load_env, validate, Schema, field
9
+ from infrakit.core.config import convert_file, convert_dict
10
+ from infrakit.core.config import export_file, export_dict, export_string
11
+ """
12
+
13
+ from infrakit.core.config.loader import (
14
+ load,
15
+ load_env,
16
+ cast_value,
17
+ cast_dict,
18
+ detect_format,
19
+ ConfigLoadError,
20
+ UnsupportedFormatError,
21
+ MissingDependencyError,
22
+ )
23
+ from infrakit.core.config.validator import (
24
+ validate,
25
+ Schema,
26
+ field,
27
+ FieldSpec,
28
+ FieldError,
29
+ ValidationResult,
30
+ ConfigValidationError,
31
+ )
32
+ from infrakit.core.config.converter import (
33
+ convert_file,
34
+ convert_dict,
35
+ ConversionError,
36
+ ConversionWarning,
37
+ )
38
+ from infrakit.core.config.exporter import (
39
+ export_file,
40
+ export_dict,
41
+ export_string,
42
+ )
43
+
44
+ __all__ = [
45
+ # loader
46
+ "load",
47
+ "load_env",
48
+ "cast_value",
49
+ "cast_dict",
50
+ "detect_format",
51
+ "ConfigLoadError",
52
+ "UnsupportedFormatError",
53
+ "MissingDependencyError",
54
+ # validator
55
+ "validate",
56
+ "Schema",
57
+ "field",
58
+ "FieldSpec",
59
+ "FieldError",
60
+ "ValidationResult",
61
+ "ConfigValidationError",
62
+ # converter
63
+ "convert_file",
64
+ "convert_dict",
65
+ "ConversionError",
66
+ "ConversionWarning",
67
+ # exporter
68
+ "export_file",
69
+ "export_dict",
70
+ "export_string",
71
+ ]
@@ -20,7 +20,7 @@ from .models import (
20
20
  QuotaConfig,
21
21
  RequestMeta,
22
22
  )
23
- from .providers import GeminiProvider, OpenAIProvider
23
+ from .providers import GeminiProvider, GroqProvider, OpenAIProvider
24
24
 
25
25
  __all__ = [
26
26
  "LLMClient",
@@ -32,4 +32,5 @@ __all__ = [
32
32
  "Provider",
33
33
  "OpenAIProvider",
34
34
  "GeminiProvider",
35
+ "GroqProvider",
35
36
  ]