Skip to content

Commit

Permalink
Merge pull request #81 from hugovk/master
Browse files Browse the repository at this point in the history
Add support for Python 3.10 and 3.11
  • Loading branch information
Byron committed Nov 17, 2022
2 parents 2ce0e31 + 7a68270 commit 3415e08
Show file tree
Hide file tree
Showing 21 changed files with 50 additions and 96 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 1000
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down
20 changes: 0 additions & 20 deletions .travis.yml

This file was deleted.

9 changes: 4 additions & 5 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
#
# GitDB documentation build configuration file, created by
# sphinx-quickstart on Wed Jun 30 00:01:32 2010.
Expand Down Expand Up @@ -38,8 +37,8 @@
master_doc = 'index'

# General information about the project.
project = u'GitDB'
copyright = u'2011, Sebastian Thiel'
project = 'GitDB'
copyright = '2011, Sebastian Thiel'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
Expand Down Expand Up @@ -172,8 +171,8 @@
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'GitDB.tex', u'GitDB Documentation',
u'Sebastian Thiel', 'manual'),
('index', 'GitDB.tex', 'GitDB Documentation',
'Sebastian Thiel', 'manual'),
]

# The name of an image file (relative to this directory) to place at the top of
Expand Down
12 changes: 6 additions & 6 deletions gitdb/db/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
__all__ = ('ObjectDBR', 'ObjectDBW', 'FileDBBase', 'CompoundDB', 'CachingDB')


class ObjectDBR(object):
class ObjectDBR:

"""Defines an interface for object database lookup.
Objects are identified either by their 20 byte bin sha"""
Expand Down Expand Up @@ -63,7 +63,7 @@ def sha_iter(self):
#} END query interface


class ObjectDBW(object):
class ObjectDBW:

"""Defines an interface to create objects in the database"""

Expand Down Expand Up @@ -105,7 +105,7 @@ def store(self, istream):
#} END edit interface


class FileDBBase(object):
class FileDBBase:

"""Provides basic facilities to retrieve files of interest, including
caching facilities to help mapping hexsha's to objects"""
Expand All @@ -117,7 +117,7 @@ def __init__(self, root_path):
**Note:** The base will not perform any accessablity checking as the base
might not yet be accessible, but become accessible before the first
access."""
super(FileDBBase, self).__init__()
super().__init__()
self._root_path = root_path

#{ Interface
Expand All @@ -133,7 +133,7 @@ def db_path(self, rela_path):
#} END interface


class CachingDB(object):
class CachingDB:

"""A database which uses caches to speed-up access"""

Expand Down Expand Up @@ -176,7 +176,7 @@ def _set_cache_(self, attr):
elif attr == '_db_cache':
self._db_cache = dict()
else:
super(CompoundDB, self)._set_cache_(attr)
super()._set_cache_(attr)

def _db_query(self, sha):
""":return: database containing the given 20 byte sha
Expand Down
4 changes: 2 additions & 2 deletions gitdb/db/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class GitDB(FileDBBase, ObjectDBW, CompoundDB):

def __init__(self, root_path):
"""Initialize ourselves on a git objects directory"""
super(GitDB, self).__init__(root_path)
super().__init__(root_path)

def _set_cache_(self, attr):
if attr == '_dbs' or attr == '_loose_db':
Expand Down Expand Up @@ -68,7 +68,7 @@ def _set_cache_(self, attr):
# finally set the value
self._loose_db = loose_db
else:
super(GitDB, self)._set_cache_(attr)
super()._set_cache_(attr)
# END handle attrs

#{ ObjectDBW interface
Expand Down
4 changes: 2 additions & 2 deletions gitdb/db/loose.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class LooseObjectDB(FileDBBase, ObjectDBR, ObjectDBW):
new_objects_mode = int("644", 8)

def __init__(self, root_path):
super(LooseObjectDB, self).__init__(root_path)
super().__init__(root_path)
self._hexsha_to_file = dict()
# Additional Flags - might be set to 0 after the first failure
# Depending on the root, this might work for some mounts, for others not, which
Expand Down Expand Up @@ -151,7 +151,7 @@ def set_ostream(self, stream):
""":raise TypeError: if the stream does not support the Sha1Writer interface"""
if stream is not None and not isinstance(stream, Sha1Writer):
raise TypeError("Output stream musst support the %s interface" % Sha1Writer.__name__)
return super(LooseObjectDB, self).set_ostream(stream)
return super().set_ostream(stream)

