Skip to content

Commit deca070

Browse files
authored
Merge pull request #1 from forcecore/master
Make things work with Python 3.9
2 parents a7c70bb + 6d69bb2 commit deca070

File tree

5 files changed

+24
-20
lines changed

5 files changed

+24
-20
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
language: python
2-
python: 2.7
2+
python: 3.9
33

44
sudo: required
55

keyctl/key.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11

22
# -*- coding: utf-8 -*-
33

4-
from keyctlwrapper import KeyctlWrapper
4+
from typing import List
5+
from .keyctlwrapper import KeyctlWrapper
56

67

78
# -------------------------------------------------------------------
@@ -22,7 +23,7 @@ def __init__(self, keyid=None, keyring=None, keytype=None):
2223
# ---------------------------------------------------------------
2324

2425
@staticmethod
25-
def _init_keyctl(keyring=None, keytype=None):
26+
def _init_keyctl(keyring=None, keytype=None) -> KeyctlWrapper:
2627
if keyring is not None and keytype is not None:
2728
keyctl = KeyctlWrapper(keyring=keyring, keytype=keytype)
2829
elif keyring is not None:
@@ -45,7 +46,7 @@ def _load_key(self, keyid):
4546
# ---------------------------------------------------------------
4647

4748
@classmethod
48-
def list(cls, keyring=None, keytype=None):
49+
def list(cls, keyring=None, keytype=None) -> List["Key"]:
4950
keyctl = cls._init_keyctl(keyring, keytype)
5051
keyids = keyctl.get_all_key_ids()
5152

@@ -59,7 +60,7 @@ def list(cls, keyring=None, keytype=None):
5960
# ---------------------------------------------------------------
6061

6162
@classmethod
62-
def search(cls, name, keyring=None, keytype=None):
63+
def search(cls, name, keyring=None, keytype=None) -> "Key":
6364
key = cls(keyring, keytype)
6465

6566
key.id = key._keyctl.get_id_from_name(name)
@@ -72,7 +73,7 @@ def search(cls, name, keyring=None, keytype=None):
7273
# ---------------------------------------------------------------
7374

7475
@classmethod
75-
def add(cls, name, data, keyring=None, keytype=None):
76+
def add(cls, name, data, keyring=None, keytype=None) -> "Key":
7677
keyctl = cls._init_keyctl(keyring, keytype)
7778

7879
keyid = keyctl.add_key(name, data)

keyctl/keyctlwrapper.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# -*- coding: utf-8 -*-
33

44
import subprocess
5+
from typing import List
56

67

78
# -------------------------------------------------------------------
@@ -50,21 +51,23 @@ class KeyctlWrapper(object):
5051
default_keyring = '@u'
5152
default_keytype = 'user'
5253

53-
def __init__(self, keyring=default_keyring, keytype=default_keytype):
54+
def __init__(self, keyring: str=default_keyring, keytype: str=default_keytype):
5455
self.keyring = keyring
5556
self.keytype = keytype
5657

5758
# ---------------------------------------------------------------
5859

5960
@staticmethod
60-
def _system(args, data=None, check=True):
61+
def _system(args, data: str=None, check=True):
62+
6163
try:
6264
p = subprocess.Popen(
6365
args,
6466
stdout=subprocess.PIPE,
6567
stderr=subprocess.PIPE,
6668
stdin=subprocess.PIPE,
67-
bufsize=4096
69+
bufsize=4096,
70+
text=True,
6871
)
6972
except OSError as e:
7073
raise OSError('Command \'{}\' execution failed. ErrMsg:{}'.format(' '.join(args), e))
@@ -78,22 +81,22 @@ def _system(args, data=None, check=True):
7881

7982
if not check:
8083
return ret, out, err
81-
elif ret is 0:
84+
elif ret == 0:
8285
return out
8386
else:
8487
raise KeyctlOperationError(errmsg='({}){} {}'.format(ret, err, out))
8588

8689
# ---------------------------------------------------------------
8790

88-
def get_all_key_ids(self):
91+
def get_all_key_ids(self) -> List[int]:
8992
out = self._system(['keyctl', 'rlist', self.keyring])
9093
l = out.split()
9194
l = [int(x) for x in l]
9295
return l
9396

9497
# ---------------------------------------------------------------
9598

96-
def get_id_from_name(self, name):
99+
def get_id_from_name(self, name: str) -> int:
97100
# ret, out, err = self._system(['keyctl', 'request', self.keytype, name], check=False)
98101
ret, out, err = self._system(['keyctl', 'search', self.keyring, self.keytype, name], check=False)
99102

@@ -106,7 +109,7 @@ def get_id_from_name(self, name):
106109

107110
# ---------------------------------------------------------------
108111

109-
def get_name_from_id(self, keyid):
112+
def get_name_from_id(self, keyid: int) -> str:
110113
ret, out, err = self._system(['keyctl', 'rdescribe', str(keyid)], check=False)
111114

112115
if ret != 0:
@@ -118,7 +121,7 @@ def get_name_from_id(self, keyid):
118121

119122
# ---------------------------------------------------------------
120123

121-
def get_data_from_id(self, keyid, mode='raw'):
124+
def get_data_from_id(self, keyid: int, mode='raw'):
122125
if mode.lower() == 'raw':
123126
kmode = 'pipe'
124127
elif mode.lower() == 'hex':
@@ -141,7 +144,7 @@ def get_data_from_id(self, keyid, mode='raw'):
141144

142145
# ---------------------------------------------------------------
143146

144-
def add_key(self, name, data):
147+
def add_key(self, name: str, data) -> int:
145148
try:
146149
keyid = self.get_id_from_name(name)
147150
raise KeyAlreadyExistError(keyid=keyid, keyname=name)
@@ -155,7 +158,7 @@ def add_key(self, name, data):
155158

156159
# ---------------------------------------------------------------
157160

158-
def update_key(self, keyid, data):
161+
def update_key(self, keyid: int, data):
159162
ret, out, err = self._system(['keyctl', 'pupdate', str(keyid)], data, check=False)
160163

161164
if ret == 1:
@@ -165,7 +168,7 @@ def update_key(self, keyid, data):
165168

166169
# ---------------------------------------------------------------
167170

168-
def remove_key(self, keyid):
171+
def remove_key(self, keyid: int):
169172
# revoke first, because unlinking is slow
170173
ret, out, err = self._system(['keyctl', 'revoke', str(keyid)], check=False)
171174
if ret == 1:

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
readme = readme.replace('\r', '')
1414
except ImportError:
1515
readme = 'see README.md'
16-
print 'NO README CREATED'
16+
print('NO README CREATED')
1717

1818

1919
setup(
@@ -40,7 +40,7 @@
4040
'Intended Audience :: Developers',
4141
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
4242
'Programming Language :: Python',
43-
'Programming Language :: Python :: 2.7',
43+
'Programming Language :: Python :: 3.9',
4444
'Environment :: X11 Applications :: Qt',
4545
'Topic :: Utilities',
4646
]

tests/test_keyctlwrapper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def test_get_data_from_id(self, empty_keyring):
111111

112112
# hex mode
113113
data = keyctl.get_data_from_id(keyid, 'hEx')
114-
assert data == content.encode('hex')
114+
assert data == content.encode("utf8").hex()
115115

116116
# ---------------------------------------------------------------
117117

0 commit comments

Comments
 (0)