sharedkernel 1.4.3__tar.gz → 1.4.4__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.
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/PKG-INFO +4 -2
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/README.md +3 -1
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/setup.py +1 -1
- sharedkernel-1.4.4/sharedkernel/regex_masking.py +93 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel.egg-info/PKG-INFO +4 -2
- sharedkernel-1.4.3/sharedkernel/regex_masking.py +0 -62
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/setup.cfg +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/common.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/__init__.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/mongo_generic_repository.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/vector_database_repository/__init__.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/vector_database_repository/chroma_startegy.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/vector_database_repository/milvus_strategy.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/vector_database_repository/vector_database_repository.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/database/vector_database_repository/vector_database_strategy.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/date_converter.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/enum/__init__.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/enum/error_code.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/enum/vector_database_type.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/exception/__init__.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/exception/exception.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/exception/exception_handlers.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/jwt_service.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/objects/__init__.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/objects/base_document.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/objects/jwt_model.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/objects/result.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel/string_extentions.py +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel.egg-info/SOURCES.txt +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel.egg-info/dependency_links.txt +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel.egg-info/requires.txt +0 -0
- {sharedkernel-1.4.3 → sharedkernel-1.4.4}/sharedkernel.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sharedkernel
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.4
|
|
4
4
|
Summary: sharekernel is an shared package between all python projects
|
|
5
5
|
Author: Smilinno
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -19,7 +19,9 @@ Requires-Dist: jdatetime
|
|
|
19
19
|
this a shared kernel package
|
|
20
20
|
|
|
21
21
|
# Change Log
|
|
22
|
-
### Version 1.4.
|
|
22
|
+
### Version 1.4.4
|
|
23
|
+
- Fix regex masking bugs
|
|
24
|
+
### Version 1.4.3
|
|
23
25
|
- Fix collection bug in MongoGenericRepository
|
|
24
26
|
### Version 1.4.2
|
|
25
27
|
- Fix minor bugs
|
|
@@ -32,7 +32,7 @@ setup(
|
|
|
32
32
|
"jdatetime"
|
|
33
33
|
],
|
|
34
34
|
# *strongly* suggested for sharing
|
|
35
|
-
version="1.4.
|
|
35
|
+
version="1.4.4",
|
|
36
36
|
description="sharekernel is an shared package between all python projects",
|
|
37
37
|
long_description=long_description,
|
|
38
38
|
long_description_content_type="text/markdown",
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from persian_tools import national_id, phone_number
|
|
3
|
+
from persian_tools.bank import card_number, sheba
|
|
4
|
+
|
|
5
|
+
class RegexMaskingBuilder:
|
|
6
|
+
def __init__(self, message: str, replace_str: str = ""):
|
|
7
|
+
self.message = message
|
|
8
|
+
self.replace_str = replace_str
|
|
9
|
+
|
|
10
|
+
def with_card_no(self):
|
|
11
|
+
pattern_16_digits = r'(?<!\d)\d{16}(?!\d)'
|
|
12
|
+
pattern_4_4_4_4 = r'(?<!\d)\d{4}\W?\d{4}\W?\d{4}\W?\d{4}(?!\d)'
|
|
13
|
+
|
|
14
|
+
find_patterns = re.findall(f"{pattern_16_digits}|{pattern_4_4_4_4}", self.message)
|
|
15
|
+
|
|
16
|
+
for matched_pattern in find_patterns:
|
|
17
|
+
clean_pattern = matched_pattern.replace("-", "") if "-" in matched_pattern else matched_pattern
|
|
18
|
+
if len(clean_pattern) == 16 and card_number.validate(clean_pattern):
|
|
19
|
+
self.message = re.sub(re.escape(matched_pattern), self.replace_str, self.message)
|
|
20
|
+
elif card_number.validate(clean_pattern):
|
|
21
|
+
self.message = re.sub(re.escape(matched_pattern), self.message_sub(len(clean_pattern)), self.message)
|
|
22
|
+
|
|
23
|
+
return self
|
|
24
|
+
|
|
25
|
+
def with_national_id(self):
|
|
26
|
+
pattern_10_digits = r'(?<!\d)\d{10}(?!\d)'
|
|
27
|
+
|
|
28
|
+
id_matches = re.findall(pattern_10_digits, self.message)
|
|
29
|
+
if not id_matches:
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
for matched_id in id_matches:
|
|
33
|
+
if national_id.validate(matched_id):
|
|
34
|
+
self.message = re.sub(re.escape(matched_id), self.replace_str, self.message)
|
|
35
|
+
|
|
36
|
+
return self
|
|
37
|
+
|
|
38
|
+
def with_mobile_no(self):
|
|
39
|
+
pattern = r'(?<!\d)\d{10,12}(?!\d)'
|
|
40
|
+
|
|
41
|
+
matches = re.findall(pattern, self.message)
|
|
42
|
+
|
|
43
|
+
if not matches:
|
|
44
|
+
return self
|
|
45
|
+
|
|
46
|
+
for match in matches:
|
|
47
|
+
if phone_number.validate(match):
|
|
48
|
+
self.message = re.sub(re.escape(match), self.replace_str, self.message)
|
|
49
|
+
|
|
50
|
+
return self
|
|
51
|
+
|
|
52
|
+
def with_sheba(self):
|
|
53
|
+
sheba_patterns = [r'(?<!\d)\d{24}(?!\d)', r'IR\d{24}(?!\d)']
|
|
54
|
+
sheba_matches = re.findall('|'.join(sheba_patterns), self.message)
|
|
55
|
+
|
|
56
|
+
if not sheba_matches:
|
|
57
|
+
return self
|
|
58
|
+
|
|
59
|
+
for sheba_number in sheba_matches:
|
|
60
|
+
if sheba.validate(sheba_number):
|
|
61
|
+
message = re.sub(re.escape(sheba_number), self.replace_str, message)
|
|
62
|
+
|
|
63
|
+
return self
|
|
64
|
+
|
|
65
|
+
def with_phone_no(self):
|
|
66
|
+
phone_number_pattern1 = r"(?<!\d)^0[0-9]{2,}-[0-9]{8}$(?!\d)"
|
|
67
|
+
phone_number_pattern2 = r"(?<!\d)^0[0-9]{2,}[0-9]{8}$(?!\d)"
|
|
68
|
+
combined_pattern = re.compile(f"{phone_number_pattern1}|{phone_number_pattern2}")
|
|
69
|
+
self.message = combined_pattern.sub(self.replace_str, self.message)
|
|
70
|
+
return self
|
|
71
|
+
|
|
72
|
+
def with_cvv2(self):
|
|
73
|
+
self.message = re.sub(r'(?<!\d)\d{3}(?!\d)', self.replace_str, self.message)
|
|
74
|
+
return self
|
|
75
|
+
|
|
76
|
+
def with_peigiri_no(self):
|
|
77
|
+
patterns = [
|
|
78
|
+
r'(?<!\d)\d{6}(?!\d)',
|
|
79
|
+
r'(?<!\d)\d{12}(?!\d)',
|
|
80
|
+
r'(?<!\d)\d{20}(?!\d)'
|
|
81
|
+
]
|
|
82
|
+
for pattern in patterns:
|
|
83
|
+
self.message = re.sub(pattern, self.replace_str, self.message)
|
|
84
|
+
return self
|
|
85
|
+
|
|
86
|
+
def with_account_no(self):
|
|
87
|
+
pattern = r'(?<!\d)\d{12,16}(?!\d)'
|
|
88
|
+
|
|
89
|
+
self.message = re.sub(pattern, self.replace_str, self.message)
|
|
90
|
+
return self
|
|
91
|
+
|
|
92
|
+
def build(self):
|
|
93
|
+
return self.message
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sharedkernel
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.4
|
|
4
4
|
Summary: sharekernel is an shared package between all python projects
|
|
5
5
|
Author: Smilinno
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -19,7 +19,9 @@ Requires-Dist: jdatetime
|
|
|
19
19
|
this a shared kernel package
|
|
20
20
|
|
|
21
21
|
# Change Log
|
|
22
|
-
### Version 1.4.
|
|
22
|
+
### Version 1.4.4
|
|
23
|
+
- Fix regex masking bugs
|
|
24
|
+
### Version 1.4.3
|
|
23
25
|
- Fix collection bug in MongoGenericRepository
|
|
24
26
|
### Version 1.4.2
|
|
25
27
|
- Fix minor bugs
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import re
|
|
2
|
-
from persian_tools import national_id, phone_number
|
|
3
|
-
from persian_tools.bank import card_number, sheba
|
|
4
|
-
|
|
5
|
-
class RegexMaskingBuilder:
|
|
6
|
-
def __init__(self, message: str):
|
|
7
|
-
self.message = message
|
|
8
|
-
|
|
9
|
-
def with_card_no(self):
|
|
10
|
-
find_patterns = re.findall(r'(?<!\d)\d{16}(?!\d)', self.message)
|
|
11
|
-
for i in find_patterns:
|
|
12
|
-
if card_number.validate(i):
|
|
13
|
-
self.message = re.sub(i, "*" * 16, self.message)
|
|
14
|
-
return self
|
|
15
|
-
|
|
16
|
-
def with_national_id(self):
|
|
17
|
-
find_patterns = re.findall(r'(?<!\d)\d{10}(?!\d)', self.message)
|
|
18
|
-
for i in find_patterns:
|
|
19
|
-
if national_id.validate(i):
|
|
20
|
-
self.message = re.sub(i, "*" * 10, self.message)
|
|
21
|
-
return self
|
|
22
|
-
|
|
23
|
-
def with_mobile_no(self):
|
|
24
|
-
find_patterns = re.findall(r'(?<!\d)\d{10,12}(?!\d)', self.message)
|
|
25
|
-
for i in find_patterns:
|
|
26
|
-
if phone_number.validate(i):
|
|
27
|
-
self.message = re.sub(i, "*" * len(i), self.message)
|
|
28
|
-
return self
|
|
29
|
-
|
|
30
|
-
def with_sheba(self):
|
|
31
|
-
find_patterns = re.findall(r'|'.join([r'(?<!\d)\d{24}(?!\d)', r'IR\d{24}(?!\d)']), self.message)
|
|
32
|
-
for i in find_patterns:
|
|
33
|
-
if sheba.validate("IR" + i) or sheba.validate(i):
|
|
34
|
-
self.message = re.sub(i, "*" * len(i), self.message)
|
|
35
|
-
return self
|
|
36
|
-
|
|
37
|
-
def with_phone_no(self):
|
|
38
|
-
phone_number_pattern1 = r'(?<!\d)^0[0-9]{2,}-[0-9]{8}$(?!\d)'
|
|
39
|
-
phone_number_pattern2 = r'(?<!\d)^0[0-9]{2,}[0-9]{8}$(?!\d)'
|
|
40
|
-
self.message = re.sub(r'|'.join([phone_number_pattern1, phone_number_pattern2]), "*" * 12, self.message)
|
|
41
|
-
return self
|
|
42
|
-
|
|
43
|
-
def with_cvv2(self):
|
|
44
|
-
self.message = re.sub(r'(?<!\d)\d{3}(?!\d)', "*" * 3, self.message)
|
|
45
|
-
return self
|
|
46
|
-
|
|
47
|
-
def with_peigiri_no(self):
|
|
48
|
-
patterns = {
|
|
49
|
-
r'(?<!\d)\d{6}(?!\d)': "*" * 6,
|
|
50
|
-
r'(?<!\d)\d{12}(?!\d)': "*" * 12,
|
|
51
|
-
r'(?<!\d)\d{20}(?!\d)': "*" * 20
|
|
52
|
-
}
|
|
53
|
-
for key, value in patterns.items():
|
|
54
|
-
self.message = re.sub(key, value, self.message)
|
|
55
|
-
return self
|
|
56
|
-
|
|
57
|
-
def with_account_no(self):
|
|
58
|
-
self.message = re.sub(r'(?<!\d)\d{12,16}(?!\d)', "*" * 16, self.message)
|
|
59
|
-
return self
|
|
60
|
-
|
|
61
|
-
def build(self):
|
|
62
|
-
return self.message
|
|
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
|
|
File without changes
|
|
File without changes
|