This repository was archived by the owner on Mar 18, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathbase.py
More file actions
49 lines (38 loc) · 1.41 KB
/
base.py
File metadata and controls
49 lines (38 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import itypes
class BaseCodec(itypes.Object):
media_type = None
# We don't implement stubs, to ensure that we can check which of these
# two operations a codec supports. For example:
# `if hasattr(codec, 'decode'): ...`
# def decode(self, bytestring, **options):
# pass
# def encode(self, document, **options):
# pass
# The following will be removed at some point, most likely in a 2.1 release:
def dump(self, *args, **kwargs):
# Fallback for v1.x interface
return self.encode(*args, **kwargs)
def support_streaming(self):
return False
def load(self, chunks, *args, **kwargs):
# Fallback for v1.x interface
if not(self.support_streaming()):
chunks = bytes().join(chunks) or bytes()
return self.decode(chunks, *args, **kwargs)
@property
def supports(self):
# Fallback for v1.x interface.
if '+' not in self.media_type:
return ['data']
ret = []
if hasattr(self, 'encode'):
ret.append('encoding')
if hasattr(self, 'decode'):
ret.append('decoding')
return ret
def get_media_types(self):
# Fallback, while transitioning from `application/vnd.coreapi+json`
# to simply `application/coreapi+json`.
if hasattr(self, 'media_types'):
return list(self.media_types)
return [self.media_type]