Skip to content

Commit

Permalink
chore: Django bump to <=5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Tomáš Daniel committed Apr 12, 2024
1 parent fcad8de commit 7b30cf2
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 15 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/django.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ jobs:
strategy:
max-parallel: 4
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["3.8", "3.9", "3.10", "3.11"]

services:
dynamodb:
image: amazon/dynamodb-local
image: amazon/dynamodb-local:1.21.0
ports:
- 8000:8000

Expand Down
43 changes: 34 additions & 9 deletions pydjamodb/test_runner.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import multiprocessing
import os
import sys

import django
from django.db import connections
from django.test.runner import ParallelTestSuite, DiscoverRunner
from django.test.runner import ParallelTestSuite, DiscoverRunner, setup_test_environment

from .connection import TestTableConnection
from .models import dynamodb_model_classes
Expand Down Expand Up @@ -37,22 +39,45 @@ def recreate_pynamodb_table(model_class):
_worker_id = 0


def _init_worker(counter):
def _init_worker(
counter,
initial_settings=None,
serialized_contents=None,
process_setup=None,
process_setup_args=None,
debug_mode=None,
):
"""
Switch to databases dedicated to this worker.
This helper lives at module-level because of the multiprocessing module's
requirements.
"""

global _worker_id

with counter.get_lock():
counter.value += 1
_worker_id = counter.value

start_method = multiprocessing.get_start_method()

if start_method == "spawn":
if process_setup and callable(process_setup):
if process_setup_args is None:
process_setup_args = ()
process_setup(*process_setup_args)
django.setup()
setup_test_environment(debug=debug_mode)

for alias in connections:
connection = connections[alias]
settings_dict = connection.creation.get_test_db_clone_settings(str(_worker_id))
# connection.settings_dict must be updated in place for changes to be
# reflected in django.db.connections. If the following line assigned
# connection.settings_dict = settings_dict, new threads would connect
# to the default database instead of the appropriate clone.
connection.settings_dict.update(settings_dict)
connection.close()
if start_method == "spawn":
# Restore initial settings in spawned processes.
connection.settings_dict.update(initial_settings[alias])
if value := serialized_contents.get(alias):
connection._test_serialized_contents = value
connection.creation.setup_worker_connection(_worker_id)

init_pynamodb_test_prefix(_worker_id)

Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

setup(
name='skip-pydjamodb',
version='0.0.11',
version='0.1.0',
description="Django interface to PyDjamoDB.",
keywords='django, DynamoDB, PyDjamoDB',
author='Lubos Matl',
Expand All @@ -27,7 +27,7 @@
'Topic :: Internet :: WWW/HTTP :: Site Management',
],
install_requires=[
'django>=2.0, <4.0',
'django~=4.2',
],
zip_safe=False
)
5 changes: 3 additions & 2 deletions tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
django>=2.0, <4.0
django~=4.2
botocore==1.29.165
pynamodb==5.3.4
skip-django-germanium==2.3.7.1
skip-django-germanium @ git+https://github.com/skip-pay/germanium@tda/chore/django_bump
flake8
coveralls

0 comments on commit 7b30cf2

Please sign in to comment.