def info(self, sha):
m = self._map_loose_object(sha)
Expand Down
2 changes: 1 addition & 1 deletion gitdb/db/mem.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class MemoryDB(ObjectDBR, ObjectDBW):
exists in the target storage before introducing actual IO"""

def __init__(self):
super(MemoryDB, self).__init__()
super().__init__()
self._db = LooseObjectDB("path/doesnt/matter")

# maps 20 byte shas to their OStream objects
Expand Down
2 changes: 1 addition & 1 deletion gitdb/db/pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class PackedDB(FileDBBase, ObjectDBR, CachingDB, LazyMixin):
_sort_interval = 500

def __init__(self, root_path):
super(PackedDB, self).__init__(root_path)
super().__init__(root_path)
# list of lists with three items:
# * hits - number of times the pack was hit with a request
# * entity - Pack entity instance
Expand Down
8 changes: 4 additions & 4 deletions gitdb/db/ref.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ class ReferenceDB(CompoundDB):
ObjectDBCls = None

def __init__(self, ref_file):
super(ReferenceDB, self).__init__()
super().__init__()
self._ref_file = ref_file

def _set_cache_(self, attr):
if attr == '_dbs':
self._dbs = list()
self._update_dbs_from_ref_file()
else:
super(ReferenceDB, self)._set_cache_(attr)
super()._set_cache_(attr)
# END handle attrs

def _update_dbs_from_ref_file(self):
Expand All @@ -44,7 +44,7 @@ def _update_dbs_from_ref_file(self):
try:
with codecs.open(self._ref_file, 'r', encoding="utf-8") as f:
ref_paths = [l.strip() for l in f]
except (OSError, IOError):
except OSError:
pass
# END handle alternates

Expand Down Expand Up @@ -79,4 +79,4 @@ def _update_dbs_from_ref_file(self):
def update_cache(self, force=False):
# re-read alternates and update databases
self._update_dbs_from_ref_file()
return super(ReferenceDB, self).update_cache(force)
return super().update_cache(force)
2 changes: 1 addition & 1 deletion gitdb/fun.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ def delta_chunk_apply(dc, bbuf, write):
# END handle chunk mode


class DeltaChunk(object):
class DeltaChunk:

"""Represents a piece of a delta, it can either add new data, or copy existing
one from a source buffer"""
Expand Down
4 changes: 2 additions & 2 deletions gitdb/pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def write_stream_to_pack(read, write, zstream, base_crc=None):
#} END utilities


class IndexWriter(object):
class IndexWriter:

"""Utility to cache index information, allowing to write all information later
in one go to the given stream
Expand Down Expand Up @@ -257,7 +257,7 @@ class PackIndexFile(LazyMixin):
index_version_default = 2

def __init__(self, indexpath):
super(PackIndexFile, self).__init__()
super().__init__()
self._indexpath = indexpath

def close(self):
Expand Down
12 changes: 6 additions & 6 deletions gitdb/stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,13 +219,13 @@ def read(self, size=-1):
# END clamp size

if size == 0:
return bytes()
return b''
# END handle depletion

# deplete the buffer, then just continue using the decompress object
# which has an own buffer. We just need this to transparently parse the
# header from the zlib stream
dat = bytes()
dat = b''
if self._buf:
if self._buflen >= size:
# have enough data
Expand Down Expand Up @@ -553,7 +553,7 @@ def size(self):

#{ W Streams

class Sha1Writer(object):
class Sha1Writer:

"""Simple stream writer which produces a sha whenever you like as it degests
everything it is supposed to write"""
Expand Down Expand Up @@ -650,7 +650,7 @@ class FDCompressedSha1Writer(Sha1Writer):
exc = IOError("Failed to write all bytes to filedescriptor")

def __init__(self, fd):
super(FDCompressedSha1Writer, self).__init__()
super().__init__()
self.fd = fd
self.zip = zlib.compressobj(zlib.Z_BEST_SPEED)

Expand All @@ -677,7 +677,7 @@ def close(self):
#} END stream interface


