Skip to content

Commit

Permalink
Add support for Python 3.5
Browse files Browse the repository at this point in the history
  • Loading branch information
Delgan committed Dec 16, 2018
1 parent 4def49c commit 7fd2aa3
Show file tree
Hide file tree
Showing 19 changed files with 91 additions and 73 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ dist: xenial
sudo: required

python:
- '3.5'
- '3.6'
- '3.7'

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Unreleased
==========

- Add support for Python 3.5
- Fix incompatibility with ``awscli`` by downgrading required ``colorama`` dependency version (`#12 <https://github.com/Delgan/loguru/issues/12>`_)


Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<a href="https://travis-ci.org/Delgan/loguru"><img alt="Build status" src="https://img.shields.io/travis/Delgan/loguru.svg"></a>
<a href="https://coveralls.io/github/Delgan/loguru"><img alt="Coverage" src="https://img.shields.io/coveralls/Delgan/loguru.svg"></a>
<a href="https://www.codacy.com/app/delgan-py/loguru/dashboard"><img alt="Code quality" src="https://img.shields.io/codacy/grade/4d97edb1bb734a0d9a684a700a84f555.svg"></a>
<a href="https://github.com/Delgan/loguru/blob/master/.travis.yml"><img alt="Python versions" src="https://img.shields.io/badge/python-3.6%20%7C%203.7-blue.svg"></a>
<a href="https://github.com/Delgan/loguru/blob/master/.travis.yml"><img alt="Python versions" src="https://img.shields.io/badge/python-3.5%20%7C%203.6%20%7C%203.7-blue.svg"></a>
<a href="https://github.com/Delgan/loguru/blob/master/LICENSE"><img alt="License" src="https://img.shields.io/github/license/delgan/loguru.svg"></a>
</p>
<p align="center">
Expand Down
4 changes: 2 additions & 2 deletions loguru/_datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ def __format__(self, spec):

def get(m):
try:
return rep[m[0]]
return rep[m.group(0)]
except KeyError:
return m[0][1:-1]
return m.group(0)[1:-1]

return pattern.sub(get, spec)

Expand Down
7 changes: 6 additions & 1 deletion loguru/_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from collections import namedtuple
from inspect import isclass
from multiprocessing import current_process
from os import PathLike
from os.path import basename, normcase, splitext
from threading import current_thread

Expand All @@ -20,6 +19,12 @@
from ._handler import Handler
from ._recattrs import ExceptionRecattr, FileRecattr, LevelRecattr, ProcessRecattr, ThreadRecattr

try:
from os import PathLike
except ImportError:
from pathlib import PurePath as PathLike


Level = namedtuple("Level", ["no", "color", "icon"])

start_time = now()
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: Implementation :: CPython",
Expand All @@ -44,15 +45,14 @@
],
extras_require={
"dev": [
"black>=18.6b4",
"coveralls>=1.3.0",
"isort>=4.3.4",
"pytest>=3.5.0",
"pytest>=3.9.0",
"pytest-cov>=2.5.1",
"Sphinx>=1.7.4",
"sphinx-autobuild>=0.7",
"sphinx-rtd-theme>=0.3",
]
},
python_requires=">=3.6",
python_requires=">=3.5",
)
10 changes: 5 additions & 5 deletions tests/test_add_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,22 +317,22 @@ def write(self, m, kw2, kw1):
def test_file_mode_a(tmpdir):
file = tmpdir.join("test.log")
file.write("base\n")
logger.add(file.realpath(), format="{message}", mode="a")
logger.add(str(file), format="{message}", mode="a")
logger.debug("msg")
assert file.read() == "base\nmsg\n"


def test_file_mode_w(tmpdir):
file = tmpdir.join("test.log")
file.write("base\n")
logger.add(file.realpath(), format="{message}", mode="w")
logger.add(str(file), format="{message}", mode="w")
logger.debug("msg")
assert file.read() == "msg\n"


