Skip to content

Commit 4eaf39b

Browse files
Fix generating table names from uppercase model names (#256)
* Fix generating table names from uppercase model names * Some tests
1 parent a8b7d57 commit 4eaf39b

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
Please use [this](https://docs.gitlab.com/ee/development/changelog.html) document as guidelines to keep a changelog.
44

5+
## [unreleased]
6+
7+
### Fixed
8+
9+
* database: Fixed generating table names from uppercase model names.
10+
511
## 4.2.5 - 2022-02-21
612

713
### Fixed

src/dipdup/utils/__init__.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,20 @@ async def slowdown(seconds: int):
6161

6262
def snake_to_pascal(value: str) -> str:
6363
"""humps wrapper for Python imports"""
64-
return humps.pascalize(value.replace('.', '_'))
64+
value = value.replace('.', '_')
65+
# NOTE: Special case, humps returns uppercase otherwise
66+
if value.isupper():
67+
value = value.lower()
68+
return humps.pascalize(value)
6569

6670

6771
def pascal_to_snake(value: str, strip_dots: bool = True) -> str:
6872
"""humps wrapper for Python imports"""
6973
if strip_dots:
7074
value = value.replace('.', '_')
75+
# NOTE: Special case, humps returns uppercase otherwise
76+
if value.isupper():
77+
value = value.lower()
7178
return humps.depascalize(value).replace('__', '_')
7279

7380

tests/test_dipdup/test_utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
from dipdup.models import Index
77
from dipdup.models import IndexType
8+
from dipdup.utils import pascal_to_snake
9+
from dipdup.utils import snake_to_pascal
810
from dipdup.utils.database import in_global_transaction
911
from dipdup.utils.database import tortoise_wrapper
1012

@@ -39,3 +41,20 @@ async def test_in_global_transaction(self):
3941
raise Exception
4042
count = await Index.filter().count()
4143
self.assertEqual(3, count)
44+
45+
async def test_humps_helpers(self) -> None:
46+
self.assertEqual('foo_bar', pascal_to_snake('foo_bar', True))
47+
self.assertEqual('foo_bar', pascal_to_snake('FooBar', True))
48+
self.assertEqual('foo_bar', pascal_to_snake('Foo.Bar', True))
49+
self.assertEqual('foobar', pascal_to_snake('FOOBAR', True))
50+
51+
self.assertEqual('foo_bar', pascal_to_snake('foo_bar', False))
52+
self.assertEqual('foo_bar', pascal_to_snake('FooBar', False))
53+
self.assertEqual('foo._bar', pascal_to_snake('Foo.Bar', False))
54+
self.assertEqual('foobar', pascal_to_snake('FOOBAR', False))
55+
56+
self.assertEqual('FooBar', snake_to_pascal('fooBar'))
57+
self.assertEqual('FooBar', snake_to_pascal('FooBar'))
58+
self.assertEqual('Foobar', snake_to_pascal('foobar'))
59+
self.assertEqual('FooBar', snake_to_pascal('foo__bar'))
60+
self.assertEqual('Foobar', snake_to_pascal('FOOBAR'))

0 commit comments

Comments
 (0)