morango 0.8.1__tar.gz → 0.8.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of morango might be problematic. Click here for more details.

Files changed (93) hide show
  1. {morango-0.8.1 → morango-0.8.3}/CHANGELOG.md +12 -0
  2. {morango-0.8.1 → morango-0.8.3}/PKG-INFO +3 -2
  3. morango-0.8.3/morango/__init__.py +1 -0
  4. morango-0.8.3/morango/migrations/0002_store_idx_morango_deserialize.py +21 -0
  5. {morango-0.8.1 → morango-0.8.3}/morango/models/core.py +1 -0
  6. {morango-0.8.1 → morango-0.8.3}/morango/models/fields/crypto.py +18 -1
  7. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/PKG-INFO +3 -2
  8. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/SOURCES.txt +1 -0
  9. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/requires.txt +1 -1
  10. {morango-0.8.1 → morango-0.8.3}/setup.py +3 -2
  11. morango-0.8.1/morango/__init__.py +0 -1
  12. {morango-0.8.1 → morango-0.8.3}/AUTHORS.md +0 -0
  13. {morango-0.8.1 → morango-0.8.3}/LICENSE +0 -0
  14. {morango-0.8.1 → morango-0.8.3}/MANIFEST.in +0 -0
  15. {morango-0.8.1 → morango-0.8.3}/README.md +0 -0
  16. {morango-0.8.1 → morango-0.8.3}/morango/api/__init__.py +0 -0
  17. {morango-0.8.1 → morango-0.8.3}/morango/api/fields.py +0 -0
  18. {morango-0.8.1 → morango-0.8.3}/morango/api/parsers.py +0 -0
  19. {morango-0.8.1 → morango-0.8.3}/morango/api/permissions.py +0 -0
  20. {morango-0.8.1 → morango-0.8.3}/morango/api/serializers.py +0 -0
  21. {morango-0.8.1 → morango-0.8.3}/morango/api/urls.py +0 -0
  22. {morango-0.8.1 → morango-0.8.3}/morango/api/viewsets.py +0 -0
  23. {morango-0.8.1 → morango-0.8.3}/morango/apps.py +0 -0
  24. {morango-0.8.1 → morango-0.8.3}/morango/constants/__init__.py +0 -0
  25. {morango-0.8.1 → morango-0.8.3}/morango/constants/api_urls.py +0 -0
  26. {morango-0.8.1 → morango-0.8.3}/morango/constants/capabilities.py +0 -0
  27. {morango-0.8.1 → morango-0.8.3}/morango/constants/settings.py +0 -0
  28. {morango-0.8.1 → morango-0.8.3}/morango/constants/transfer_stages.py +0 -0
  29. {morango-0.8.1 → morango-0.8.3}/morango/constants/transfer_statuses.py +0 -0
  30. {morango-0.8.1 → morango-0.8.3}/morango/errors.py +0 -0
  31. {morango-0.8.1 → morango-0.8.3}/morango/management/__init__.py +0 -0
  32. {morango-0.8.1 → morango-0.8.3}/morango/management/commands/__init__.py +0 -0
  33. {morango-0.8.1 → morango-0.8.3}/morango/management/commands/cleanupsyncs.py +0 -0
  34. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0001_initial.py +0 -0
  35. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0001_squashed_0024_auto_20240129_1757.py +0 -0
  36. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0002_auto_20170511_0400.py +0 -0
  37. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0003_auto_20170519_0543.py +0 -0
  38. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0004_auto_20170520_2112.py +0 -0
  39. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0005_auto_20170629_2139.py +0 -0
  40. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0006_instanceidmodel_system_id.py +0 -0
  41. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0007_auto_20171018_1615.py +0 -0
  42. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0008_auto_20171114_2217.py +0 -0
  43. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0009_auto_20171205_0252.py +0 -0
  44. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0010_auto_20171206_1615.py +0 -0
  45. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0011_sharedkey.py +0 -0
  46. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0012_auto_20180927_1658.py +0 -0
  47. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0013_auto_20190627_1513.py +0 -0
  48. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0014_syncsession_extra_fields.py +0 -0
  49. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0015_auto_20200508_2104.py +0 -0
  50. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0016_store_deserialization_error.py +0 -0
  51. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0017_store_last_transfer_session_id.py +0 -0
  52. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0018_auto_20210714_2216.py +0 -0
  53. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0019_auto_20220113_1807.py +0 -0
  54. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0020_postgres_fix_nullable.py +0 -0
  55. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0021_store_partition_index_create.py +0 -0
  56. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0022_rename_instance_fields.py +0 -0
  57. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0023_add_instance_id_fields.py +0 -0
  58. {morango-0.8.1 → morango-0.8.3}/morango/migrations/0024_auto_20240129_1757.py +0 -0
  59. {morango-0.8.1 → morango-0.8.3}/morango/migrations/__init__.py +0 -0
  60. {morango-0.8.1 → morango-0.8.3}/morango/models/__init__.py +0 -0
  61. {morango-0.8.1 → morango-0.8.3}/morango/models/certificates.py +0 -0
  62. {morango-0.8.1 → morango-0.8.3}/morango/models/fields/__init__.py +0 -0
  63. {morango-0.8.1 → morango-0.8.3}/morango/models/fields/uuids.py +0 -0
  64. {morango-0.8.1 → morango-0.8.3}/morango/models/fsic_utils.py +0 -0
  65. {morango-0.8.1 → morango-0.8.3}/morango/models/manager.py +0 -0
  66. {morango-0.8.1 → morango-0.8.3}/morango/models/query.py +0 -0
  67. {morango-0.8.1 → morango-0.8.3}/morango/models/signals.py +0 -0
  68. {morango-0.8.1 → morango-0.8.3}/morango/models/utils.py +0 -0
  69. {morango-0.8.1 → morango-0.8.3}/morango/proquint.py +0 -0
  70. {morango-0.8.1 → morango-0.8.3}/morango/registry.py +0 -0
  71. {morango-0.8.1 → morango-0.8.3}/morango/sync/__init__.py +0 -0
  72. {morango-0.8.1 → morango-0.8.3}/morango/sync/backends/__init__.py +0 -0
  73. {morango-0.8.1 → morango-0.8.3}/morango/sync/backends/base.py +0 -0
  74. {morango-0.8.1 → morango-0.8.3}/morango/sync/backends/postgres.py +0 -0
  75. {morango-0.8.1 → morango-0.8.3}/morango/sync/backends/sqlite.py +0 -0
  76. {morango-0.8.1 → morango-0.8.3}/morango/sync/backends/utils.py +0 -0
  77. {morango-0.8.1 → morango-0.8.3}/morango/sync/context.py +0 -0
  78. {morango-0.8.1 → morango-0.8.3}/morango/sync/controller.py +0 -0
  79. {morango-0.8.1 → morango-0.8.3}/morango/sync/operations.py +0 -0
  80. {morango-0.8.1 → morango-0.8.3}/morango/sync/session.py +0 -0
  81. {morango-0.8.1 → morango-0.8.3}/morango/sync/syncsession.py +0 -0
  82. {morango-0.8.1 → morango-0.8.3}/morango/sync/utils.py +0 -0
  83. {morango-0.8.1 → morango-0.8.3}/morango/urls.py +0 -0
  84. {morango-0.8.1 → morango-0.8.3}/morango/utils.py +0 -0
  85. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/dependency_links.txt +0 -0
  86. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/not-zip-safe +0 -0
  87. {morango-0.8.1 → morango-0.8.3}/morango.egg-info/top_level.txt +0 -0
  88. {morango-0.8.1 → morango-0.8.3}/requirements/accelerated.txt +0 -0
  89. {morango-0.8.1 → morango-0.8.3}/requirements/dev.txt +0 -0
  90. {morango-0.8.1 → morango-0.8.3}/requirements/docs.txt +0 -0
  91. {morango-0.8.1 → morango-0.8.3}/requirements/postgres.txt +0 -0
  92. {morango-0.8.1 → morango-0.8.3}/requirements/test.txt +0 -0
  93. {morango-0.8.1 → morango-0.8.3}/setup.cfg +0 -0
