Skip to content

Commit 8b1affb

Browse files
radeusgdaccek
authored andcommitted
Some code clean-up. (#39)
* Moved utils.py from client to package-root. Also merged 2 functions that did exactly the same thing. * Removed unused function duplicate and renamed utils to not be private.
1 parent 0084b29 commit 8b1affb

File tree

11 files changed

+51
-79
lines changed

11 files changed

+51
-79
lines changed

filetracker/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,4 @@
113113
# use new paths.
114114

115115
from filetracker.client import Client, dummy
116-
from filetracker.client.utils import split_name
116+
from filetracker.utils import split_name

filetracker/client/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from filetracker.client.local_data_store import LocalDataStore
1313
from filetracker.client.lock_manager import FcntlLockManager, NoOpLockManager
1414
from filetracker.client.remote_data_store import RemoteDataStore
15-
from filetracker.client.utils import split_name, versioned_name, _check_name
15+
from filetracker.utils import split_name, versioned_name, check_name
1616

1717
logger = logging.getLogger('filetracker')
1818

@@ -272,7 +272,7 @@ def put_file(self,
272272
raise ValueError("Neither to_local_store nor to_remote_store set "
273273
"in a call to filetracker.Client.put_file")
274274

275-
_check_name(name)
275+
check_name(name)
276276

277277
lock = None
278278
if self.local_store:

filetracker/client/data_store.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import os
55
import shutil
66

7-
from filetracker.client.utils import split_name, _mkdir
7+
from filetracker.utils import split_name, mkdir
88

99

1010
class DataStore(object):
@@ -90,7 +90,7 @@ def get_file(self, name, filename):
9090

9191
dir_path = os.path.dirname(filename)
9292
if dir_path:
93-
_mkdir(dir_path)
93+
mkdir(dir_path)
9494

9595
with open(filename, 'wb') as f:
9696
shutil.copyfileobj(stream, f)

filetracker/client/dummy.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from filetracker.client import Client
1313
from filetracker.client.data_store import DataStore
14-
from filetracker.client.utils import split_name, versioned_name, _check_name
14+
from filetracker.utils import split_name, versioned_name, check_name
1515

1616

1717
class DummyDataStore(DataStore):
@@ -26,7 +26,7 @@ def __init__(self):
2626
self.versions = defaultdict(int)
2727

2828
def _parse_name(self, name):
29-
_check_name(name)
29+
check_name(name)
3030
key, version = split_name(name)
3131
return key, version
3232

filetracker/client/local_data_store.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from filetracker.client import FiletrackerError
77
from filetracker.client.data_store import DataStore
8-
from filetracker.client.utils import split_name, versioned_name, _check_name, _mkdir
8+
from filetracker.utils import split_name, versioned_name, check_name, mkdir
99

1010

1111
class LocalDataStore(DataStore):
@@ -17,10 +17,10 @@ class LocalDataStore(DataStore):
1717

1818
def __init__(self, dir):
1919
self.dir = os.path.join(dir, 'files')
20-
_mkdir(self.dir)
20+
mkdir(self.dir)
2121

2222
def _parse_name(self, name):
23-
_check_name(name)
23+
check_name(name)
2424
name, version = split_name(name)
2525
path = self.dir + name
2626
return path, version
@@ -96,7 +96,7 @@ def list_files(self):
9696
def _save_stream(path, stream, version=None):
9797
dir = os.path.dirname(path)
9898
if dir:
99-
_mkdir(dir)
99+
mkdir(dir)
100100
if os.path.exists(path) and version is not None \
101101
and _file_version(path) >= version:
102102
return version

filetracker/client/lock_manager.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import fcntl
44
import os
55

6-
from filetracker.client.utils import split_name, _check_name, _mkdir
6+
from filetracker.utils import split_name, check_name, mkdir
77

88

99
class LockManager(object):
@@ -76,14 +76,14 @@ def __del__(self):
7676

7777
def __init__(self, dir):
7878
self.dir = dir
79-
_mkdir(dir)
79+
mkdir(dir)
8080

8181
def lock_for(self, name):
82-
_check_name(name)
82+
check_name(name)
8383
name, version = split_name(name)
8484
path = self.dir + name
8585
dir = os.path.dirname(path)
86-
_mkdir(dir)
86+
mkdir(dir)
8787
return self.FcntlLock(path)
8888

8989

@@ -105,5 +105,5 @@ def unlock(self):
105105
pass
106106

107107
def lock_for(self, name):
108-
_check_name(name)
108+
check_name(name)
109109
return self.NoOpLock()

filetracker/client/remote_data_store.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
from filetracker.client import FiletrackerError
1616
from filetracker.client.data_store import DataStore
17-
from filetracker.client.utils import (split_name, versioned_name, _check_name,
18-
_compute_checksum)
17+
from filetracker.utils import (split_name, versioned_name, check_name,
18+
file_digest)
1919

2020
logger = logging.getLogger('filetracker')
2121

@@ -57,7 +57,7 @@ def __init__(self, base_url):
5757
self.base_url = base_url
5858

5959
def _parse_name(self, name):
60-
_check_name(name)
60+
check_name(name)
6161
name, version = split_name(name)
6262
url = self.base_url + pathname2url(name)
6363
return url, version
@@ -90,7 +90,7 @@ def _put_file(self, url, version, f, headers):
9090
def add_file(self, name, filename, compress_hint=True):
9191
url, version = self._parse_name(name)
9292

93-
sha = _compute_checksum(filename)
93+
sha = file_digest(filename)
9494

9595
headers = {
9696
'SHA256-Checksum': sha

filetracker/client/shell.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,5 +143,6 @@ def main():
143143
client = Client(remote_url=options.remote_url, cache_dir=options.cache_dir)
144144
cmd(client, *args[1:])
145145

146+
146147
if __name__ == '__main__':
147148
main()

filetracker/servers/files.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -126,25 +126,5 @@ def handle_DELETE(self, environ, start_response):
126126
return [b'OK']
127127

128128

129-
_BUFFER_SIZE = 64 * 1024
130-
131-
132-
def _copy_stream(src, dest, length):
133-
"""Similar to shutil.copyfileobj, but supports limiting data size.
134-
135-
As for why this is required, refer to
136-
https://www.python.org/dev/peps/pep-0333/#input-and-error-streams
137-
138-
Yes, there are WSGI implementations which do not support EOFs, and
139-
believe me, you don't want to debug this.
140-
"""
141-
bytes_left = length
142-
while bytes_left > 0:
143-
buf_size = min(_BUFFER_SIZE, bytes_left)
144-
buf = src.read(buf_size)
145-
dest.write(buf)
146-
bytes_left -= buf_size
147-
148-
149129
if __name__ == '__main__':
150130
base.main(FiletrackerServer())

filetracker/servers/storage.py

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import email.utils
3030
import fcntl
3131
import gzip
32-
import hashlib
3332
import os
3433
import shutil
3534
import subprocess
@@ -38,6 +37,8 @@
3837
import bsddb3
3938
import six
4039

40+
from filetracker.utils import file_digest
41+
4142

4243
class FiletrackerFileNotFoundError(Exception):
4344
pass
@@ -127,9 +128,9 @@ def store(self, name, data, version, size=0, compressed=False, digest=None):
127128
# If data was already compressed, we have to decompress it
128129
# before calculating the digest.
129130
with gzip.open(temp_file_path, 'rb') as compressed_file:
130-
digest = _file_digest(compressed_file)
131+
digest = file_digest(compressed_file)
131132
else:
132-
digest = _file_digest(temp_file_path)
133+
digest = file_digest(temp_file_path)
133134

134135
blob_path = self._blob_path(digest)
135136

@@ -303,29 +304,6 @@ def _path_exists(path):
303304
return os.path.exists(path) or os.path.islink(path)
304305

305306

306-
def _file_digest(source):
307-
"""Calculates SHA256 digest of a file.
308-
309-
Args:
310-
source: either a file-like object or a path to file
311-
"""
312-
hash_sha256 = hashlib.sha256()
313-
314-
should_close = False
315-
316-
if isinstance(source, six.string_types):
317-
should_close = True
318-
source = open(source, 'rb')
319-
320-
for chunk in iter(lambda: source.read(_BUFFER_SIZE), b''):
321-
hash_sha256.update(chunk)
322-
323-
if should_close:
324-
source.close()
325-
326-
return hash_sha256.hexdigest()
327-
328-
329307
def _file_version(path):
330308
return os.lstat(path).st_mtime
331309

0 commit comments

Comments
 (0)