paramsx 2.0.0__tar.gz → 2.1.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,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Añadido
6
+
7
+ - **Flag `obligatorias_vacias`** en `~/.xsoft/paramsx_config.py`. Solo tiene efecto con `abac = True`:
8
+ - `False` (valor por defecto, comportamiento de la 2.0.0): validación bloqueante. Si a un parámetro le falta cualquiera de las tags obligatorias no se sube ni su valor ni sus tags, y al crear un parámetro no se puede dejar una tag en blanco.
9
+ - `True`: se permite dejar vacías las tags obligatorias. El parámetro se sube igualmente y **las tags sin valor no se crean en AWS**: nunca se suben etiquetas vacías. En la creación puedes saltar una tag pulsando Enter y el resumen previo lista cuáles quedan vacías.
10
+ - El informe de carga incluye un bloque `Tags obligatorias vacías` con el parámetro y las tags afectadas, para dejar constancia sin bloquear.
11
+
12
+ No hay que tocar nada en la configuración para actualizar desde la 2.0.0: si no defines `obligatorias_vacias`, se asume `False` y todo sigue igual.
13
+
14
+ ### Nota
15
+
16
+ Vaciar una tag **que ya tenía valor en AWS** sigue significando borrarla del parámetro, en los dos modos. Es la forma de eliminar una tag. Lo que cambia con `obligatorias_vacias = True` es que una tag en blanco que nunca existió simplemente no se crea, en vez de bloquear la subida.
17
+
3
18
  ## 2.0.0
4
19
 
5
20
  ### ⚠ Breaking change: hay que actualizar `~/.xsoft/paramsx_config.py` a mano
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paramsx
3
- Version: 2.0.0
3
+ Version: 2.1.0
4
4
  Summary: Librería para gestionar y respaldar parámetros de AWS SSM de manera sencilla y eficiente.
5
5
  Home-page: https://github.com/pistatxos/paramsx
6
6
  Author: Mariox
