Git Product home page Git Product logo

humps's People

Contributors

bakert avatar dependabot-preview[bot] avatar dependabot[bot] avatar fabaff avatar gaelgatelement avatar grehnj avatar hasier avatar ificiana avatar koterpillar avatar leo-ryu avatar lewtun avatar nficano avatar nkoshell avatar nphilou avatar ronnie-llamado avatar sk- avatar syrus avatar zefciu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

humps's Issues

Wrong value for camelize and decamelize when using 1 or 2 characters key

Describe the bug
When using a key with only 2 characters, the value is not camelized nor decamelized correctly.

To Reproduce

assert humps.camelize("j1") == "J1"
assert humps.decamelize("J1") == "j1"

assert humps.camelize("x") == "X"
assert humps.decamelize("X") == "x"

Expected behavior

  • camelize should return J1 but got j1 instead.

  • decamelize should return j1 but got J1 instead.

  • camelize should return X but got x instead.

  • decamelize should return x but got X instead.

Desktop (please complete the following information):

  • OS: Macos
  • Browser None
  • Version 3.8.0

Additional context
#61 and #168

camelize on ALL CAPS doesn't change the string to camel case

Describe the bug
Pass an all-caps string to camelize. The output is still an all-caps string.

To Reproduce
print(humps.camelize('NITIN REDDY'))

Expected behavior
Output: "nitinReddy"

Actual behavior
Output: "NITIN REDDY"

Desktop (please complete the following information):

  • OS: MacOS BigSur 11.1
  • Version: Python 3.7.3

Add coveralls to workflow

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Add coveralls and coveralls badge to GitHub workflow.

Describe alternatives you've considered
N/A

Additional context
Coveralls was not implemented on the switch to GitHub Actions, but was present in the previous Travis CI.

decamelize incorrectly inserts _ after punctuation

If lower and upper case characters are separated by punctuation, decamelize should not insert an underscore as well.

To Reproduce

>>> for c in '.,<>/?;:\'"[]{}\\|`~!@#$%^&*()-_=+':
...   print(f"humps.decamelize(foo{c}Bar): " + humps.decamelize(f"foo{c}Bar"))
...
humps.decamelize(foo.Bar): foo._bar
humps.decamelize(foo,Bar): foo,_bar
humps.decamelize(foo<Bar): foo<_bar
humps.decamelize(foo>Bar): foo>_bar
humps.decamelize(foo/Bar): foo/_bar
humps.decamelize(foo?Bar): foo?_bar
humps.decamelize(foo;Bar): foo;_bar
humps.decamelize(foo:Bar): foo:_bar
humps.decamelize(foo'Bar): foo'_bar
humps.decamelize(foo"Bar): foo"_bar
humps.decamelize(foo[Bar): foo[_bar
humps.decamelize(foo]Bar): foo]_bar
humps.decamelize(foo{Bar): foo{_bar
humps.decamelize(foo}Bar): foo}_bar
humps.decamelize(foo\Bar): foo\_bar
humps.decamelize(foo|Bar): foo|_bar
humps.decamelize(foo`Bar): foo`_bar
humps.decamelize(foo~Bar): foo~_bar
humps.decamelize(foo!Bar): foo!_bar
humps.decamelize(foo@Bar): foo@_bar
humps.decamelize(foo#Bar): foo#_bar
humps.decamelize(foo$Bar): foo$_bar
humps.decamelize(foo%Bar): foo%_bar
humps.decamelize(foo^Bar): foo^_bar
humps.decamelize(foo&Bar): foo&_bar
humps.decamelize(foo*Bar): foo*_bar
humps.decamelize(foo(Bar): foo(_bar
humps.decamelize(foo)Bar): foo)_bar
humps.decamelize(foo-Bar): foo_-bar
humps.decamelize(foo_Bar): foo__bar
humps.decamelize(foo=Bar): foo=_bar
humps.decamelize(foo+Bar): foo+_bar

Expected behavior
No underscore should have been inserted.

Additional context
pyhumps-3.5.3 on Python 3.10.2 on macOS 12.3.1 (21E258)

sizeX decamelized as sizex

Describe the bug
String 'sizeX' is correctly identified as camelCase but is converted to snake_case as 'sizex'.

To Reproduce

>>> humps.is_camelcase("sizeX")
True
>>> humps.decamelize("sizeX")
'sizex'
>>> humps.decamelize("camelCaseTest")
'camel_case_test'

Expected behavior

>>> humps.decamelize("sizeX")
'size_x'

Desktop (please complete the following information):

  • OS: Ubuntu 18.04, Python 3.8
  • Version 1.6.1

"_id" gets converted to "_d"

Describe the bug
When using camelize on "_id" it gets converted to "_d"

To Reproduce
Steps to reproduce the behavior:

  1. Create dict with "_id" key, e.g. tmp = {"_id": "123"}
  2. Convert using humps.camelize(tmp)

Expected behavior
Not sure. Either _Id, _id or id ...

is_snakecase("whatever_10") vs is_snakecase("whatever_1")

Describe the bug
According to humps, "whatever_10" is not a snake case.

To Reproduce

>>> humps.is_snakecase("whatever_10")
False
>>> humps.is_snakecase("whatever_1")
True

Expected behavior

>>> humps.is_snakecase("whatever_10")
True
>>> humps.is_snakecase("whatever_1")
True

Desktop (please complete the following information):

  • Version 1.6.1

Release recent changes - depth parameter

I tried using this package today pipenv install pyhumps and got version 1.2.2. It looks like the depth parameter has been added since 1.2.2 and has not been released. Can it be released?

Thanks.

Camelize/decamelize asymmetries

Describe the bug
Camelize/decamelize asymmetry when numbers are involved.

To Reproduce
Steps to reproduce the behavior:

>>> import humps
>>> humps.camelize('item1_entry')
'item1Entry'
>>> humps.decamelize('item1Entry')
'item_1entry'
>>> humps.decamelize('item1entry')
'item_1entry'
>>> humps.camelize('N1_item')
'N1Item'
>>> humps.decamelize('N1Item')
'n1item'
>>> humps.decamelize('N1item')
'n1item'
>>> humps.camelize('n1_item')
'n1Item'
>>> humps.decamelize('n1Item')
'n_1item'

Expected behavior

>>> import humps
>>> humps.camelize('item1_entry')
'item1Entry'
>>> humps.decamelize('item1Entry')
'item1_entry'
>>> humps.decamelize('item1entry')
'item1entry'
>>> humps.camelize('N1_item')
'N1Item'
>>> humps.decamelize('N1Item')
'N1_item'
>>> humps.decamelize('N1item')
'N1item'
>>> humps.camelize('n1_item')
'n1Item'
>>> humps.decamelize('n1Item')
'n1_item'

Additional context
This is for version 1.3.1 of pyhumps.

Transition package manager from pipenv to poetry

Describe the solution you'd like
The transition to using poetry as the package manager for this project has started. There are still a few loose ends to tie up.

To Do

  • Update GitHub Actions to use poetry (#237)
  • Add new GitHub Actions workflow to push package to PyPi on new tag
  • Move PyPi information (version, classifiers, etc) over to pyproject.toml
  • Remove extraneous pipenv files (when transition is complete)

[question] Abbreviation conversion assymetry workarounds

I am using pyhumps and pydantic to serialize/deserialize data from an API. I have certain properties with abbreviations such as URL. decamelize-ing the data works fine. However, after I'm done "processing" it, how can I retain the capitalization of said abbreviations with camelize.

Example:

# input propery "CallBackURL"

humps.decamelize("CallBackURL") # "call_back_url"
humps.camelize("call_back_url") # "CallBackUrl"

I could traverse the data and replace the specific properties, which I am doing currently, but I am wondering if there is a more elegant way to do it.

Initial thoughts

My first thought was maybe humps could be made "abbreviation-aware" through extra parameters.

humps.camelize([{"call_back_url": ""}], uppercase_abbreviations=True) # use a store of "common" abbreviations
# OR
humps.camelize([{"call_back_url": ""}], abbreviations=("url")) # pass in abbreviations

Might this be beyond the scope of humps? Or is it too inflexible?

Acronyms with inner digits do not decamelize correctly

decamelize treats a sequence of upper case characters followed by lowercase characters as two words, one being all but the last upper case character (presumably an acronym), the rest being the second word. humps.decamelize('AWSThing') yields 'aws_thing'. Acronyms may end in digits as well: humps.decamelize('B52Thing') yields 'b52_thing'. This logic is not correctly applied when the acronym contains inner digits.

To Reproduce

>>> humps.decamelize('B2BThing')
'b2_b_thing'

Expected behavior
All upper case characters and digits except the last one should be treated as a single word, yielding b2b_thing.

Additional context
pyhumps-3.5.3 on Python 3.10.2 on macOS 12.3.1 (21E258)

Coveralls badge is not updating

Describe the bug
Latest coverage of the master branch is not reported to coveralls. The latest coverage should be 100%, but shows 97% from months ago. See coveralls.

To Reproduce
N/A

Expected behavior
The coverage badge should be updated with the latest test coverage.

Screenshots
N/A

Desktop (please complete the following information):
N/A

Smartphone (please complete the following information):
N/A

Additional context
This likely requires an update to the workflow so it runs on pushes to the master branch (currently only runs on pull requests).

Not converting to camel case after number using humps.camelize

Describe the bug

Converting to camel case doesn't convert after a number. humps.camelize has to be ran twice to get the expected output.

To Reproduce

>>> import humps
>>> test = {"field_value_2_type": "test"}
>>> humps.camelize(test)
{'fieldValue2_type': 'test'}

Expected behaviour

>>> import humps
>>> test = {"field_value_2_type": "test"}
>>> humps.camelize(test)
{'fieldValue2Type': 'test'}

Desktop (please complete the following information):

  • Version 1.6.1

Kebabize string with spaces

Describe the bug
kebabize does not work correctly with spaces

To Reproduce

import humps
s = 'This is a test'
humps.kebabize(s)
>>> 'thisisatest'

Expected behavior
outputs this-is-a-test

Desktop (please complete the following information):

  • OS: WSL 2 on Windows 10
  • pyhumps==3.8.0

Streamlit

There appears to be a problem using humps in a Streamlit environment. Apparently, Streamlit does not recognise pyhumps as humps (AttributeError: module 'humps' has no attribute 'camelize').

If I run the code without Streamlit, it works cleanly.

Changing parsing of acronyms at end of sentence

I understand there's a lot of ambiguity in converting certain keys. The decamelization of APIResponse to api_response seems perfectly correct. But, this behavior gives odd results when the acronym extends to the end of the word. For example,

import humps
humps.decamelize('responseAPI') # 'response_ap_i'
humps.decamelize('API') # 'ap_i'

It seems that it thinks the final capitalized letter is part of the next word. I would propose changing the parsing behavior to only split the capitals from an acronym if it is followed by a lowercase.

Thanks! If I get around to it I'll try and make a PR. Let me know if that's something you'd like.

Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working

Describe the bug
Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working

To Reproduce

[prak humps] python3 --version
Python 3.8.2
[prak humps] python3 main.py
main.py:7: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
  from collections import Mapping

Expected behavior
No DeprecationWarning

Desktop (please complete the following information):

  • OS: OS X
  • Python: 3.8.2

None and empty string input are not camelized correctly

None and empty string input are not camelized correctly.

To Reproduce

>>> import humps
>>> humps.camelize('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lorrin/Documents/Lorrin/Code/humps/lib/python3.10/site-packages/humps/main.py", line 62, in camelize
    s = s[0].lower() + s[1:]
IndexError: string index out of range
>>> humps.camelize(None)
'none'

Expected behavior
camelize of empty string should return empty string, not raise an error.

camelize of None should return None (or an empty string or raise an error), but not return 'none'.

Additional context
pyhumps-3.5.3 on Python 3.10.2 on macOS 12.3.1 (21E258)

Single-letter segments not recognized when converting to snakecase

Describe the bug
humps does not recognize single-letter segments when converting to snake-case.

To Reproduce

>>> import humps
>>> humps.camelize("test_n_test")  # Fixed in issue 61 
'testNTest'
>>> humps.decamelize(humps.camelize("test_n_test"))
'test_ntest'
>>> humps.decamelize("ThisIsATest")
'this_is_atest'

Expected behavior

>>> humps.decamelize(humps.camelize("test_n_test"))
'test_n_test'
>>> humps.decamelize("ThisIsATest")
'this_is_a_test'

Add maximum depth option to all function to limit how deep to apply formatting

Is your feature request related to a problem? Please describe.
I want to only affect the top level keys, any keys at a depth greater than one carry meaning and I don't want to modify them

Describe the solution you'd like
Ability to specify the max_depth of the recursion?

Describe alternatives you've considered
None

Additional context
None

Add `pylint` to linting tools

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like

  • update Pipfile
  • update Makefile

Additional context
Better linting and efficient code

Add a conda-forge feedstock

Is your feature request related to a problem? Please describe.
I would like to be able to install this amazing tool in a conda-first environment.

Describe the solution you'd like
Let's add a conda feedstock to conda-forge!

Additional context
I will create a PR there shortly and link it to this issue.

camelizeKeys only rather than the full dictionary (values and keys)

Is your feature request related to a problem? Please describe.
It would be nice to have the ability to only camelize a dictionary's keys, rather than all of the values as wwell.

Describe the solution you'd like
https://github.com/domchristie/humps#humpscamelizekeysobject-options -- Converts object keys to camelCase. It also converts arrays of objects.

Describe alternatives you've considered
Looping over the dictionary myself and using humps.camelize on keys only

Additional context
Thanks for the great tool!

ReadTheDocs build is failing after dropping Python 2.7

Describe the bug
readthedocs build is failing after dropping support for Python 2.7. It appears readthedocs is running Python 2.7, or there's a config telling it to run 2.7.

Failing build log
[rtd-command-info] start-time: 2021-10-13T14:46:29.084074Z, end-time: 2021-10-13T14:46:29.349868Z, duration: 0, exit-code: 2
/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/bin/python -m sphinx -T -E -b html -d _build/doctrees -D language=en . _build/html
Running Sphinx v1.8.5

Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/cmd/build.py", line 303, in build_main
    args.tags, args.verbosity, args.jobs, args.keep_going)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/application.py", line 201, in __init__
    self.config = Config.read(self.confdir, confoverrides or {}, self.tags)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/config.py", line 203, in read
    namespace = eval_config_file(filename, tags)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/config.py", line 380, in eval_config_file
    raise ConfigError(msg % traceback.format_exc())
ConfigError: There is a programmable error in your configuration file:

Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/config.py", line 368, in eval_config_file
    execfile_(filename, namespace)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/util/pycompat.py", line 150, in execfile_
    exec_(code, _globals)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/six.py", line 735, in exec_
    exec("""exec _code_ in _globs_, _locs_""")
  File "<string>", line 1, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/docs/conf.py", line 10, in <module>
    from humps import __version__  # noqa
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/humps/__init__.py", line 12, in <module>
    from humps.main import (
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/humps/main.py", line 6, in <module>
    from collections.abc import Mapping
ImportError: No module named abc


Configuration error:
There is a programmable error in your configuration file:

Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/config.py", line 368, in eval_config_file
    execfile_(filename, namespace)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/sphinx/util/pycompat.py", line 150, in execfile_
    exec_(code, _globals)
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/envs/latest/lib/python2.7/site-packages/six.py", line 735, in exec_
    exec("""exec _code_ in _globs_, _locs_""")
  File "<string>", line 1, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/docs/conf.py", line 10, in <module>
    from humps import __version__  # noqa
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/humps/__init__.py", line 12, in <module>
    from humps.main import (
  File "/home/docs/checkouts/readthedocs.org/user_builds/humps/checkouts/latest/humps/main.py", line 6, in <module>
    from collections.abc import Mapping
ImportError: No module named abc

To Reproduce
See build log.

Expected behavior
Build to pass.

An import issue after install and remove the 'humps' package.

Describe the bug
After installation and removing the 'humps' package, the humps module is seemed not loaded.

To Reproduce
Steps to reproduce the behavior:

❯ python --version
Python 3.8.8

❯ pip install humps
(...eliding...)
# I've noticed this is not what I want 
# So remove it 
❯ pip uninstall humps

# Install the correct package
❯ pip install pyhumps
❯ pip list | grep humps
pyhumps          3.7.1

❯ python
Python 3.8.8 (default, Nov 23 2021, 14:07:49)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import humps
>>> humps.decamelize('illWearYourGranddadsClothes')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'humps' has no attribute 'decamelize'
>>> import inspect
>>> inspect.getfile(humps)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/hansuk/.pyenv/versions/3.8.8/lib/python3.8/inspect.py", line 659, in getfile
    raise TypeError('{!r} is a built-in module'.format(object))
TypeError: <module 'humps' (namespace)> is a built-in module

Expected behavior
import humps should work.

Desktop (please complete the following information):

  • OS: macOS
  • Version 11.6.1
❯ sw_vers
ProductName:    macOS
ProductVersion: 11.6.1
BuildVersion:   20G224

Complete transition into using poetry and more

Describe the solution you'd like

As mentioned earlier by @ronnie-llamado in #235:
The PR accompanying this issue (#288) aims to complete the process. Moreover, it explicitly adds support for Python 3.11

Tasks

To Do

  • Move PyPI information (version, classifiers, etc) over to pyproject.toml
  • Remove extraneous pipenv files (when the transition is complete)
  • Update Makefile for versioning

Up for Discussion

  • [?] Add new GitHub Actions workflow to push the package to PyPI on a new tag
    I personally prefer the CLI commands for publishing, but if needed we can update the workflow as needed.

Extras

  • Add support for Python 3.11

Additional context

Testing the versioning system: Example Output

$ poetry version
pyhumps 3.8.0
$ make deploy-patch
  poetry version patch
  Bumping version from 3.8.0 to 3.8.1
  git commit -m 'Bump version: 3.8.0 → 3.8.1' pyproject.toml
  [master XXXXXXX] Bump version: 3.8.0 → 3.8.1
   1 file changed, 1 insertion(+), 1 deletion(-)
  .
  .  (omitting results)
  .
  poetry publish -r test-pypi
  # this is a mock deployment, published to TestPyPI
  
  Publishing pyhumps (3.8.1) to test-pypi
   - Uploading pyhumps-3.8.1-py3-none-any.whl 0%
   - Uploading pyhumps-3.8.1-py3-none-any.whl 57%
   - Uploading pyhumps-3.8.1-py3-none-any.whl 100%
   - Uploading pyhumps-3.8.1.tar.gz 0%
   - Uploading pyhumps-3.8.1.tar.gz 100%

pyhumps mock

image

Support for Kebab case?

Is your feature request related to a problem? Please describe.
#180 #151

Describe the solution you'd like
Discussion: Should we add support for Kebab case?

  • kebabize
  • dekebabize
  • is_kebabcase
  • type hints
  • test cases

Describe alternatives you've considered

Additional context

Issue with single letter word between two

Describe the bug
Hi, then words are followed by single character word next underscore is not converted.

To Reproduce
Steps to reproduce the behavior:
humps.camelize('test_n_test')
result: testN_test

Expected behavior
result : testNTest

Dashes removed by camelize

Describe the bug
Dashes are replaced and treated as underscores. Is this intentional? It seems to be based on:

UNDERSCORE_RE = re.compile(r"([^\-_\s])[\-_\s]+([^\-_\s])")

My use case is to convert dictionaries with snake case variables to camel case (python code to a JS client). The dictionaries sometimes contain uuids as keys which contain dashes. Those should not be modified. Is there a way to support this use case?

To Reproduce
humps.camelize("9e3f4a89-9989-4190-89a0-f50ffa3826db") => "9e3f4a899989419089a0F50ffa3826db"

Expected behavior
humps.camelize("9e3f4a89-9989-4190-89a0-f50ffa3826db") => "9e3f4a89-9989-4190-89a0-f50ffa3826db"

Regression in depascalize in 1.3.0?

I want to convert strings to snake_case.

The following used to work with pyhumps 1.2.2:

>>> humps.depascalize('error_400')
... 'error_400'
>>> humps.depascalize('error_a32')
... 'error_a32'

Pyhumps 1.3.0 gives:

>>> humps.depascalize('error_400')
... 'error__400'
>>> humps.depascalize('error_a32')
... 'error_a_32'

The results returned by 1.3.0 look wrong to me. The documentation of depascalize says Convert a string, dict, or list of dicts to snake case.. The original strings are already snake case, so nothing should happen. This only seems to happen if there's a sequence of underscore followed by number. If you convert a string without numbers 1.3.0 returns the right answer:

>>> humps.depascalize('error_a')
... 'error_a'

What do you think @nficano ?

Drop support for 2.7

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like

  • Remove logic for Python 2.7
  • Remove Python 2.7 from PyPI classifiers

Describe alternatives you've considered
N/A

Additional context
Python 2.7 is already removed from CI.

Support Python 3.10

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Add support for Python 3.10 - update CI, update PyPI classifiers, etc.

Describe alternatives you've considered
N/A

Additional context
N/A

DeprecationWarning

I'm getting the following warning with python 3.8.2

DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
   from collections import Mapping

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.