Skip to content

Commit afb1783

Browse files
committed
General package upgrade and typing fixes
1 parent b0588cb commit afb1783

14 files changed

+287
-262
lines changed

.flake8

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
[flake8]
2+
max-line-length = 119
3+
max-doc-length = 119
4+
extend-ignore = E731, E203
5+
per-file-ignores = __init__.py:F401
6+
exclude =
7+
.tox,
8+
.git,
9+
__pycache__,
10+
build,
11+
dist,
12+
*.pyc,
13+
*.egg-info,
14+
.cache,
15+
.eggs
16+
max-complexity = 10
17+
import-order-style = google
18+
application-import-names = flake8

.github/workflows/ci.yml

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ jobs:
1111
runs-on: ubuntu-latest
1212
strategy:
1313
matrix:
14-
python-version: ["3.7", "3.8", "3.9", "3.10"]
14+
python-version: ["3.11", "3.12"]
1515
name: Python ${{ matrix.python-version }} Tests
1616

1717
services:
1818
message-db:
19-
image: ethangarofolo/message-db:1.2.6
19+
image: ethangarofolo/message-db:1.3.1
2020
ports:
2121
- "0.0.0.0:5432:5432"
2222

2323
steps:
24-
- uses: actions/checkout@v2
24+
- uses: actions/checkout@v3
2525
with:
2626
fetch-depth: 1
2727

28-
- uses: actions/setup-python@v2
28+
- uses: actions/setup-python@v3
2929
with:
3030
python-version: ${{ matrix.python-version }}
3131

@@ -36,25 +36,25 @@ jobs:
3636
virtualenvs-in-project: true
3737
installer-parallel: true
3838

39-
- name: Load cached venv
40-
id: cached-poetry-dependencies
41-
uses: actions/cache@v2
39+
- name: Cache multiple paths
40+
uses: actions/cache@v3
4241
with:
43-
path: .venv
44-
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
42+
path: |
43+
.venv
44+
~/.cache/pypoetry
45+
key: ${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}
46+
restore-keys: |
47+
${{ runner.os }}-py${{ matrix.python-version }}-
4548
4649
- name: Install dependencies
47-
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
50+
if: steps.cache.outputs.cache-hit != 'true'
4851
run: poetry install --no-interaction --no-root
4952

50-
- name: Install library
51-
run: poetry install --no-interaction
52-
5353
- name: Tests
5454
run: poetry run pytest --cov --cov-report=xml
5555

5656
- name: Upload coverage
57-
uses: codecov/codecov-action@v2
57+
uses: codecov/codecov-action@v3
5858
with:
5959
file: ./coverage.xml
6060
fail_ci_if_error: true

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/psf/black
3-
rev: 21.11b1
3+
rev: 24.4.0
44
hooks:
55
- id: black
66
language_version: python3.8
@@ -17,13 +17,13 @@ repos:
1717
]
1818

1919
- repo: https://github.com/pycqa/isort
20-
rev: 5.10.1
20+
rev: 5.13.2
2121
hooks:
2222
- id: isort
2323
args: ["--profile", "black", "--filter-files"]
2424

2525
- repo: https://github.com/pre-commit/mirrors-mypy
26-
rev: v0.910
26+
rev: v1.9.0
2727
hooks:
2828
- id: mypy
2929
exclude: ^tests/