def test_file_buffering(tmpdir):
file = tmpdir.join("test.log")
logger.add(file.realpath(), format="{message}", buffering=-1)
logger.add(str(file), format="{message}", buffering=-1)
logger.debug("x" * (io.DEFAULT_BUFFER_SIZE // 2))
assert file.read() == ""
logger.debug("x" * (io.DEFAULT_BUFFER_SIZE * 2))
Expand All @@ -341,7 +341,7 @@ def test_file_buffering(tmpdir):

def test_file_not_delayed(tmpdir):
file = tmpdir.join("test.log")
logger.add(file.realpath(), format="{message}", delay=False)
logger.add(str(file), format="{message}", delay=False)
assert file.check(exists=1)
assert file.read() == ""
logger.debug("Not delayed")
Expand All @@ -350,7 +350,7 @@ def test_file_not_delayed(tmpdir):

def test_file_delayed(tmpdir):
file = tmpdir.join("test.log")
logger.add(file.realpath(), format="{message}", delay=True)
logger.add(str(file), format="{message}", delay=True)
assert file.check(exists=0)
logger.debug("Delayed")
assert file.read() == "Delayed\n"
Expand Down
12 changes: 6 additions & 6 deletions tests/test_add_sinks.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from loguru import logger
import pytest


message = "test message"
expected = message + "\n"

Expand Down Expand Up @@ -49,16 +48,15 @@ def test_devnull(rep):
)
def test_file_sink(rep, sink_from_path, tmpdir):
file = tmpdir.join("test.log")
path = file.realpath()
sink = sink_from_path(path)
sink = sink_from_path(str(file))
log(sink, rep)
assert file.read() == expected * rep


@repetitions
def test_file_sink_folder_creation(rep, tmpdir):
file = tmpdir.join("some", "sub", "folder", "not", "existing", "test.log")
log(file.realpath(), rep)
log(str(file), rep)
assert file.read() == expected * rep


Expand Down Expand Up @@ -132,10 +130,12 @@ def test_invalid_sink(sink):


def test_deprecated_start_and_stop(writer):
i = logger.start(writer, format="{message}")
with pytest.warns(DeprecationWarning):
i = logger.start(writer, format="{message}")
logger.debug("Test")
assert writer.read() == "Test\n"
writer.clear()
logger.stop(i)
with pytest.warns(DeprecationWarning):
logger.stop(i)
logger.debug("Test")
assert writer.read() == ""
2 changes: 1 addition & 1 deletion tests/test_catch_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ def myfunc():
{post}
myfunc()
"""
code = code.format(logfile=str(logfile.realpath()), fmt=format, catch=catch, ctx=ctx, post=post)
code = code.format(logfile=str(logfile), fmt=format, catch=catch, ctx=ctx, post=post)
code = textwrap.dedent(code).strip()

pyfile.write(code)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def test_handlers(capsys, tmpdir):
file = tmpdir.join("test.log")

handlers = [
{"sink": file.realpath(), "format": "FileSink: {message}"},
{"sink": str(file), "format": "FileSink: {message}"},
{"sink": sys.stdout, "format": "StdoutSink: {message}"},
]

Expand Down
2 changes: 1 addition & 1 deletion tests/test_datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def test_log(fmt):
return result

def test_file(fmt):
logger.add(tmpdir.join(fmt))
logger.add(str(tmpdir.join(fmt)))
logger.debug("X")
files = tmpdir.listdir()
assert len(files) == 1
Expand Down
12 changes: 11 additions & 1 deletion tests/test_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ def f():
with logger.catch():
f()
""" % str(
file.realpath()
file
)

code = textwrap.dedent(code)
Expand Down Expand Up @@ -509,6 +509,7 @@ def c(n):
assert next(line_4).endswith(" 2")


@pytest.mark.skipif(sys.version_info < (3, 6), reason="Require Python < 3.6")
def test_no_exception(writer):
logger.add(writer, backtrace=False, colorize=False, format="{message}")

Expand All @@ -517,6 +518,15 @@ def test_no_exception(writer):
assert writer.read() == "No Error.\nNoneType: None\n"


@pytest.mark.skipif(sys.version_info > (3, 5), reason="Require Python > 3.5")
def test_no_exception(writer):
logger.add(writer, backtrace=False, colorize=False, format="{message}")

logger.exception("No Error.")

assert writer.read() == "No Error.\nNoneType\n"


def test_enqueue_exception(writer):
logger.add(
writer, backtrace=False, colorize=False, enqueue=True, catch=False, format="{message}"
Expand Down
18 changes: 9 additions & 9 deletions tests/test_filesink_compression.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
"compression", ["gz", "bz2", "zip", "xz", "lzma", "tar", "tar.gz", "tar.bz2", "tar.xz"]
)
def test_compression_ext(tmpdir, compression):
i = logger.add(tmpdir.join("file.log"), compression=compression)
i = logger.add(str(tmpdir.join("file.log")), compression=compression)
logger.remove(i)

assert len(tmpdir.listdir()) == 1
assert tmpdir.join("file.log.%s" % compression).check(exists=1)


def test_delayed(tmpdir):
i = logger.add(tmpdir.join("file.log"), compression="gz", delay=True)
i = logger.add(str(tmpdir.join("file.log")), compression="gz", delay=True)
logger.debug("a")
logger.remove(i)

Expand All @@ -25,7 +25,7 @@ def test_delayed(tmpdir):


def test_delayed_early_remove(tmpdir):
i = logger.add(tmpdir.join("file.log"), compression="gz", delay=True)
i = logger.add(str(tmpdir.join("file.log")), compression="gz", delay=True)
logger.remove(i)
assert len(tmpdir.listdir()) == 0

Expand All @@ -34,7 +34,7 @@ def test_compression_function(tmpdir):
def compress(file):
os.replace(file, file + ".rar")

i = logger.add(tmpdir.join("file.log"), compression=compress)
i = logger.add(str(tmpdir.join("file.log")), compression=compress)
logger.remove(i)

assert len(tmpdir.listdir()) == 1
Expand All @@ -43,7 +43,7 @@ def compress(file):

@pytest.mark.parametrize("mode", ["a", "a+", "w", "x"])
def test_compression_at_rotation(tmpdir, mode):
i = logger.add(tmpdir.join("file.log"), rotation=0, compression="gz", mode=mode)
i = logger.add(str(tmpdir.join("file.log")), rotation=0, compression="gz", mode=mode)
logger.debug("test")

assert len(tmpdir.listdir()) == 2
Expand All @@ -53,7 +53,7 @@ def test_compression_at_rotation(tmpdir, mode):

@pytest.mark.parametrize("mode", ["a", "a+", "w", "x"])
def test_compression_at_remove_without_rotation(tmpdir, mode):
i = logger.add(tmpdir.join("file.log"), compression="gz", mode=mode)
i = logger.add(str(tmpdir.join("file.log")), compression="gz", mode=mode)
logger.debug("test")
logger.remove(i)

Expand All @@ -63,7 +63,7 @@ def test_compression_at_remove_without_rotation(tmpdir, mode):

@pytest.mark.parametrize("mode", ["a", "a+", "w", "x"])
def test_no_compression_at_remove_with_rotation(tmpdir, mode):
i = logger.add(tmpdir.join("test.log"), compression="gz", rotation="100 MB", mode=mode)
i = logger.add(str(tmpdir.join("test.log")), compression="gz", rotation="100 MB", mode=mode)
logger.debug("test")
logger.remove(i)

Expand All @@ -73,10 +73,10 @@ def test_no_compression_at_remove_with_rotation(tmpdir, mode):

def test_rename_existing_before_compression(monkeypatch_date, tmpdir):
monkeypatch_date(2018, 1, 1, 0, 0, 0, 0)
i = logger.add(tmpdir.join("test.log"), compression="tar.gz")
i = logger.add(str(tmpdir.join("test.log")), compression="tar.gz")
logger.debug("test")
logger.remove(i)
j = logger.add(tmpdir.join("test.log"), compression="tar.gz")
j = logger.add(str(tmpdir.join("test.log")), compression="tar.gz")
logger.debug("test")
logger.remove(j)
assert len(tmpdir.listdir()) == 2
Expand Down
Loading

0 comments on commit 7fd2aa3

Please sign in to comment.