snowflakedb/snowflake-cli

SNOW-981371: key error connections.dev

Closed this issue · 2 comments

SnowCLI version

0.2.9

Python version

3.10.13

Platform

Linux-6.5.0-13-generic-x86_64-with-glibc2.38

What happened

Trying to do this course locally though not Github codespaces: https://quickstarts.snowflake.com/guide/data_engineering_pipelines_with_snowpark_python/index.html#6

@[CesarSegura]​ when I run it from the subdirectory I was supposed to run it from, I get a different error:


(snowflake) nyck33@nyck33-tt:~/Documents/DataEngineering/snowpark/sfguide-data-engineering-with-snowpark-python/steps/05_fahrenheit_to_celsius_udf$ snow function create

Resolving any requirements from requirements.txt...



Deployment package now ready: app.zip

╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/site-packages/snowcli/cli/function.py │

│ :98 in function_create                                                                          │

│                                                                                                 │

│   95 │  │  check_anaconda_for_pypi_deps,                                                     │

│   96 │  │  package_native_libraries, # type: ignore[arg-type]                               │

│   97 │  )                                                                                     │

│ ❱ 98 │  snowpark_create(                                                                      │

│   99 │  │  type="function",                                                                  │

│  100 │  │  environment=environment,                                                          │

│  101 │  │  name=name,                                                                        │

│                                                                                                 │

│ ╭────────────────────────── locals ──────────────────────────╮                                  │

│ │ check_anaconda_for_pypi_deps = True                       │                                  │

│ │                 environment = 'dev'                      │                                  │

│ │                        file = PosixPath('app.zip')       │                                  │

│ │                     handler = 'app.main'                 │                                  │

│ │            input_parameters = '(temp_f float)'           │                                  │

│ │                        name = 'fahrenheit_to_celsius_udf' │                                  │

│ │                   overwrite = True                       │                                  │

│ │    package_native_libraries = 'ask'                      │                                  │

│ │               pypi_download = 'ask'                      │                                  │

│ │                 return_type = 'float'                    │                                  │

│ ╰────────────────────────────────────────────────────────────╯                                  │

│                                                                                                 │

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/site-packages/snowcli/cli/snowpark_sh │

│ ared.py:61 in snowpark_create                                                                   │

│                                                                                                 │

│   58 │  │  )                                                                                 │

│   59 │  │  raise typer.Abort()                                                               │

│   60 │  if config.isAuth():                                                                   │

│ ❱ 61 │  │  config.connectToSnowflake()                                                       │

│   62 │  │  deploy_dict = utils.getDeployNames(                                               │

│   63 │  │  │  env_conf["database"],                                                         │

│   64 │  │  │  env_conf["schema"],                                                           │

│                                                                                                 │

│ ╭──────────────────────── locals ────────────────────────╮                                      │

│ │                env_conf = {                          │                                      │

│ │                           │  'database': 'HOL_DB',  │                                      │

│ │                           │  'schema': 'ANALYTICS', │                                      │

│ │                           │  'warehouse': 'HOL_WH', │                                      │

│ │                           │  'role': 'HOL_ROLE',    │                                      │

│ │                           │  'overwrite': True      │                                      │

│ │                           }                          │                                      │

│ │             environment = 'dev'                      │                                      │

│ │       execute_as_caller = False                      │                                      │

│ │                    file = PosixPath('app.zip')       │                                      │

│ │                 handler = 'app.main'                 │                                      │

│ │        input_parameters = '(temp_f float)'           │                                      │

│ │ install_coverage_wrapper = False                      │                                      │

│ │                    name = 'fahrenheit_to_celsius_udf' │                                      │

│ │               overwrite = True                       │                                      │

│ │             return_type = 'float'                    │                                      │

│ │                    type = 'function'                 │                                      │

│ ╰────────────────────────────────────────────────────────╯                                      │

│                                                                                                 │

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/site-packages/snowcli/config.py:49 in │

│ connectToSnowflake                                                                              │

│                                                                                                 │

│  46 │  # the one specified by configuration file                                              │

│  47 │  connection = connection or cfg.config.get("snowsql_connection_name")                   │

│  48 │                                                                                          │

│ ❱ 49 │  snowflake_connection = SnowflakeConnector(                                             │

│  50 │  │  snowsql_config, connection, overrides=overrides                                    │

│  51 │  )                                                                                      │

│  52                                                                                            │

│                                                                                                 │

│ ╭───────────────────────────────────── locals ─────────────────────────────────────╮            │

│ │           cfg = <snowcli.config.AppConfig object at 0x7fb96e9de290>            │            │

│ │    connection = 'dev'                                                          │            │

│ │     overrides = {}                                                             │            │

│ │ snowsql_config = <snowcli.snowsql_config.SnowsqlConfig object at 0x7fb96e9de7d0> │            │

│ ╰──────────────────────────────────────────────────────────────────────────────────╯            │

│                                                                                                 │

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/site-packages/snowcli/snow_connector. │

│ py:37 in __init__                                                                               │

│                                                                                                 │

│   34 │  ):                                                                                    │

│   35 │  │  self.snowsql_config = snowsql_config                                              │

│   36 │  │  self.connection_name = connection_name                                            │

│ ❱ 37 │  │  self.connection_config: dict = snowsql_config.get_connection(                     │

│   38 │  │  │  connection_name,                                                              │

│   39 │  │  )                                                                                 │

│   40 │  │  if overrides:                                                                     │

│                                                                                                 │

│ ╭──────────────────────────────────────── locals ────────────────────────────────────────╮      │

│ │ connection_name = 'dev'                                                               │      │

│ │      overrides = {}                                                                  │      │

│ │           self = <snowcli.snow_connector.SnowflakeConnector object at 0x7fb96e9de5c0> │      │

│ │ snowsql_config = <snowcli.snowsql_config.SnowsqlConfig object at 0x7fb96e9de7d0>     │      │

│ ╰────────────────────────────────────────────────────────────────────────────────────────╯      │

│                                                                                                 │

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/site-packages/snowcli/snowsql_config. │

│ py:16 in get_connection                                                                         │

│                                                                                                 │

│  13 │  │  self.config.read(os.path.expanduser(path))                                         │

│  14 │                                                                                          │

│  15 │  def get_connection(self, connection_name):                                             │

│ ❱ 16 │  │  connection = self.config["connections." + connection_name]                         │

│  17 │  │  # Remap names to appropriate args in Python Connector API                          │

│  18 │  │  connection = {                                                                     │

│  19 │  │  │  k.replace("name", ""): v.strip('"') for k, v in connection.items()             │

│                                                                                                 │

│ ╭───────────────────────────────────── locals ──────────────────────────────────────╮           │

│ │ connection_name = 'dev'                                                          │           │

│ │           self = <snowcli.snowsql_config.SnowsqlConfig object at 0x7fb96e9de7d0> │           │

│ ╰───────────────────────────────────────────────────────────────────────────────────╯           │

│                                                                                                 │

│ /home/nyck33/miniforge-pypy3/envs/snowflake/lib/python3.10/configparser.py:965 in __getitem__   │

│                                                                                                 │

│   962 │                                                                                        │

│   963 │  def __getitem__(self, key):                                                          │

│   964 │  │  if key != self.default_section and not self.has_section(key):                    │

│ ❱ 965 │  │  │  raise KeyError(key)                                                          │

│   966 │  │  return self._proxies[key]                                                        │

│   967 │                                                                                        │

│   968 │  def __setitem__(self, key, value):                                                   │

│                                                                                                 │

│ ╭────────────────────────── locals ───────────────────────────╮                                 │

│ │ key = 'connections.dev'                                   │                                 │

│ │ self = <configparser.ConfigParser object at 0x7fb96e9de4a0> │                                 │

│ ╰─────────────────────────────────────────────────────────────╯                                 │

╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

KeyError: 'connections.dev'

(snowflake) nyck33@nyck33-tt:~/Documents/DataEngineering/snowpark/sfguide-data-engineering-with-snowpark-python/steps/05_fahrenheit_to_celsius_udf$ 

I can shift-ctrl-F search the project open in VSCode which shows me two places connection.dev appears.

In config and build_and_deployment.yaml.

Console output

see above

How to reproduce

fork project repo, go through tutorial locally. My conda list:

(snowflake) nyck33@nyck33-tt:~/Documents/DataEngineering/snowpark/sfguide-data-engineering-with-snowpark-python/steps/05_fahrenheit_to_celsius_udf$ conda list
# packages in environment at /home/nyck33/miniforge-pypy3/envs/snowflake:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
asn1crypto                1.5.1                    pypi_0    pypi
asttokens                 2.4.1              pyhd8ed1ab_0    conda-forge
backports                 1.0                pyhd8ed1ab_3    conda-forge
backports.functools_lru_cache 1.6.5              pyhd8ed1ab_0    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
ca-certificates           2023.11.17           hbcca054_0    conda-forge
certifi                   2023.11.17               pypi_0    pypi
cffi                      1.16.0                   pypi_0    pypi
charset-normalizer        3.3.2                    pypi_0    pypi
click                     8.1.7                    pypi_0    pypi
cloudpickle               2.0.0                    pypi_0    pypi
comm                      0.1.4              pyhd8ed1ab_0    conda-forge
coverage                  7.3.2                    pypi_0    pypi
cryptography              41.0.5                   pypi_0    pypi
debugpy                   1.8.0           py310hc6cd4ac_1    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
exceptiongroup            1.1.3              pyhd8ed1ab_0    conda-forge
executing                 2.0.1              pyhd8ed1ab_0    conda-forge
filelock                  3.13.1                   pypi_0    pypi
idna                      3.4                      pypi_0    pypi
importlib-metadata        6.8.0              pyha770c72_0    conda-forge
importlib_metadata        6.8.0                hd8ed1ab_0    conda-forge
ipykernel                 6.26.0             pyhf8b6a83_0    conda-forge
ipython                   8.17.2             pyh41d4057_0    conda-forge
jaraco-classes            3.3.0                    pypi_0    pypi
jedi                      0.19.1             pyhd8ed1ab_0    conda-forge
jeepney                   0.8.0                    pypi_0    pypi
jinja2                    3.1.2                    pypi_0    pypi
jupyter_client            8.6.0              pyhd8ed1ab_0    conda-forge
jupyter_core              5.5.0           py310hff52083_0    conda-forge
keyring                   24.3.0                   pypi_0    pypi
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 13.2.0               h807b86a_3    conda-forge
libgomp                   13.2.0               h807b86a_3    conda-forge
libnsl                    2.0.1                hd590300_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libsqlite                 3.44.0               h2797004_0    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_3    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
markdown-it-py            3.0.0                    pypi_0    pypi
markupsafe                2.1.3                    pypi_0    pypi
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mdurl                     0.1.2                    pypi_0    pypi
more-itertools            10.1.0                   pypi_0    pypi
ncurses                   6.4                  h59595ed_2    conda-forge
nest-asyncio              1.5.8              pyhd8ed1ab_0    conda-forge
numpy                     1.26.2                   pypi_0    pypi
openssl                   3.1.4                hd590300_0    conda-forge
packaging                 23.2               pyhd8ed1ab_0    conda-forge
pandas                    2.0.3                    pypi_0    pypi
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pip                       23.3.1             pyhd8ed1ab_0    conda-forge
platformdirs              3.11.0                   pypi_0    pypi
prompt-toolkit            3.0.41             pyha770c72_0    conda-forge
prompt_toolkit            3.0.41               hd8ed1ab_0    conda-forge
psutil                    5.9.5           py310h2372a71_1    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pyarrow                   14.0.1                   pypi_0    pypi
pycparser                 2.21                     pypi_0    pypi
pygments                  2.17.0             pyhd8ed1ab_0    conda-forge
pyjwt                     2.8.0                    pypi_0    pypi
pyopenssl                 23.3.0                   pypi_0    pypi
python                    3.10.13         hd12c33a_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-dotenv             1.0.0                    pypi_0    pypi
python_abi                3.10                    4_cp310    conda-forge
pytz                      2023.3.post1             pypi_0    pypi
pyyaml                    6.0.1                    pypi_0    pypi
pyzmq                     25.1.1          py310h795f18f_2    conda-forge
readline                  8.2                  h8228510_1    conda-forge
requests                  2.31.0                   pypi_0    pypi
requirements-parser       0.5.0                    pypi_0    pypi
rich                      13.7.0                   pypi_0    pypi
secretstorage             3.3.3                    pypi_0    pypi
setuptools                68.2.2             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snowflake-cli-labs        0.2.9                    pypi_0    pypi
snowflake-connector-python 3.5.0                    pypi_0    pypi
snowflake-snowpark-python 1.10.0                   pypi_0    pypi
sortedcontainers          2.4.0                    pypi_0    pypi
stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
tk                        8.6.13          noxft_h4845f30_101    conda-forge
toml                      0.10.2                   pypi_0    pypi
tomlkit                   0.12.3                   pypi_0    pypi
tornado                   6.3.3           py310h2372a71_1    conda-forge
traitlets                 5.13.0             pyhd8ed1ab_0    conda-forge
typer                     0.9.0                    pypi_0    pypi
types-setuptools          69.0.0.0                 pypi_0    pypi
typing_extensions         4.8.0              pyha770c72_0    conda-forge
tzdata                    2023.3                   pypi_0    pypi
urllib3                   1.26.18                  pypi_0    pypi
wcwidth                   0.2.10             pyhd8ed1ab_0    conda-forge
wheel                     0.41.3             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zeromq                    4.3.5                h59595ed_0    conda-forge
zipp                      3.17.0             pyhd8ed1ab_0    conda-forge
(snowflake) nyck33@nyck33-tt:~/Documents/DataEngineering/snowpark/sfguide-data-engineering-with-snowpark-python/steps/05_fahrenheit_to_celsius_udf$ 

Guide is not up to date, we're working on it but for various reasons it can take some more time.

Closing as the issue was fixed in current version.