Skip to content

Commit 54ce654

Browse files
authored
Use Ruff for format and linting (#201)
And use pyupgrade to modernize code. Signed-off-by: Inada Naoki <songofacandy@gmail.com>
1 parent b09d6c9 commit 54ce654

13 files changed

+582
-556
lines changed

.github/workflows/test.yml

+11
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ on:
77
pull_request:
88

99
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- name: Install Ruff
15+
run: pipx install ruff
16+
- name: Ruff check
17+
run: ruff check
18+
- name: Ruff format
19+
run: ruff format --diff
20+
1021
test:
1122
runs-on: ubuntu-latest
1223
strategy:

fluent/__about__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.10.1dev1'
1+
__version__ = "0.10.1dev1"

fluent/asynchandler.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
# -*- coding: utf-8 -*-
2-
31
from fluent import asyncsender
42
from fluent import handler
53

64

75
class FluentHandler(handler.FluentHandler):
8-
'''
6+
"""
97
Asynchronous Logging Handler for fluent.
10-
'''
8+
"""
119

1210
def getSenderClass(self):
1311
return asyncsender.FluentSender
@@ -18,7 +16,7 @@ def close(self):
1816
try:
1917
self.sender.close()
2018
finally:
21-
super(FluentHandler, self).close()
19+
super().close()
2220
finally:
2321
self.release()
2422

fluent/asyncsender.py

+36-27
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
31
import threading
42
from queue import Queue, Full, Empty
53

@@ -17,8 +15,7 @@
1715

1816

1917
def _set_global_sender(sender): # pragma: no cover
20-
""" [For testing] Function to set global sender directly
21-
"""
18+
"""[For testing] Function to set global sender directly"""
2219
global _global_sender
2320
_global_sender = sender
2421

@@ -37,41 +34,53 @@ def close(): # pragma: no cover
3734

3835

3936
class FluentSender(sender.FluentSender):
40-
def __init__(self,
41-
tag,
42-
host='localhost',
43-
port=24224,
44-
bufmax=1 * 1024 * 1024,
45-
timeout=3.0,
46-
verbose=False,
47-
buffer_overflow_handler=None,
48-
nanosecond_precision=False,
49-
msgpack_kwargs=None,
50-
queue_maxsize=DEFAULT_QUEUE_MAXSIZE,
51-
queue_circular=DEFAULT_QUEUE_CIRCULAR,
52-
queue_overflow_handler=None,
53-
**kwargs):
37+
def __init__(
38+
self,
39+
tag,
40+
host="localhost",
41+
port=24224,
42+
bufmax=1 * 1024 * 1024,
43+
timeout=3.0,
44+
verbose=False,
45+
buffer_overflow_handler=None,
46+
nanosecond_precision=False,
47+
msgpack_kwargs=None,
48+
queue_maxsize=DEFAULT_QUEUE_MAXSIZE,
49+
queue_circular=DEFAULT_QUEUE_CIRCULAR,
50+
queue_overflow_handler=None,
51+
**kwargs,
52+
):
5453
"""
5554
:param kwargs: This kwargs argument is not used in __init__. This will be removed in the next major version.
5655
"""
57-
super(FluentSender, self).__init__(tag=tag, host=host, port=port, bufmax=bufmax, timeout=timeout,
58-
verbose=verbose, buffer_overflow_handler=buffer_overflow_handler,
59-
nanosecond_precision=nanosecond_precision,
60-
msgpack_kwargs=msgpack_kwargs,
61-
**kwargs)
56+
super().__init__(
57+
tag=tag,
58+
host=host,
59+
port=port,
60+
bufmax=bufmax,
61+
timeout=timeout,
62+
verbose=verbose,
63+
buffer_overflow_handler=buffer_overflow_handler,
64+
nanosecond_precision=nanosecond_precision,
65+
msgpack_kwargs=msgpack_kwargs,
66+
**kwargs,
67+
)
6268
self._queue_maxsize = queue_maxsize
6369
self._queue_circular = queue_circular
6470
if queue_circular and queue_overflow_handler:
6571
self._queue_overflow_handler = queue_overflow_handler
6672
else:
6773
self._queue_overflow_handler = self._queue_overflow_handler_default
6874

69-
self._thread_guard = threading.Event() # This ensures visibility across all variables
75+
self._thread_guard = (
76+
threading.Event()
77+
) # This ensures visibility across all variables
7078
self._closed = False
7179

7280
self._queue = Queue(maxsize=queue_maxsize)
73-
self._send_thread = threading.Thread(target=self._send_loop,
74-
name="AsyncFluentSender %d" % id(self))
81+
self._send_thread = threading.Thread(
82+
target=self._send_loop, name="AsyncFluentSender %d" % id(self)
83+
)
7584
self._send_thread.daemon = True
7685
self._send_thread.start()
7786

@@ -121,7 +130,7 @@ def _send(self, bytes_):
121130
return True
122131

123132
def _send_loop(self):
124-
send_internal = super(FluentSender, self)._send_internal
133+
send_internal = super()._send_internal
125134

126135
try:
127136
while True:

fluent/event.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
# -*- coding: utf-8 -*-
2-
31
import time
42

53
from fluent import sender
64

75

8-
class Event(object):
6+
class Event:
97
def __init__(self, label, data, **kwargs):
10-
assert isinstance(data, dict), 'data must be a dict'
11-
sender_ = kwargs.get('sender', sender.get_global_sender())
12-
timestamp = kwargs.get('time', int(time.time()))
8+
assert isinstance(data, dict), "data must be a dict"
9+
sender_ = kwargs.get("sender", sender.get_global_sender())
10+
timestamp = kwargs.get("time", int(time.time()))
1311
sender_.emit_with_time(label, timestamp, data)

fluent/handler.py

+83-60
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
1-
# -*- coding: utf-8 -*-
2-
1+
import json
32
import logging
43
import socket
5-
import sys
6-
7-
try:
8-
import simplejson as json
9-
except ImportError: # pragma: no cover
10-
import json
114

125
from fluent import sender
136

147

15-
class FluentRecordFormatter(logging.Formatter, object):
16-
""" A structured formatter for Fluent.
8+
class FluentRecordFormatter(logging.Formatter):
9+
"""A structured formatter for Fluent.
1710
1811
Best used with server storing data in an ElasticSearch cluster for example.
1912
@@ -33,36 +26,49 @@ class FluentRecordFormatter(logging.Formatter, object):
3326
Can be an iterable.
3427
"""
3528

36-
def __init__(self, fmt=None, datefmt=None, style='%', fill_missing_fmt_key=False, format_json=True,
37-
exclude_attrs=None):
38-
super(FluentRecordFormatter, self).__init__(None, datefmt)
39-
40-
if sys.version_info[0:2] >= (3, 2) and style != '%':
29+
def __init__(
30+
self,
31+
fmt=None,
32+
datefmt=None,
33+
style="%",
34+
fill_missing_fmt_key=False,
35+
format_json=True,
36+
exclude_attrs=None,
37+
):
38+
super().__init__(None, datefmt)
39+
40+
if style != "%":
4141
self.__style, basic_fmt_dict = {
42-
'{': (logging.StrFormatStyle, {
43-
'sys_host': '{hostname}',
44-
'sys_name': '{name}',
45-
'sys_module': '{module}',
46-
}),
47-
'$': (logging.StringTemplateStyle, {
48-
'sys_host': '${hostname}',
49-
'sys_name': '${name}',
50-
'sys_module': '${module}',
51-
}),
42+
"{": (
43+
logging.StrFormatStyle,
44+
{
45+
"sys_host": "{hostname}",
46+
"sys_name": "{name}",
47+
"sys_module": "{module}",
48+
},
49+
),
50+
"$": (
51+
logging.StringTemplateStyle,
52+
{
53+
"sys_host": "${hostname}",
54+
"sys_name": "${name}",
55+
"sys_module": "${module}",
56+
},
57+
),
5258
}[style]
5359
else:
5460
self.__style = None
5561
basic_fmt_dict = {
56-
'sys_host': '%(hostname)s',
57-
'sys_name': '%(name)s',
58-
'sys_module': '%(module)s',
62+
"sys_host": "%(hostname)s",
63+
"sys_name": "%(name)s",
64+
"sys_module": "%(module)s",
5965
}
6066

6167
if exclude_attrs is not None:
6268
self._exc_attrs = set(exclude_attrs)
6369
self._fmt_dict = None
6470
self._formatter = self._format_by_exclusion
65-
self.usesTime = super(FluentRecordFormatter, self).usesTime
71+
self.usesTime = super().usesTime
6672
else:
6773
self._exc_attrs = None
6874
if not fmt:
@@ -89,7 +95,7 @@ def __init__(self, fmt=None, datefmt=None, style='%', fill_missing_fmt_key=False
8995

9096
def format(self, record):
9197
# Compute attributes handled by parent class.
92-
super(FluentRecordFormatter, self).format(record)
98+
super().format(record)
9399
# Add ours
94100
record.hostname = self.hostname
95101

@@ -103,7 +109,7 @@ def usesTime(self):
103109
"""This method is substituted on construction based on settings for performance reasons"""
104110

105111
def _structuring(self, data, record):
106-
""" Melds `msg` into `data`.
112+
"""Melds `msg` into `data`.
107113
108114
:param data: dictionary to be sent to fluent server
109115
:param msg: :class:`LogRecord`'s message to add to `data`.
@@ -118,7 +124,7 @@ def _structuring(self, data, record):
118124
elif isinstance(msg, str):
119125
self._add_dic(data, self._format_msg(record, msg))
120126
else:
121-
self._add_dic(data, {'message': msg})
127+
self._add_dic(data, {"message": msg})
122128

123129
def _format_msg_json(self, record, msg):
124130
try:
@@ -131,7 +137,7 @@ def _format_msg_json(self, record, msg):
131137
return self._format_msg_default(record, msg)
132138

133139
def _format_msg_default(self, record, msg):
134-
return {'message': super(FluentRecordFormatter, self).format(record)}
140+
return {"message": super().format(record)}
135141

136142
def _format_by_exclusion(self, record):
137143
data = {}
@@ -175,17 +181,18 @@ class FluentHandler(logging.Handler):
175181
Logging Handler for fluent.
176182
"""
177183

178-
def __init__(self,
179-
tag,
180-
host='localhost',
181-
port=24224,
182-
timeout=3.0,
183-
verbose=False,
184-
buffer_overflow_handler=None,
185-
msgpack_kwargs=None,
186-
nanosecond_precision=False,
187-
**kwargs):
188-
184+
def __init__(
185+
self,
186+
tag,
187+
host="localhost",
188+
port=24224,
189+
timeout=3.0,
190+
verbose=False,
191+
buffer_overflow_handler=None,
192+
msgpack_kwargs=None,
193+
nanosecond_precision=False,
194+
**kwargs,
195+
):
189196
self.tag = tag
190197
self._host = host
191198
self._port = port
@@ -213,37 +220,53 @@ def sender(self):
213220
buffer_overflow_handler=self._buffer_overflow_handler,
214221
msgpack_kwargs=self._msgpack_kwargs,
215222
nanosecond_precision=self._nanosecond_precision,
216-
**self._kwargs
223+
**self._kwargs,
217224
)
218225
return self._sender
219226

220-
def getSenderInstance(self, tag, host, port, timeout, verbose,
221-
buffer_overflow_handler, msgpack_kwargs,
222-
nanosecond_precision, **kwargs):
227+
def getSenderInstance(
228+
self,
229+
tag,
230+
host,
231+
port,
232+
timeout,
233+
verbose,
234+
buffer_overflow_handler,
235+
msgpack_kwargs,
236+
nanosecond_precision,
237+
**kwargs,
238+
):
223239
sender_class = self.getSenderClass()
224-
return sender_class(tag,
225-
host=host, port=port,
226-
timeout=timeout, verbose=verbose,
227-
buffer_overflow_handler=buffer_overflow_handler,
228-
msgpack_kwargs=msgpack_kwargs,
229-
nanosecond_precision=nanosecond_precision, **kwargs)
240+
return sender_class(
241+
tag,
242+
host=host,
243+
port=port,
244+
timeout=timeout,
245+
verbose=verbose,
246+
buffer_overflow_handler=buffer_overflow_handler,
247+
msgpack_kwargs=msgpack_kwargs,
248+
nanosecond_precision=nanosecond_precision,
249+
**kwargs,
250+
)
230251

231252
def emit(self, record):
232253
data = self.format(record)
233254
_sender = self.sender
234-
return _sender.emit_with_time(None,
235-
sender.EventTime(record.created)
236-
if _sender.nanosecond_precision
237-
else int(record.created),
238-
data)
255+
return _sender.emit_with_time(
256+
None,
257+
sender.EventTime(record.created)
258+
if _sender.nanosecond_precision
259+
else int(record.created),
260+
data,
261+
)
239262

240263
def close(self):
241264
self.acquire()
242265
try:
243266
try:
244267
self.sender.close()
245268
finally:
246-
super(FluentHandler, self).close()
269+
super().close()
247270
finally:
248271
self.release()
249272

0 commit comments

Comments
 (0)