tutor 23.0.0.dev3194__tar.gz → 23.0.0.dev3196__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 (109) hide show
  1. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/PKG-INFO +3 -3
  2. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/requirements/base.in +1 -2
  3. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/requirements/dev.txt +1 -1
  4. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/config.py +5 -5
  5. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/images.py +1 -1
  6. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/mounts.py +1 -1
  7. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/params.py +5 -1
  8. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/plugins.py +2 -2
  9. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/.gitignore +0 -0
  10. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/.hatch_build.py +0 -0
  11. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/LICENSE.txt +0 -0
  12. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/README.rst +0 -0
  13. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/pyproject.toml +0 -0
  14. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/requirements/plugins.txt +0 -0
  15. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/__about__.py +0 -0
  16. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/__init__.py +0 -0
  17. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/bindmount.py +0 -0
  18. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/__init__.py +0 -0
  19. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/cli.py +0 -0
  20. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/compose.py +0 -0
  21. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/context.py +0 -0
  22. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/dev.py +0 -0
  23. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/jobs.py +0 -0
  24. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/jobs_utils.py +0 -0
  25. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/k8s.py +0 -0
  26. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/local.py +0 -0
  27. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/upgrade/__init__.py +0 -0
  28. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/upgrade/common.py +0 -0
  29. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/upgrade/compose.py +0 -0
  30. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/commands/upgrade/k8s.py +0 -0
  31. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/config.py +0 -0
  32. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/__init__.py +0 -0
  33. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/hooks/__init__.py +0 -0
  34. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/hooks/actions.py +0 -0
  35. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/hooks/contexts.py +0 -0
  36. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/hooks/filters.py +0 -0
  37. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/core/hooks/priorities.py +0 -0
  38. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/env.py +0 -0
  39. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/exceptions.py +0 -0
  40. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/fmt.py +0 -0
  41. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/hooks/__init__.py +0 -0
  42. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/hooks/catalog.py +0 -0
  43. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/images.py +0 -0
  44. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/interactive.py +0 -0
  45. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/__init__.py +0 -0
  46. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/base.py +0 -0
  47. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/indexes.py +0 -0
  48. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/openedx.py +0 -0
  49. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/v0.py +0 -0
  50. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/plugins/v1.py +0 -0
  51. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/py.typed +0 -0
  52. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/serialize.py +0 -0
  53. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/tasks.py +0 -0
  54. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/caddy/Caddyfile +0 -0
  55. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/config/cms.env.yml +0 -0
  56. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/config/lms.env.yml +0 -0
  57. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/config/partials/auth.yml +0 -0
  58. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/cms/__init__.py +0 -0
  59. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/cms/development.py +0 -0
  60. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/cms/production.py +0 -0
  61. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/cms/test.py +0 -0
  62. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/lms/__init__.py +0 -0
  63. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/lms/development.py +0 -0
  64. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/lms/production.py +0 -0
  65. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/lms/test.py +0 -0
  66. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/partials/common_all.py +0 -0
  67. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/partials/common_cms.py +0 -0
  68. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/partials/common_lms.py +0 -0
  69. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/settings/partials/common_test.py +0 -0
  70. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/openedx/uwsgi.ini +0 -0
  71. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/permissions/setowners.sh +0 -0
  72. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/apps/redis/redis.conf +0 -0
  73. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/Dockerfile +0 -0
  74. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/bin/reload-uwsgi +0 -0
  75. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/revisions.yml +0 -0
  76. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/cms/__init__.py +0 -0
  77. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/cms/assets.py +0 -0
  78. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/cms/i18n.py +0 -0
  79. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/lms/__init__.py +0 -0
  80. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/lms/assets.py +0 -0
  81. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/lms/i18n.py +0 -0
  82. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/partials/assets.py +0 -0
  83. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/partials/i18n.py +0 -0
  84. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/settings/uwsgi.ini +0 -0
  85. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/openedx/themes/README +0 -0
  86. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/permissions/Dockerfile +0 -0
  87. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/build/permissions/setowner.sh +0 -0
  88. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/config/base.yml +0 -0
  89. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/config/defaults.yml +0 -0
  90. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/dev/docker-compose.jobs.yml +0 -0
  91. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/dev/docker-compose.yml +0 -0
  92. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/jobs/init/cms.sh +0 -0
  93. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/jobs/init/lms.sh +0 -0
  94. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/jobs/init/meilisearch.sh +0 -0
  95. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/jobs/init/mounted-directories.sh +0 -0
  96. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/jobs/init/mysql.sh +0 -0
  97. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/deployments.yml +0 -0
  98. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/jobs.yml +0 -0
  99. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/namespace.yml +0 -0
  100. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/override.yml +0 -0
  101. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/services.yml +0 -0
  102. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/k8s/volumes.yml +0 -0
  103. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/kustomization.yml +0 -0
  104. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/local/docker-compose.jobs.yml +0 -0
  105. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/local/docker-compose.prod.yml +0 -0
  106. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/local/docker-compose.yml +0 -0
  107. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/templates/version +0 -0
  108. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/types.py +0 -0
  109. {tutor-23.0.0.dev3194 → tutor-23.0.0.dev3196}/tutor/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: tutor
