Skip to content

Commit e561aa1

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

File tree

3 files changed

+40
-6
lines changed

3 files changed

+40
-6
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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class SchemeEntryType(enum.IntEnum):
1212
Enumerates all available entry types.
1313
"""
1414

15+
TYPE_UNSPECIFIED = 0
1516
DIRECTORY = 1
1617
TABLE = 2
1718
PERS_QUEUE_GROUP = 3
@@ -24,6 +25,10 @@ class SchemeEntryType(enum.IntEnum):
2425
REPLICATION = 16
2526
TOPIC = 17
2627

28+
@classmethod
29+
def _missing_(cls, value):
30+
return cls.TYPE_UNSPECIFIED
31+
2732
@staticmethod
2833
def is_table(entry):
2934
"""
@@ -299,7 +304,7 @@ def _wrap_scheme_entry(entry_pb, scheme_entry_cls=None, *args, **kwargs):
299304
return scheme_entry_cls(
300305
entry_pb.name,
301306
entry_pb.owner,
302-
getattr(SchemeEntryType, _apis.ydb_scheme.Entry.Type.Name(entry_pb.type)),
307+
SchemeEntryType(entry_pb.type),
303308
_wrap_permissions(entry_pb.effective_permissions),
304309
_wrap_permissions(entry_pb.permissions),
305310
entry_pb.size_bytes,
@@ -318,7 +323,7 @@ def _wrap_list_directory_response(rpc_state, response):
318323
message = _apis.ydb_scheme.ListDirectoryResult()
319324
response.operation.result.Unpack(message)
320325
children = []
321-
supported_items = set([i.value for i in SchemeEntryType])
326+
supported_items = set(i.value for i in SchemeEntryType)
322327
for children_item in message.children:
323328
if children_item.type not in supported_items:
324329
continue
@@ -328,12 +333,10 @@ def _wrap_list_directory_response(rpc_state, response):
328333
return Directory(
329334
message.self.name,
330335
message.self.owner,
331-
getattr(SchemeEntryType, _apis.ydb_scheme.Entry.Type.Name(message.self.type)),
336+
SchemeEntryType(message.self.type),
332337
_wrap_permissions(message.self.effective_permissions),
333338
_wrap_permissions(message.self.permissions),
334-
tuple(
335-
children,
336-
),
339+
tuple(children),
337340
)
338341

339342

ydb/scheme_test.py

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

0 commit comments

Comments
 (0)