Skip to content

Commit 07e0c52

Browse files
committed
fix decode value
1 parent 799f409 commit 07e0c52

File tree

4 files changed

+31
-18
lines changed

4 files changed

+31
-18
lines changed

libmc/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
__file__ as _libmc_so_file
3434
)
3535

36-
__VERSION__ = "1.4.11"
37-
__version__ = "1.4.11"
36+
__VERSION__ = "1.4.12"
37+
__version__ = "1.4.12"
3838
__author__ = "mckelvin"
3939
__email__ = "[email protected]"
4040
__date__ = "Fri Jun 7 06:16:00 2024 +0800"

libmc/_client.pyx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ from cpython cimport (
1616
PyBytes_AsString as PyString_AsString,
1717
PyUnicode_AsUTF8String,
1818
)
19-
from ctypes import c_long as long
2019

2120
import os
2221
import sys
@@ -258,7 +257,6 @@ cdef cas_unique_t DEFAULT_CAS_UNIQUE = 0
258257
cdef flags_t _FLAG_DOUBAN_CHUNKED = 1 << 12
259258
cdef int _DOUBAN_CHUNK_SIZE = 1000000
260259

261-
262260
MC_DEFAULT_EXPTIME = PyInt_FromLong(DEFAULT_EXPTIME)
263261
MC_POLL_TIMEOUT = PyInt_FromLong(CFG_POLL_TIMEOUT)
264262
MC_CONNECT_TIMEOUT = PyInt_FromLong(CFG_CONNECT_TIMEOUT)
@@ -299,9 +297,6 @@ cdef bytes _encode_value(object val, int comp_threshold, flags_t *flags):
299297
flags[0] = _FLAG_BOOL
300298
enc_val = b'1' if val else b'0'
301299
elif type_ is int:
302-
flags[0] = _FLAG_INTEGER
303-
enc_val = str(val).encode('ascii')
304-
elif type_ is long:
305300
flags[0] = _FLAG_LONG
306301
enc_val = str(val).encode('ascii')
307302
elif type_.__module__ == 'numpy':
@@ -346,7 +341,7 @@ cpdef object decode_value(bytes val, flags_t flags):
346341
elif flags & _FLAG_INTEGER:
347342
dec_val = int(dec_val.decode('ascii'))
348343
elif flags & _FLAG_LONG:
349-
dec_val = long(dec_val.decode('ascii'))
344+
dec_val = int(dec_val.decode('ascii'))
350345
elif flags & _FLAG_MARSHAL:
351346
try:
352347
dec_val = marshal.loads(dec_val)

src/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package golibmc
22

3-
const _Version = "1.4.11"
3+
const _Version = "1.4.12"
44
const _Author = "mckelvin"
55
const _Email = "[email protected]"
66
const _Date = "Fri Jun 7 06:16:00 2024 +0800"

tests/test_client.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# coding: utf-8
22

3-
import sys
43
import time
54
import pytest
65
import unittest
@@ -31,13 +30,24 @@ def __eq__(self, other):
3130
class MiscCase(unittest.TestCase):
3231

3332
def test_encode_value(self):
34-
expect = (b'(\x02\x00\x00\x00s\x06\x00\x00\x00doubani\x00\x00\x00\x00',
35-
32)
36-
data = (b'douban', 0)
37-
# FIXME
38-
vi = sys.version_info
39-
if vi.major == 2 and vi.micro == 7 and vi.minor < 9:
40-
assert encode_value(data, 0) == expect
33+
for expect, flag, data in [
34+
(
35+
b'(\x02\x00\x00\x00s\x06\x00\x00\x00doubani\x00\x00\x00\x00',
36+
32,
37+
(b'douban', 0)
38+
),
39+
(
40+
b'1234567890',
41+
4,
42+
123_456_789_0,
43+
),
44+
(
45+
b'12345678901234567890',
46+
4,
47+
123_456_7890_123_456_7890,
48+
),
49+
]:
50+
assert encode_value(data, 0) == (expect, flag)
4151

4252
def test_decode_value(self):
4353
dataset = [
@@ -50,13 +60,21 @@ def test_decode_value(self):
5060
"scubadiving",
5161
b'haha',
5262
('douban', 0),
63+
123_456_789,
5364
]
5465
for d in dataset:
5566
new_d = decode_value(*encode_value(d, 0))
5667
assert new_d == d
5768
if isinstance(d, DiveMaster):
5869
assert d is not new_d
5970

71+
for data, flag, expected in [
72+
(b'123', 2, 123),
73+
(b'123456789', 2, 123_456_789),
74+
(b'12345678901234567890', 4, 123_456_7890_123_456_7890),
75+
]:
76+
assert decode_value(data, flag) == expected
77+
6078

6179
class SingleServerCase(unittest.TestCase):
6280
def setUp(self):
@@ -195,7 +213,7 @@ def test_maxiov(self):
195213

196214
def test_get_set_raw(self):
197215
self.mc.set('foo', 233)
198-
assert self.mc.get_raw('foo') == (b'233', 2)
216+
assert self.mc.get_raw('foo') == (b'233', 4)
199217
self.mc.set_raw('foo', b'2335', 0, 2)
200218
assert self.mc.get('foo') == 2335
201219

0 commit comments

Comments
 (0)