@@ -2,6 +2,18 @@
2
2
 
3
3
  List of the most important changes for each release.
4
4
 
5
+ ## 0.8.3
6
+ - Adds error handling in the case that an incompatible cffi version is used in with Python 3.13
7
+ - Update Python rsa package dependency to 4.9
8
+
9
+ ## 0.8.2
10
+ - Adds support for Python 3.13
11
+ - Adds conditional index to improve deserialization queries
12
+
13
+ ## 0.8.1
14
+ - Adds support for Python 3.12
15
+ - Squashes old migrations to prevent issues with old SQLite versions
16
+
5
17
  ## 0.8.0
6
18
  - Drops support for Python 2.7
7
19
  - Upgrades cryptography library to 40.0.2, the latest version that supports Python 3.6
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: morango
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Pure Python sqlite-based Django DB replication engine.
5
5
  Home-page: https://github.com/learningequality/morango
6
6
  Author: Learning Equality
@@ -19,7 +19,8 @@ Classifier: Programming Language :: Python :: 3.9
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
- Requires-Python: >=3.6, <3.13
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Requires-Python: >=3.6, <3.14
23
24
  Description-Content-Type: text/markdown
24
25
  License-File: LICENSE
25
26
  License-File: AUTHORS.md
@@ -0,0 +1 @@
1
+ __version__ = "0.8.3"
@@ -0,0 +1,21 @@
1
+ # Generated by Django 3.2.24 on 2024-10-18 23:18
2
+ from django.db import migrations
3
+ from django.db import models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("morango", "0001_squashed_0024_auto_20240129_1757"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddIndex(
14
+ model_name="store",
15
+ index=models.Index(
16
+ condition=models.Q(("dirty_bit", True)),
17
+ fields=["profile", "model_name", "partition", "dirty_bit"],
18
+ name="idx_morango_deserialize",
19
+ ),
20
+ ),
21
+ ]
@@ -450,6 +450,7 @@ class Store(AbstractStore):
450
450
  class Meta:
