aws / aws/sagemaker-python-sdk
Naming discrepancy between `env` in Processing and `environment` in Estimator
- Lenguaje dominante
- Python
- Estrellas
- 2.3k
- Forks
- 1.3k
- Merge medio
- 1 d 22 h
- PR fusionados (30 d)
- 35
Descripción
# Describe the feature you'd like
There is a discrepancy on passing environment variables in Processing and Estimator. The parameter is called `env` in Processing and `environment` in Estimator.
I would like these to be aligned. For backwards compatibility sake, this should probably be manifested through a `environment_variables` parameter, but any solution would work for me.
## The problem
The problem is that we cannot have a unified interface to these entities using `**kwargs` to pass arguments without manually parsing a parameter ourselves.
Current situation van be something like this if we use `env` for both situations:
```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
return Processing(**kwargs)
def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
env_vars = kwargs.pop("env")
if env_vars:
kwargs["environment"] = env_vars
return Estimator(**kwargs)
data_processing(environment="dev", env={"MY_VAR": 42})
model_training(environment="dev", env={"MY_VAR": 67})
```
Or with a more compatible interface
```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
env_vars = kwargs.pop("environment_variables")
if env_vars:
kwargs["env"] = env_vars
return Processing(**kwargs)
def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
env_vars = kwargs.pop("environment_variables")
if env_vars:
kwargs["environment"] = env_vars
return Estimator(**kwargs)
data_processing(environment="dev", environment_variables={"MY_VAR": 42})
model_training(environment="dev", environment_variables={"MY_VAR": 67})
```
Ideally, we would want it to look like this because both classes accept a `environment_variables` parameter:
```python
def data_processing(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
return Processing(**kwargs)
def model_training(environment: Literal["dev", "preprod", "prod"], **kwargs):
initialize_environment(environment)
return Estimator(**kwargs)
data_processing(environment="dev", environment_variables={"MY_VAR": 42})
model_training(environment="dev", environment_variables={"MY_VAR": 67})
```
Guía de contribución
Línea de trabajo
Comienza localizando los puntos de entrada de Processing y Estimator y sus parámetros existentes de variables de entorno. Compara cómo se exponen `env` y `environment` y, a continuación, determina una interfaz compartida compatible con versiones anteriores; el trabajo estará terminado cuando ambas entidades acepten el parámetro alineado sin romper el uso existente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- aws, python
- Área
- cloud, machine-learning
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100