Feature/detect casting comb token from converters #784
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
first of all: thanks for this amazing library. This makes life a lot easier.
Main
I have a suggestion, but I can not see all the implications it has. What I suggest is to suggest to change the regex that detects whether two casting tokens are used in one variable definition. I think it would be nice if this regex is generated dynamically based on the values in the "converters" dict. What this allows is that a user could add a custom casting token. For instance, I wanted a casting token that would cast the string to a pathlib.Path object (see example/custom_cast_token):
This last thing would also work without changing the regex. But it becomes a problem when I would like to do something like:
The regex as it is now does not pick up "@path @Format" and therefore does not do the format step. This PR would solve that.
As as note. I also, found another solution that does not require changing Dynaconf:
with the following:
but this feels slightly hacky and would not allow to have casting to path without also formatting (which the Lazy does).
Tests
Before submitting this pull request I ran "make test_only" and that all passes. I also ran "make all", there I ran into some "maximum recursion depth reached" error. I already had this problem before making any changes though. I followed https://github.com/dynaconf/dynaconf/blob/master/CONTRIBUTING.md , but I must be doing something wrong. I have a similar (but not exactly the same) Traceback when I don't initialize settings like this:
but import them like I see in the other examples: