Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] negative numbers not parsed as integers from environment variables #799

Closed
alexgeorgousis opened this issue Sep 5, 2022 · 3 comments
Assignees
Labels
bug HIGH High Priority
Milestone

Comments

@alexgeorgousis
Copy link

Describe the bug
In version 1.3.9 environment variables that are negative represented as strings (e.g. DYNACONF_NUM="-1") are not cast to type int when loaded in Python. This isn't true in version 1.3.4.

To Reproduce
Steps to reproduce the behavior:

  1. Having the following folder structure
Project structure
.
├── test.py
└── settings.toml
  1. Having the following config files:
Config files

./settings.toml

num = 1
  1. Having the following app code:
Code

./test.py

from dynaconf import Dynaconf

settings = Dynaconf(settings_file="./settings.toml")
print(settings.num)
print(type(settings.num))
  1. Executing under the following environment
Execution
$ export DYNACONF_NUM="-1"
$ python ./test.py

Expected behavior
The python script should print the following:

-1
<class 'int'>

Actual behavior
The python script prints the following:

-1
<class 'str'>

Environment (please complete the following information):

  • OS: macOS Monerey 12.5.1
  • Dynaconf Version [e.g. 3.1.9]

Additional context
Again, this works as expected in version 3.1.4 so I assume something has changed in a recent version.

@rochacbruno rochacbruno changed the title [bug] [bug] negative numbers not parsed as integers from environment variables Sep 5, 2022
@rochacbruno rochacbruno added the HIGH High Priority label Sep 5, 2022
@rochacbruno
Copy link
Member

Thanks @alexgeorgousis the bug was introduced by PR #667

if (
isinstance(data, str)
and data.startswith(("+", "-"))
and data[1:].isdigit()
):
return data

And I am working on finding a solution that can work and still be valif for #585

@rochacbruno
Copy link
Member

@alexgeorgousis fixed #802

@rochacbruno rochacbruno self-assigned this Sep 5, 2022
@rochacbruno rochacbruno added this to the 3.2.0 milestone Sep 5, 2022
@alexgeorgousis
Copy link
Author

alexgeorgousis commented Sep 5, 2022

@alexgeorgousis fixed #802

Perfect! 💯

rochacbruno added a commit that referenced this issue Sep 22, 2022
Shortlog of commits since last release:

    Amadou Crookes (1):
          envars.md typo fix (#786)

    Bruno Rocha (19):
          Release version 3.1.9
          Bump dev version to 3.1.10
          Update badges
          demo repo will be replaced by a video tutorial soon
          Fix CI
          New data key casing must adapt to existing key casing (#795)
          Add test and docs about includes (#796)
          Removed vendor_src folder (#798)
          Replacing rochacbruno/ with dynaconf/ (#800)
          Fix codecov (#801)
          Parse negative numbers from envvar Fix #799 and Fix #585 (#802)
          Fix get command with Django (#804)
          Add a functional test runner (#805)
          Test runner docs and styling (#806)
          Allow merge_unique on lists when merge_enabled=True (#810)
          Rebind current env when forced for Pytest Fix #728 (#809)
          AUTO_CAST can be enabled on instance (#811)
          Ensure pyminify is on release script
          Add missing tomllib to monify script

    Gaurav Talreja (1):
          Fix #807 Use client.auth.approle.login instead of client.auth_approle (#808)

    Jitendra Yejare (1):
          Fix #768 of kv property depreciation from client object (#769)

    Joren Retel (2):
          Feature/detect casting comb token from converters (#784)
          Adding documentation and example to makefile. (#791)

    João Gustavo A. Amorim (1):
          Add pyupgrade hook (#759)

    Kian-Meng Ang (1):
          Fix typos (#788)

    Lucas Limeira (1):
          Using filter_strategy in env_loader to fix #760 (#767)

    Nicholas Nadeau, Ph.D., P.Eng (1):
          fix: typo (#766)

    Oleksii Baranov (2):
          Bump codecov action version (#775)
          Fix cli init command for flask (#705) (#774)

    Pedro de Medeiros (1):
          documentation fixes (#771)

    The Gitter Badger (1):
          Add a Gitter chat badge to README.md (#776)

    Théo Melo (1):
          Fixing a typo on the readme file (#763)

    Vicente Marçal (1):
          docs(pt-br): Docs Translation to brazilian portugues. (#787)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug HIGH High Priority
Projects
None yet
Development

No branches or pull requests

2 participants