Skip to content

Commit d85f5fa

Browse files
committed
Add deprecations
1 parent 821ecdf commit d85f5fa

File tree

4 files changed

+68
-8
lines changed

4 files changed

+68
-8
lines changed

CHANGELOG.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1414

1515
### Changed
1616
- Switched to v3 API which uses updated language detection model
17-
- ⚠️ `simple_detect` method renamed to `detect_code`
1817
- ⚠️ `detect` method result fields are `language` and `score`
19-
- ⚠️ `detect` method no longer accept arrays - use `detect_batch` instead
20-
- ⚠️ `user_status` method renamed to `account_status`
21-
- HTTPS is used by default. Removed secure mode configuration.
18+
19+
### Deprecated
20+
- Calling `detect()` with list argument. Use `detect_batch` instead.
21+
- `simple_detect()` - Use `detect_code()` instead. Will be removed in a future version.
22+
- `user_status()` - Use `account_status()` instead. Will be removed in a future version.
23+
24+
### Removed
25+
- Secure mode configuration. HTTPS is used by default.

detectlanguage/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@
55
from .client import Client
66
from .api import detect, detect_code, detect_batch, account_status, languages
77

8+
# deprecated functions
9+
from .api import simple_detect, user_status
10+
811
configuration = Configuration()
912
client = Client(configuration)

detectlanguage/api.py

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import detectlanguage
2+
import warnings
23

34
def detect(data):
45
if isinstance(data, list):
5-
raise ValueError('use detect_batch instead for multiple texts')
6+
_warn_deprecated('use detect_batch instead for multiple texts')
7+
return detect_batch(data)
68

79
return detectlanguage.client.post('detect', { 'q': data })
810

@@ -18,3 +20,45 @@ def account_status():
1820

1921
def languages():
2022
return detectlanguage.client.get('languages')
23+
24+
25+
### DEPRECATED
26+
27+
def simple_detect(data):
28+
"""
29+
DEPRECATED: This function is deprecated and will be removed in a future version.
30+
Use detect_code() instead.
31+
32+
Args:
33+
data: Text to detect language for
34+
35+
Returns:
36+
str: Language code of the detected language
37+
"""
38+
_warn_deprecated(
39+
"simple_detect() is deprecated and will be removed in a future version. "
40+
"Use detect_code() instead."
41+
)
42+
return detect_code(data)
43+
44+
def user_status():
45+
"""
46+
DEPRECATED: This function is deprecated and will be removed in a future version.
47+
Use account_status() instead.
48+
49+
Returns:
50+
dict: Account status information
51+
"""
52+
_warn_deprecated(
53+
"user_status() is deprecated and will be removed in a future version. "
54+
"Use account_status() instead."
55+
)
56+
return account_status()
57+
58+
def _warn_deprecated(message):
59+
"""Internal utility function to emit deprecation warnings."""
60+
warnings.warn(
61+
message,
62+
DeprecationWarning,
63+
stacklevel=2
64+
)

tests/test_api.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class TestApi:
88
def setup_method(self):
99
detectlanguage.configuration.api_key = os.environ['DETECTLANGUAGE_API_KEY']
10-
10+
1111
def test_detect_code(self):
1212
result = detectlanguage.detect_code("Hello world")
1313
assert result == 'en'
@@ -17,7 +17,7 @@ def test_detect(self):
1717
assert result[0]['language'] == 'en'
1818

1919
def test_detect_with_array(self):
20-
with pytest.raises(ValueError):
20+
with pytest.warns(DeprecationWarning, match="use detect_batch"):
2121
detectlanguage.detect(["Hello world", "Ėjo ežiukas"])
2222

2323
def test_detect_unicode(self):
@@ -37,9 +37,18 @@ def test_languages(self):
3737
result = detectlanguage.languages()
3838
assert { 'code': 'en', 'name': 'English' } in result
3939

40+
def test_simple_detect(self):
41+
with pytest.warns(DeprecationWarning, match="simple_detect.*deprecated"):
42+
result = detectlanguage.simple_detect("Hello world")
43+
assert result == 'en'
44+
45+
def test_user_status(self):
46+
with pytest.warns(DeprecationWarning, match="user_status.*deprecated"):
47+
result = detectlanguage.user_status()
48+
assert result['status'] == 'ACTIVE'
49+
4050
class TestApiErrors:
4151
def test_invalid_key(self):
4252
detectlanguage.configuration.api_key = 'invalid'
4353
with pytest.raises(detectlanguage.DetectLanguageError):
4454
detectlanguage.detect("Hello world")
45-

0 commit comments

Comments
 (0)