3
- Version: 23.0.0.dev3194
3
+ Version: 23.0.0.dev3196
4
4
  Summary: The Docker-based Open edX distribution designed for peace of mind
5
5
  Project-URL: Homepage, https://docs.tutor.edly.io/
6
6
  Project-URL: Documentation, https://docs.tutor.edly.io/
@@ -24,7 +24,7 @@ Classifier: Programming Language :: Python :: 3.13
24
24
  Classifier: Programming Language :: Python :: 3.14
25
25
  Requires-Python: >=3.10
26
26
  Requires-Dist: appdirs
27
- Requires-Dist: click<8.3.0,>=8.0
27
+ Requires-Dist: click>=8.4
28
28
  Requires-Dist: importlib-metadata>=7.0.1
29
29
  Requires-Dist: importlib-resources>=6.1.1
30
30
  Requires-Dist: jinja2>=2.10
@@ -44,7 +44,7 @@ Requires-Dist: cachetools==5.5.2; extra == 'dev'
44
44
  Requires-Dist: certifi==2025.8.3; extra == 'dev'
45
45
  Requires-Dist: charset-normalizer==3.4.7; extra == 'dev'
46
46
  Requires-Dist: click-log==0.4.0; extra == 'dev'
47
- Requires-Dist: click==8.1.8; extra == 'dev'
47
+ Requires-Dist: click==8.5.0; extra == 'dev'
48
48
  Requires-Dist: coverage==7.10.7; extra == 'dev'
49
49
  Requires-Dist: docutils==0.22.4; extra == 'dev'
50
50
  Requires-Dist: durationpy==0.10; extra == 'dev'
@@ -1,6 +1,5 @@
1
1
  appdirs
2
- # TODO: remove 8.3.0 when https://github.com/overhangio/tutor/issues/1276 is resolved completely
3
- click>=8.0,<8.3.0
2
+ click>=8.4
4
3
  jinja2>=2.10
5
4
  kubernetes
6
5
  mypy
@@ -29,7 +29,7 @@ charset-normalizer==3.4.7
29
29
  # via
30
30
  # -r requirements/base.txt
31
31
  # requests
32
- click==8.1.8
32
+ click==8.5.0
33
33
  # via
34
34
  # -r requirements/base.txt
35
35
  # click-log
@@ -12,7 +12,7 @@ from tutor import config as tutor_config
12
12
  from tutor import env, exceptions, fmt, hooks, serialize, utils
13
13
  from tutor import interactive as interactive_config
14
14
  from tutor.commands.context import Context