message_db/client.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ def __init__(
3636
self,
3737
dbname: str = "message_store",
3838
user: str = "message_store",
39-
password: str = None,
39+
password: str = "",
4040
host: str = "localhost",
4141
port: int = 5432,
42-
connection_pool: ConnectionPool = None,
42+
connection_pool: ConnectionPool | None = None,
4343
) -> None:
4444
if not connection_pool:
4545
connection_pool = ConnectionPool(
@@ -53,8 +53,8 @@ def _write(
5353
stream_name: str,
5454
message_type: str,
5555
data: Dict[str, Any],
56-
metadata: Dict[str, Any] = None,
57-
expected_version: int = None,
56+
metadata: Dict[str, Any] | None = None,
57+
expected_version: int | None = None,
5858
) -> int:
5959
try:
6060
with connection.cursor(cursor_factory=RealDictCursor) as cursor:
@@ -74,6 +74,8 @@ def _write(
7474
)
7575

7676
result = cursor.fetchone()
77+
if result is None:
78+
raise ValueError("No result returned from the database operation.")
7779
except Exception as exc:
7880
raise ValueError(
7981
f"{getattr(exc, 'pgcode')}-{getattr(exc, 'pgerror').splitlines()[0]}"
@@ -86,8 +88,8 @@ def write(
8688
stream_name: str,
8789
message_type: str,
8890
data: Dict,
89-
metadata: Dict = None,
90-
expected_version: int = None,
91+
metadata: Dict | None = None,
92+
expected_version: int | None = None,
9193
) -> int:
9294
conn = self.connection_pool.get_connection()
9395

@@ -101,7 +103,9 @@ def write(
101103

102104
return position
103105

104-
def write_batch(self, stream_name, data, expected_version: int = None) -> int:
106+
def write_batch(
107+
self, stream_name, data, expected_version: int | None = None
108+
) -> int:
105109
conn = self.connection_pool.get_connection()
106110

107111
try:
@@ -125,7 +129,7 @@ def write_batch(self, stream_name, data, expected_version: int = None) -> int:
125129
def read(
126130
self,
127131
stream_name: str,
128-
sql: str = None,
132+
sql: str | None = None,
129133
position: int = 0,
130134
no_of_messages: int = 1000,
131135
) -> List[Dict[str, Any]]:
@@ -171,11 +175,16 @@ def read(
171175

172176
messages = []
173177
for message in raw_messages:
174-
message["data"] = json.loads(message["data"])
175-
message["metadata"] = (
176-
json.loads(message["metadata"]) if message["metadata"] else None
178+
processed_message = dict(
179+
message
180+
) # Convert each RealDictRow to a dictionary
181+
processed_message["data"] = json.loads(processed_message["data"])
182+
processed_message["metadata"] = (
183+
json.loads(processed_message["metadata"])
184+
if processed_message["metadata"]
185+
else None
177186
)
178-
messages.append(message)
187+
messages.append(processed_message)
179188

180189
return messages
181190

@@ -203,7 +212,7 @@ def read_category(
203212
category_name, sql=sql, position=position, no_of_messages=no_of_messages
204213
)
205214

206-
def read_last_message(self, stream_name) -> Dict[str, Any]:
215+
def read_last_message(self, stream_name: str) -> Dict[str, Any] | None:
207216
conn = self.connection_pool.get_connection()
208217
cursor = conn.cursor(cursor_factory=RealDictCursor)
209218

pyproject.toml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,24 @@ packages = [
99
]
1010

1111
[tool.poetry.dependencies]
12-
python = "^3.7"
13-
psycopg2 = "^2.9.2"
12+
python = "^3.11"
13+
psycopg2 = "^2.9.9"
1414

1515
[tool.poetry.dev-dependencies]
16-
pytest = "^6.2.5"
17-
black = "^21.11b1"
18-
pre-commit = "^2.15.0"
19-
isort = "^5.10.1"
20-
autoflake = "^1.4"
21-
pytest-cov = "^3.0.0"
22-
mypy = "^0.910"
23-
types-psycopg2 = "^2.9.1"
16+
autoflake = "^2.3.1"
17+
black = "^24.4.0"
18+
isort = "^5.13.2"
19+
mypy = "^1.9.0"
20+
pre-commit = "^3.7.0"
21+
pytest = "^8.1.1"
22+
pytest-cov = "^5.0.0"
23+
types-psycopg2 = "^2.9.21.20240417"
2424

2525
[build-system]
26-
requires = ["setuptools", "poetry-core>=1.0.0"]
26+
requires = ["poetry-core>=1.0.0", "setuptools"]
2727
build-backend = "poetry.core.masonry.api"
2828

2929
[tool.coverage.run]
30-
source=["message_db"]
30+
source = ["message_db"]
3131
show_missing = true
3232
precision = 2

setup.cfg

Lines changed: 0 additions & 2 deletions
This file was deleted.

setup.py

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)