Skip to content

Commit 194de64

Browse files
author
Valeriya Popova
committed
add unknown item type to scheme ls
1 parent 8ca62ff commit 194de64

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## 2.12.0 ##
22
* Fixed error message while get token from metadata with asyncio iam
33
* Add `SnapshotReadOnly` transaction mode support to `session.transaction`
4+
* Support `TYPE_UNSPECIFIED` item type to scheme ls
45

56
## 2.11.1 ##
67
* Regenerate protobuf code from public api protos (some private protobufs was removed)

ydb/scheme.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class SchemeEntryType(enum.IntEnum):
1111
"""
1212
Enumerates all available entry types.
1313
"""
14-
14+
TYPE_UNSPECIFIED = 0
1515
DIRECTORY = 1
1616
TABLE = 2
1717
PERS_QUEUE_GROUP = 3
@@ -24,6 +24,10 @@ class SchemeEntryType(enum.IntEnum):
2424
REPLICATION = 16
2525
TOPIC = 17
2626

27+
@classmethod
28+
def _missing_(cls, value):
29+
return cls.TYPE_UNSPECIFIED
30+
2731
@staticmethod
2832
def is_table(entry):
2933
"""
@@ -299,7 +303,7 @@ def _wrap_scheme_entry(entry_pb, scheme_entry_cls=None, *args, **kwargs):
299303
return scheme_entry_cls(
300304
entry_pb.name,
301305
entry_pb.owner,
302-
getattr(SchemeEntryType, _apis.ydb_scheme.Entry.Type.Name(entry_pb.type)),
306+
SchemeEntryType(entry_pb.type),
303307
_wrap_permissions(entry_pb.effective_permissions),
304308
_wrap_permissions(entry_pb.permissions),
305309
entry_pb.size_bytes,
@@ -318,7 +322,7 @@ def _wrap_list_directory_response(rpc_state, response):
318322
message = _apis.ydb_scheme.ListDirectoryResult()
319323
response.operation.result.Unpack(message)
320324
children = []
321-
supported_items = set([i.value for i in SchemeEntryType])
325+
supported_items = set(i.value for i in SchemeEntryType)
322326
for children_item in message.children:
323327
if children_item.type not in supported_items:
324328
continue
@@ -328,12 +332,10 @@ def _wrap_list_directory_response(rpc_state, response):
328332
return Directory(
329333
message.self.name,
330334
message.self.owner,
331-
getattr(SchemeEntryType, _apis.ydb_scheme.Entry.Type.Name(message.self.type)),
335+
SchemeEntryType(message.self.type),
332336
_wrap_permissions(message.self.effective_permissions),
333337
_wrap_permissions(message.self.permissions),
334-
tuple(
335-
children,
336-
),
338+
tuple(children),
337339
)
338340

339341

ydb/scheme_test.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from ydb.scheme import SchemeEntryType, _wrap_scheme_entry, _wrap_list_directory_response
2+
from ydb._apis import ydb_scheme
3+
4+
5+
def test_wrap_scheme_entry():
6+
assert _wrap_scheme_entry(ydb_scheme.Entry(type=1)).type is SchemeEntryType.DIRECTORY
7+
assert _wrap_scheme_entry(ydb_scheme.Entry(type=17)).type is SchemeEntryType.TOPIC
8+
9+
assert _wrap_scheme_entry(ydb_scheme.Entry()).type is SchemeEntryType.TYPE_UNSPECIFIED
10+
assert _wrap_scheme_entry(ydb_scheme.Entry(type=10)).type is SchemeEntryType.TYPE_UNSPECIFIED
11+
assert _wrap_scheme_entry(ydb_scheme.Entry(type=1001)).type is SchemeEntryType.TYPE_UNSPECIFIED
12+
13+
14+
def test_wrap_list_directory_response():
15+
d = _wrap_list_directory_response(None, ydb_scheme.ListDirectoryResponse())
16+
assert d.type is SchemeEntryType.TYPE_UNSPECIFIED

0 commit comments

Comments
 (0)