15
- from tutor.commands.params import ConfigLoaderParam
15
+ from tutor.commands.params import ConfigLoaderParam, ParamValue
16
16
  from tutor.types import Config, ConfigValue
17
17
 
18
18
 
@@ -25,7 +25,7 @@ def config_command() -> None:
25
25
  pass
26
26
 
27
27
 
28
- class ConfigKeyParamType(ConfigLoaderParam):
28
+ class ConfigKeyParamType(ConfigLoaderParam[ParamValue]):
29
29
  name = "configkey"
30
30
 
31
31
  def shell_complete(
@@ -49,7 +49,7 @@ class ConfigKeyParamType(ConfigLoaderParam):
49
49
  yield from self.config.items()
50
50
 
51
51
 
52
- class ConfigKeyValParamType(ConfigKeyParamType):
52
+ class ConfigKeyValParamType(ConfigKeyParamType[tuple[str, t.Any]]):
53
53
  """
54
54
  Parser for <KEY>=<YAML VALUE> command line arguments.
55
55
  """
@@ -131,7 +131,7 @@ class ConfigListKeyValParamType(ConfigKeyValParamType):
131
131
  "--unset",
132
132
  "unset_vars",
133
133
  multiple=True,
134
- type=ConfigKeyParamType(),
134
+ type=ConfigKeyParamType[str](),
135
135
  help="Remove a configuration value (can be used multiple times)",
136
136
  )
137
137
  @click.option(
@@ -221,7 +221,7 @@ def printroot(context: Context) -> None:
221
221
 
222
222
 
223
223
  @click.command(help="Print a configuration value")
224
- @click.argument("key", type=ConfigKeyParamType())
224
+ @click.argument("key", type=ConfigKeyParamType[str]())
225
225
  @click.pass_obj
226
226
  def printvalue(context: Context, key: str) -> None:
227
227
  config = tutor_config.load(context.root)
@@ -88,7 +88,7 @@ def _add_core_images_to_push(
88
88
  return remote_images
89
89
 
90
90
 
91
- class ImageNameParam(ConfigLoaderParam):
91
+ class ImageNameParam(ConfigLoaderParam[str]):
92
92
  """
93
93
  Convenient auto-completion of image names.
94
94
  """
@@ -12,7 +12,7 @@ from tutor.commands.context import Context
12
12
  from tutor.commands.params import ConfigLoaderParam
13
13
 
14
14
 
15
- class MountParamType(ConfigLoaderParam):
15
+ class MountParamType(ConfigLoaderParam[str]):
16
16
  name = "mount"
17
17
 
18
18
  def shell_complete(
@@ -6,8 +6,12 @@ from tutor import config as tutor_config
6
6
  from tutor import hooks
7
7
  from tutor.types import Config
8
8
 
9
+ # Type of the value produced by the param type `convert` method. Since click 8.4,
10
+ # `click.ParamType` is generic and must be parameterized with that type.
11
+ ParamValue = t.TypeVar("ParamValue")
9
12
 
10
- class ConfigLoaderParam(click.ParamType):
13
+
14
+ class ConfigLoaderParam(click.ParamType[ParamValue]):
11
15
  """
12
16
  Convenient param child class that automatically loads the user configuration on auto-complete.
13
17
  """
@@ -19,7 +19,7 @@ from tutor.types import Config
19
19
  from .context import Context
20
20
 
21
21
 
22
- class PluginName(click.ParamType):
22
+ class PluginName(click.ParamType[str]):
23
23
  """
24
24
  Convenient param type that supports autocompletion of installed plugin names.
25
25
  """
@@ -44,7 +44,7 @@ class PluginName(click.ParamType):
44
44
  return [name for name in candidates if name.startswith(incomplete)]
45
45
 
46
46
 
47
- class IndexPluginName(click.ParamType):
47
+ class IndexPluginName(click.ParamType[str]):
48
48
  """
49
49
  Param type for auto-completion of plugin names found in index cache.
50
50
  """