class FDStream(object):
class FDStream:

"""A simple wrapper providing the most basic functions on a file descriptor
with the fileobject interface. Cannot use os.fdopen as the resulting stream
Expand Down Expand Up @@ -711,7 +711,7 @@ def close(self):
close(self._fd)


class NullStream(object):
class NullStream:

"""A stream that does nothing but providing a stream interface.
Use it like /dev/null"""
Expand Down
2 changes: 1 addition & 1 deletion gitdb/test/db/test_ref.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def make_alt_file(self, alt_path, alt_list):
The list can be empty"""
with open(alt_path, "wb") as alt_file:
for alt in alt_list:
alt_file.write(alt.encode("utf-8") + "\n".encode("ascii"))
alt_file.write(alt.encode("utf-8") + b"\n")

@with_rw_directory
def test_writing(self, path):
Expand Down
21 changes: 3 additions & 18 deletions gitdb/test/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class TestBase(unittest.TestCase):
@classmethod
def setUpClass(cls):
try:
super(TestBase, cls).setUpClass()
super().setUpClass()
except AttributeError:
pass

Expand All @@ -58,21 +58,6 @@ def setUpClass(cls):

#{ Decorators

def skip_on_travis_ci(func):
"""All tests decorated with this one will raise SkipTest when run on travis ci.
Use it to workaround difficult to solve issues
NOTE: copied from bcore (https://github.com/Byron/bcore)"""
@wraps(func)
def wrapper(self, *args, **kwargs):
if 'TRAVIS' in os.environ:
import pytest
pytest.skip("Cannot run on travis-ci")
# end check for travis ci
return func(self, *args, **kwargs)
# end wrapper
return wrapper


def with_rw_directory(func):
"""Create a temporary directory which can be written to, remove it if the
test succeeds, but leave it otherwise to aid additional debugging"""
Expand All @@ -85,7 +70,7 @@ def wrapper(self):
try:
return func(self, path)
except Exception:
sys.stderr.write("Test {}.{} failed, output is at {!r}\n".format(type(self).__name__, func.__name__, path))
sys.stderr.write(f"Test {type(self).__name__}.{func.__name__} failed, output is at {path!r}\n")
keep = True
raise
finally:
Expand Down Expand Up @@ -176,7 +161,7 @@ def make_memory_file(size_in_bytes, randomize=False):
#{ Stream Utilities


class DummyStream(object):
class DummyStream:

def __init__(self):
self.was_read = False
Expand Down
5 changes: 0 additions & 5 deletions gitdb/test/performance/test_pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
# This module is part of GitDB and is released under
# the New BSD License: http://www.opensource.org/licenses/bsd-license.php
"""Performance tests for object store"""
from __future__ import print_function

from gitdb.test.performance.lib import (
TestBigRepoR
Expand All @@ -17,7 +16,6 @@
from gitdb.typ import str_blob_type
from gitdb.exc import UnsupportedOperation
from gitdb.db.pack import PackedDB
from gitdb.test.lib import skip_on_travis_ci

import sys
import os
Expand All @@ -26,7 +24,6 @@

class TestPackedDBPerformance(TestBigRepoR):

@skip_on_travis_ci
def test_pack_random_access(self):
pdb = PackedDB(os.path.join(self.gitrepopath, "objects/pack"))

Expand Down Expand Up @@ -79,7 +76,6 @@ def test_pack_random_access(self):
print("PDB: Obtained %i streams by sha and read all bytes totallying %i KiB ( %f KiB / s ) in %f s ( %f streams/s )" %
(max_items, total_kib, total_kib / (elapsed or 1), elapsed, max_items / (elapsed or 1)), file=sys.stderr)

@skip_on_travis_ci
def test_loose_correctness(self):
"""based on the pack(s) of our packed object DB, we will just copy and verify all objects in the back
into the loose object db (memory).
Expand All @@ -106,7 +102,6 @@ def test_loose_correctness(self):
mdb._cache.clear()
# end for each sha to copy

@skip_on_travis_ci
def test_correctness(self):
pdb = PackedDB(os.path.join(self.gitrepopath, "objects/pack"))
# disabled for now as it used to work perfectly, checking big repositories takes a long time
Expand Down
Loading

0 comments on commit 3415e08

Please sign in to comment.