@@ -147,6 +147,8 @@ configuraciones = {
147
147
 
148
148
  abac = True
149
149
 
150
+ obligatorias_vacias = False
151
+
150
152
  tags_obligatorias = [
151
153
  "Application", "Environment", "Owner", "Project",
152
154
  "Product", "Service", "Component", "ManagedBy",
@@ -237,14 +239,25 @@ parametros = [
237
239
 
238
240
  Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
239
241
 
242
+ #### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
243
+
244
+ En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
245
+
246
+ | `obligatorias_vacias` | Comportamiento |
247
+ |---|---|
248
+ | `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
249
+ | `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
250
+
251
+ Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
252
+
240
253
  Detalles del comportamiento con `abac = True`:
241
254
 
242
- - La validación es **bloqueante y por parámetro**: si a uno le falta cualquiera de las 8 tags no se sube **ni su valor ni sus tags**, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
255
+ - La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
243
256
  - Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
244
257
  - Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
245
258
  - Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
246
259
  - Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
247
- - No hay forma de saltarse la validación salvo poner `abac = False` explícitamente en tu configuración.
260
+ - No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
248
261
 
249
262
  #### Configuración manual del PATH
250
263
  En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
@@ -307,7 +320,7 @@ El programa mostrará un menú donde Podrás:
307
320
  1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
308
321
  2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
309
322
  3. Escribe el valor: texto plano o JSON en una línea.
310
- 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
323
+ 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
311
324
  5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
312
325
 
313
326
  ### Backup Parámetros:
@@ -127,6 +127,8 @@ configuraciones = {
127
127
 
128
128
  abac = True
129
129
 
130
+ obligatorias_vacias = False
131
+
130
132
  tags_obligatorias = [
131
133
  "Application", "Environment", "Owner", "Project",
132
134
  "Product", "Service", "Component", "ManagedBy",
@@ -217,14 +219,25 @@ parametros = [
217
219
 
218
220
  Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
219
221
 
222
+ #### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
223
+
224
+ En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
225
+
226
+ | `obligatorias_vacias` | Comportamiento |
227
+ |---|---|
228
+ | `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
229
+ | `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
230
+
231
+ Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
232
+
220
233
  Detalles del comportamiento con `abac = True`:
221
234
 
222
- - La validación es **bloqueante y por parámetro**: si a uno le falta cualquiera de las 8 tags no se sube **ni su valor ni sus tags**, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
235
+ - La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
223
236
  - Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
224
237
  - Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
225
238
  - Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
226
239
  - Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
227
- - No hay forma de saltarse la validación salvo poner `abac = False` explícitamente en tu configuración.
240
+ - No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
228
241
 
229
242
  #### Configuración manual del PATH
230
243
  En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
@@ -287,7 +300,7 @@ El programa mostrará un menú donde Podrás:
287
300
  1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
288
301
  2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
289
302
  3. Escribe el valor: texto plano o JSON en una línea.
290
- 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
303
+ 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
291
304
  5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
292
305
 
293
306
  ### Backup Parámetros:
@@ -56,9 +56,12 @@ def load_config():
56
56
  spec.loader.exec_module(modulo)
57
57
 
58
58
  config = dict(modulo.configuraciones)
59
- # 'abac' y 'tags_obligatorias' son opcionales en el fichero del usuario:
60
- # si no están, se usan los valores de la plantilla que trae el paquete.
59
+ # 'abac', 'obligatorias_vacias' y 'tags_obligatorias' son opcionales en el fichero del
60
+ # usuario: si no están, se usan los valores de la plantilla que trae el paquete.
61
61
  config["abac"] = bool(getattr(modulo, "abac", plantilla_config.abac))
62
+ config["obligatorias_vacias"] = bool(
63
+ getattr(modulo, "obligatorias_vacias", plantilla_config.obligatorias_vacias)
64
+ )
62
65
  config["tags_obligatorias"] = list(
63
66
  getattr(modulo, "tags_obligatorias", plantilla_config.tags_obligatorias)
64
67
  )
@@ -142,7 +145,7 @@ def leer_ruta(stdscr, ssm, full_path, abac, tags_obligatorias):
142
145
 
143
146
 
144
147
  # Feature 2: crear un parámetro nuevo, siempre en convención "min"
145
- def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
148
+ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias, obligatorias_vacias=False):
146
149
  env_choice = show_environment_selection(stdscr, entornos)
147
150
  if env_choice is None:
148
151
  return
@@ -197,7 +200,14 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
197
200
 
198
201
  # 3. Tags obligatorias
199
202
  tags = {}
203
+ faltantes = []
200
204
  if abac:
205
+ if obligatorias_vacias:
206
+ ayuda_tags = ("Las tags sostienen el control de acceso ABAC vía IAM. "
207
+ "Puedes dejarla vacía: si no tiene valor no se creará en AWS.")
208
+ else:
209
+ ayuda_tags = "Las tags sostienen el control de acceso ABAC vía IAM: son obligatorias."
210
+
201
211
  for indice, clave in enumerate(tags_obligatorias, start=1):
202
212
  predeterminado = entorno if clave == "Environment" else ""
203
213
  respuesta = prompt_input(
@@ -205,14 +215,15 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
205
215
  f"Crear nuevo parámetro (3/3): tags [{indice}/{len(tags_obligatorias)}]",
206
216
  f"Valor de la tag obligatoria '{clave}':",
207
217
  valor=predeterminado,
208
- ayuda="Las tags sostienen el control de acceso ABAC vía IAM: son obligatorias.",
218
+ permitir_vacio=obligatorias_vacias,
219
+ ayuda=ayuda_tags,
209
220
  )
210
221
  if respuesta is None:
211
222
  return
212
223
  tags[clave] = respuesta.strip()
213
224
 
214
225
  faltantes = validar_tags_obligatorias(tags, tags_obligatorias)
215
- if faltantes:
226
+ if faltantes and not obligatorias_vacias:
216
227
  show_report(
217
228
  stdscr,
218
229
  "Tags obligatorias incompletas",
@@ -221,6 +232,9 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
221
232
  )
222
233
  return
223
234
 
235
+ # Las tags sin valor no se suben a AWS
236
+ tags = {clave: valor for clave, valor in tags.items() if valor}
237
+
224
238
  # Aviso de correlación de naming en RDS (no bloquea)
225
239
  aviso_rds = check_rds_correlacion(ssm, path)
226
240
 
@@ -229,6 +243,10 @@ def crear_parametro(stdscr, ssm, entornos, abac, tags_obligatorias):
229
243
  if abac:
230
244
  lineas.append("Tags:")
231
245
  lineas.extend([f" {clave} = {valor_tag}" for clave, valor_tag in tags.items()])
246
+ if faltantes:
247
+ lineas.append(
248
+ f" Se quedan vacías (no se crearán en AWS): {', '.join(faltantes)}"
249
+ )
232
250
  lineas.append("")
233
251
  if aviso_rds:
234
252
  lineas.extend([aviso_rds, ""])
@@ -297,6 +315,7 @@ def main(stdscr, config=None):
297
315
  PARAMETER_LIST = config['parameter_list']
298
316
  ABAC = config['abac']
299
317
  TAGS_OBLIGATORIAS = config['tags_obligatorias']
318
+ OBLIGATORIAS_VACIAS = config.get('obligatorias_vacias', False)
300
319
 
301
320
  while True:
302
321
  # Usar el menú con navegación por flechas
@@ -395,21 +414,28 @@ def main(stdscr, config=None):
395
414
 
396
415
  aplicados = []
397
416
  errores = []
417
+ vacias = []
398
418
 
399
419
  for change in changes:
400
420
  param_name = change["name"]
401
421
  tipo = change["tipo"]
402
422
 
403
423
  if tipo in ("Nuevo", "Modificado"):
404
- # Validación bloqueante por parámetro: sin las tags obligatorias no se sube nada
405
424
  if ABAC:
406
425
  faltantes = validar_tags_obligatorias(change["tags"], TAGS_OBLIGATORIAS)
407
- if faltantes:
426
+ if faltantes and not OBLIGATORIAS_VACIAS:
427
+ # Validación bloqueante por parámetro: sin las tags no se sube nada
408
428
  errores.append(
409
429
  f"✗ {param_name}: no se ha subido (ni valor ni tags). "
410
430
  f"Faltan las tags obligatorias: {', '.join(faltantes)}."
411
431
  )
412
432
  continue
433
+ if faltantes:
434
+ # Permitidas vacías: se sube igual y esas tags no se crean en AWS
435
+ vacias.append(
436
+ f"· {param_name}: sin valor en {', '.join(faltantes)} "
437
+ "(no se crean en AWS)."
438
+ )
413
439
 
414
440
  try:
415
441
  if change["value_changed"]:
@@ -449,6 +475,10 @@ def main(stdscr, config=None):
449
475
 
450
476
  lineas = [f"Cambios aplicados: {len(aplicados)} de {len(changes)}"]
451
477
 
478
+ if vacias:
479
+ lineas.extend(["", f"Tags obligatorias vacías ({len(vacias)}):"])
480
+ lineas.extend(vacias)
481
+
452
482
  if errores:
453
483
  # Se conservan los ficheros para que el usuario corrija y vuelva a cargar.
454
484
  # El backup se resincroniza con lo ya aplicado para no repetir esos cambios.
@@ -589,7 +619,9 @@ def main(stdscr, config=None):
589
619
 
590
620
  elif choice == 4:
591
621
  # Crear nuevo parámetro (siempre en convención "min")
592
- crear_parametro(stdscr, ssm, environments, ABAC, TAGS_OBLIGATORIAS)
622
+ crear_parametro(
623
+ stdscr, ssm, environments, ABAC, TAGS_OBLIGATORIAS, OBLIGATORIAS_VACIAS
624
+ )
593
625
 
594
626
  else:
595
627
  show_message(stdscr, "Opción inválida. Inténtalo de nuevo.", 2)
@@ -630,6 +662,9 @@ Configuración (~/.xsoft/paramsx_config.py):
630
662
  'max' -> /API/DEV/STA (entorno en mayúscula, tras el 1er segmento)
631
663
  abac True para gestionar las tags obligatorias en el fichero exportado.
632
664
  tags_obligatorias Tags que sostienen el control de acceso ABAC vía IAM.
665
+ obligatorias_vacias False -> no se sube un parámetro al que le falte alguna tag.
666
+ True -> se permite dejarlas vacías; las tags sin valor
667
+ no se crean en AWS.
633
668
 
634
669
  Si necesitas más ayuda puedes leer el readme en GitHub o en Pypi:
635
670
  - https://github.com/Pistatxos/paramsx
@@ -24,6 +24,13 @@ configuraciones = {
24
24
  # False -> las tags no aparecen en el fichero exportado (comportamiento legacy, sin tags).
25
25
  abac = True
26
26
 
27
+ # ¿Se pueden dejar vacías las tags obligatorias?
28
+ # False -> validación bloqueante: si a un parámetro le falta alguna de 'tags_obligatorias'
29
+ # no se sube (ni su valor ni sus tags).
30
+ # True -> se permiten vacías: el parámetro se sube igualmente y las tags sin valor
31
+ # simplemente NO se crean en AWS (no se suben como etiquetas vacías).
32
+ obligatorias_vacias = False
33
+
27
34
  # Estas tags sostienen el control de acceso ABAC vía IAM en toda la cuenta AWS.
28
35
  # La lista es ampliable, pero estas 8 son el mínimo por defecto.
29
36
  tags_obligatorias = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: paramsx
3
- Version: 2.0.0
3
+ Version: 2.1.0
4
4
  Summary: Librería para gestionar y respaldar parámetros de AWS SSM de manera sencilla y eficiente.
5
5
  Home-page: https://github.com/pistatxos/paramsx
6
6
  Author: Mariox
@@ -147,6 +147,8 @@ configuraciones = {
147
147
 
148
148
  abac = True
149
149
 
150
+ obligatorias_vacias = False
151
+
150
152
  tags_obligatorias = [
151
153
  "Application", "Environment", "Owner", "Project",
152
154
  "Product", "Service", "Component", "ManagedBy",
@@ -237,14 +239,25 @@ parametros = [
237
239
 
238
240
  Este formato con tags **solo existe en el fichero temporal que genera ParamsX**: no se ve en la consola de AWS ni se persiste en ningún otro sitio. Tiene el mismo ciclo de vida que el resto del fichero (se genera, se edita, se compara, se aplica y se borra al confirmar).
239
241
 
242
+ #### `obligatorias_vacias`: cuando alguna tag tiene que ir vacía
243
+
244
+ En la práctica hay parámetros a los que no les aplica alguna de las 8 tags. Ese caso se controla con `obligatorias_vacias`, y solo tiene efecto si `abac = True`:
245
+
246
+ | `obligatorias_vacias` | Comportamiento |
247
+ |---|---|
248
+ | `False` (por defecto) | Validación bloqueante: si a un parámetro le falta cualquiera de las tags obligatorias no se sube **ni su valor ni sus tags**. Al crear un parámetro tampoco te deja continuar dejando una tag en blanco. |
249
+ | `True` | Se permiten vacías: el parámetro se sube igualmente y **las tags sin valor no se crean en AWS** (no se suben como etiquetas vacías). En el informe de carga verás qué parámetros han quedado con tags vacías y cuáles son. |
250
+
251
+ Ojo con la diferencia entre "vacía" y "borrada": con `obligatorias_vacias = True`, una tag que se deja en blanco y **nunca existió** simplemente no se crea; pero si esa tag **ya tenía valor en AWS** y la vacías en el fichero, se interpreta como que quieres borrarla y se elimina del parámetro. Es la forma de quitar una tag.
252
+
240
253
  Detalles del comportamiento con `abac = True`:
241
254
 
242
- - La validación es **bloqueante y por parámetro**: si a uno le falta cualquiera de las 8 tags no se sube **ni su valor ni sus tags**, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
255
+ - La validación es **por parámetro**, no global: con `obligatorias_vacias = False`, si a uno le falta cualquiera de las 8 tags no se sube ni su valor ni sus tags, y verás un error indicando qué tags faltan y a qué `parameter_name`. El resto de parámetros del fichero que estén completos se suben con normalidad.
243
256
  - Cuando una carga queda a medias, los ficheros `parameters_{entorno}.py` y su backup **no se borran**, para que corrijas lo que falta y vuelvas a cargar. El backup se resincroniza con lo ya aplicado, así que la segunda pasada solo sube lo que quedó pendiente.
244
257
  - Si el parámetro ya existe y le faltan tags (creado antes de esta versión), se rellenan en este mismo flujo de edición, sin borrar ni recrear el parámetro.
245
258
  - Los cambios de tags se aplican con `add_tags_to_resource` / `remove_tags_from_resource` en la misma pasada que el valor. Vaciar el campo de una tag en el fichero equivale a borrarla en AWS.
246
259
  - Las tags de sistema (`aws:*`) no se exportan ni se tocan. Las tags que ya existan en AWS y no estén en la lista obligatoria se conservan y se pueden editar.
247
- - No hay forma de saltarse la validación salvo poner `abac = False` explícitamente en tu configuración.
260
+ - No hay forma de saltarse la validación por parámetro salvo relajarla explícitamente en tu configuración con `obligatorias_vacias = True`, o desactivar las tags por completo con `abac = False`.
248
261
 
249
262
  #### Configuración manual del PATH
250
263
  En algunos sistemas (especialmente en entornos corporativos como Windows), el PATH puede no configurarse automáticamente durante la instalación. Si ocurre esto, sigue los pasos según tu sistema operativo:
@@ -307,7 +320,7 @@ El programa mostrará un menú donde Podrás:
307
320
  1. Selecciona la opción "Crear nuevo parámetro" y elige el entorno.
308
321
  2. Escribe la ruta completa en convención `min` (`/dev/...`): se fuerza a minúscula y se valida que el primer segmento sea el entorno.
309
322
  3. Escribe el valor: texto plano o JSON en una línea.
310
- 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido.
323
+ 4. Rellena las tags obligatorias (si `abac = True`). `Environment` viene precargada con el entorno elegido. Con `obligatorias_vacias = True` puedes dejar alguna en blanco pulsando Enter: esas no se crearán en AWS.
311
324
  5. Confirma en la pantalla de resumen. Si es un parámetro de RDS y falta su contraparte (común o privado), verás el aviso de correlación de naming ahí mismo.
312
325
 
313
326
  ### Backup Parámetros:
@@ -76,7 +76,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
76
76
  # Configuración del paquete
77
77
  setup(
78
78
  name="paramsx",
79
- version="2.0.0",
79
+ version="2.1.0",
80
80
  packages=find_packages(),
81
81
  include_package_data=True,
82
82
  package_data={
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes