arcade-core 4.2.0__py3-none-any.whl → 4.2.1__py3-none-any.whl
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.
arcade_core/usage/identity.py
CHANGED
|
@@ -6,7 +6,6 @@ supporting pre-login anonymous tracking, post-login identity stitching,
|
|
|
6
6
|
and logout identity rotation.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
import fcntl
|
|
10
9
|
import json
|
|
11
10
|
import os
|
|
12
11
|
import tempfile
|
|
@@ -14,6 +13,7 @@ import uuid
|
|
|
14
13
|
from typing import Any
|
|
15
14
|
|
|
16
15
|
import httpx
|
|
16
|
+
import portalocker
|
|
17
17
|
import yaml
|
|
18
18
|
|
|
19
19
|
from arcade_core.constants import ARCADE_CONFIG_PATH, CREDENTIALS_FILE_PATH
|
|
@@ -46,18 +46,16 @@ class UsageIdentity:
|
|
|
46
46
|
if os.path.exists(self.usage_file_path):
|
|
47
47
|
try:
|
|
48
48
|
with open(self.usage_file_path) as f:
|
|
49
|
-
#
|
|
50
|
-
|
|
51
|
-
fcntl.flock(f.fileno(), fcntl.LOCK_SH)
|
|
49
|
+
# Lock file for reading (shared lock)
|
|
50
|
+
portalocker.lock(f, portalocker.LOCK_SH)
|
|
52
51
|
try:
|
|
53
52
|
data = json.load(f)
|
|
54
53
|
if isinstance(data, dict) and KEY_ANON_ID in data:
|
|
55
54
|
self._data = data
|
|
56
55
|
return self._data
|
|
57
56
|
finally:
|
|
58
|
-
#
|
|
59
|
-
|
|
60
|
-
fcntl.flock(f.fileno(), fcntl.LOCK_UN)
|
|
57
|
+
# Unlock file
|
|
58
|
+
portalocker.unlock(f)
|
|
61
59
|
except Exception: # noqa: S110
|
|
62
60
|
pass
|
|
63
61
|
|
|
@@ -80,18 +78,18 @@ class UsageIdentity:
|
|
|
80
78
|
|
|
81
79
|
try:
|
|
82
80
|
with os.fdopen(temp_fd, "w") as f:
|
|
83
|
-
#
|
|
84
|
-
|
|
85
|
-
fcntl.flock(f.fileno(), fcntl.LOCK_EX)
|
|
81
|
+
# Lock file for writing (exclusive lock)
|
|
82
|
+
portalocker.lock(f, portalocker.LOCK_EX)
|
|
86
83
|
try:
|
|
87
84
|
json.dump(data, f, indent=2)
|
|
88
85
|
f.flush()
|
|
89
86
|
os.fsync(f.fileno()) # ensure data is written to disk
|
|
90
87
|
finally:
|
|
91
|
-
|
|
92
|
-
fcntl.flock(f.fileno(), fcntl.LOCK_UN)
|
|
88
|
+
portalocker.unlock(f)
|
|
93
89
|
|
|
94
|
-
os.
|
|
90
|
+
# Use os.replace() for cross-platform atomic file replacement
|
|
91
|
+
# os.replace() is atomic on both Unix and Windows (Python 3.3+)
|
|
92
|
+
os.replace(temp_path, self.usage_file_path)
|
|
95
93
|
except Exception:
|
|
96
94
|
# clean up
|
|
97
95
|
import contextlib
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arcade-core
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.1
|
|
4
4
|
Summary: Arcade Core - Core library for Arcade platform
|
|
5
5
|
Author-email: Arcade <dev@arcade.dev>
|
|
6
6
|
License: MIT
|
|
@@ -16,6 +16,7 @@ Requires-Python: >=3.10
|
|
|
16
16
|
Requires-Dist: httpx>=0.27.0
|
|
17
17
|
Requires-Dist: loguru>=0.7.0
|
|
18
18
|
Requires-Dist: packaging>=24.1
|
|
19
|
+
Requires-Dist: portalocker>=2.10.0
|
|
19
20
|
Requires-Dist: pydantic>=2.7.0
|
|
20
21
|
Requires-Dist: pyjwt>=2.8.0
|
|
21
22
|
Requires-Dist: pyyaml>=6.0
|
|
@@ -26,9 +26,9 @@ arcade_core/network/org_transport.py,sha256=DZdIYdldtYZ6gtmWA1C8dXmsNuOv7tePhlpB
|
|
|
26
26
|
arcade_core/usage/__init__.py,sha256=SUR5mqF-bjdbl-P-OOHN6OFAjXZu4agXyPhr7xdVXCw,234
|
|
27
27
|
arcade_core/usage/__main__.py,sha256=rSJkE1G9hlV3HRRA6EJE5Lmy3wKyan7rAxBXHX9A1cI,1577
|
|
28
28
|
arcade_core/usage/constants.py,sha256=1FQIhkFFMZUhU-H4A7GvMb7KQ3qLFrNAZb2-LEvSF3k,1052
|
|
29
|
-
arcade_core/usage/identity.py,sha256=
|
|
29
|
+
arcade_core/usage/identity.py,sha256=h_THm-cN3j8nqW7_Lew7OdBRA70valCKJ7zvhDvja_E,8416
|
|
30
30
|
arcade_core/usage/usage_service.py,sha256=xzWWSEktm58liiNYugBHRactSru8V5foriHcsoH0j1A,3407
|
|
31
31
|
arcade_core/usage/utils.py,sha256=FqBOmlhwT68cbnpI5Vx9ZW6vLRYPVg4FJ0GaMEp8qEM,398
|
|
32
|
-
arcade_core-4.2.
|
|
33
|
-
arcade_core-4.2.
|
|
34
|
-
arcade_core-4.2.
|
|
32
|
+
arcade_core-4.2.1.dist-info/METADATA,sha256=5lFJ1C5vqqBXHLC51RdiGvHFsddE-JbG69wt8MFydlM,2447
|
|
33
|
+
arcade_core-4.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
34
|
+
arcade_core-4.2.1.dist-info/RECORD,,
|
|
File without changes
|