451
451
  indexes = [
452
452
  models.Index(fields=["partition"], name="idx_morango_store_partition"),
453
+ models.Index(fields=["profile", "model_name", "partition", "dirty_bit"], condition=models.Q(dirty_bit=True), name="idx_morango_deserialize"),
453
454
  ]
454
455
 
455
456
  def _deserialize_store_model(self, fk_cache, defer_fks=False): # noqa: C901
@@ -6,6 +6,7 @@ desirability/efficiency from left to right). We have a base ``Key`` class which
6
6
  """
7
7
  import hashlib
8
8
  import re
9
+ import sys
9
10
 
10
11
  import rsa as PYRSA
11
12
  from django.db import models
@@ -20,6 +21,16 @@ except ImportError:
20
21
  M2CRYPTO_EXISTS = False
21
22
 
22
23
  try:
24
+ # Pre-empt the PanicException that importing cryptography can cause
25
+ # when we are using a non-compatible version of cffi on Python 3.13
26
+ # this happens because of static depdendency bundling in Kolibri
27
+ import cffi
28
+
29
+ if sys.version_info > (3, 13):
30
+ if hasattr(cffi, "__version_info__"):
31
+ if cffi.__version_info__ < (1, 17, 1):
32
+ raise ImportError
33
+
23
34
  from cryptography.hazmat.backends import default_backend
24
35
  from cryptography import exceptions as crypto_exceptions
25
36
 
@@ -39,7 +50,13 @@ try:
39
50
  CRYPTOGRAPHY_EXISTS = True
40
51
  except ImportError:
41
52
  CRYPTOGRAPHY_EXISTS = False
42
-
53
+ except BaseException as e:
54
+ # Still catch PanicExceptions just in case.
55
+ if "Python API call failed" in str(e):
56
+ CRYPTOGRAPHY_EXISTS = False
57
+ else:
58
+ # Otherwise raise the error again to avoid silently catching other errors
59
+ raise
43
60
 
44
61
  from base64 import encodebytes as b64encode, decodebytes as b64decode
45
62
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: morango
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Pure Python sqlite-based Django DB replication engine.
5
5
  Home-page: https://github.com/learningequality/morango
6
6
  Author: Learning Equality
@@ -19,7 +19,8 @@ Classifier: Programming Language :: Python :: 3.9
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
- Requires-Python: >=3.6, <3.13
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Requires-Python: >=3.6, <3.14
23
24
  Description-Content-Type: text/markdown
24
25
  License-File: LICENSE
25
26
  License-File: AUTHORS.md
@@ -37,6 +37,7 @@ morango/management/commands/cleanupsyncs.py
37
37
  morango/migrations/0001_initial.py
38
38
  morango/migrations/0001_squashed_0024_auto_20240129_1757.py
39
39
  morango/migrations/0002_auto_20170511_0400.py
40
+ morango/migrations/0002_store_idx_morango_deserialize.py
40
41
  morango/migrations/0003_auto_20170519_0543.py
41
42
  morango/migrations/0004_auto_20170520_2112.py
42
43
  morango/migrations/0005_auto_20170629_2139.py
@@ -1,6 +1,6 @@
1
1
  django<4,>=3
2
2
  django-mptt>0.10.0
3
- rsa<3.5,>=3.4.2
3
+ rsa<4.10
4
4
  djangorestframework>3.10
5
5
  django-ipware==4.0.2
6
6
  requests
@@ -25,7 +25,7 @@ setup(
25
25
  install_requires=[
26
26
  "django>=3,<4",
27
27
  "django-mptt>0.10.0",
28
- "rsa>=3.4.2,<3.5",
28
+ "rsa<4.10",
29
29
  "djangorestframework>3.10",
30
30
  "django-ipware==4.0.2",
31
31
  "requests",
@@ -46,6 +46,7 @@ setup(
46
46
  'Programming Language :: Python :: 3.10',
47
47
  'Programming Language :: Python :: 3.11',
48
48
  'Programming Language :: Python :: 3.12',
49
+ 'Programming Language :: Python :: 3.13',
49
50
  ],
50
- python_requires=">=3.6, <3.13",
51
+ python_requires=">=3.6, <3.14",
51
52
  )
@@ -1 +0,0 @@
1
- __version__ = "0.8.1"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes