Skip to content

Commit a3bedd1

Browse files
committed
fix: fix pre-commit errors
1 parent 45e9d1e commit a3bedd1

2 files changed

Lines changed: 140 additions & 97 deletions

File tree

src/DIRAC/Resources/Catalog/RucioFileCatalogClient.py

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ class RucioFileCatalogClient(FileCatalogClientBase):
6262
"getUserDirectory",
6363
"getFileUserMetadata",
6464
"findFilesByMetadata",
65-
6665
]
6766

6867
WRITE_METHODS = FileCatalogClientBase.WRITE_METHODS + [
@@ -708,7 +707,7 @@ def getFileUserMetadata(self, path):
708707
"""Get the meta data attached to a file, but also to
709708
all its parents
710709
"""
711-
path=next(iter(path))
710+
path = next(iter(path))
712711
resDict = {"Successful": {}, "Failed": {}}
713712
try:
714713
did = self.__getDidsFromLfn(path)
@@ -769,7 +768,7 @@ def setMetadataBulk(self, pathMetadataDict):
769768
def setMetadata(self, path, metadataDict):
770769
"""Add metadata to the given path"""
771770
pathMetadataDict = {}
772-
path=next(iter(path))
771+
path = next(iter(path))
773772
pathMetadataDict[path] = metadataDict
774773
return self.setMetadataBulk(pathMetadataDict)
775774

@@ -796,37 +795,29 @@ def removeMetadata(self, path, metadata):
796795
except Exception as err:
797796
return S_ERROR(str(err))
798797
return S_OK()
799-
798+
800799
def findFilesByMetadata(self, metadataFilterDict, path="/", timeout=120):
801800
"""find the dids for the given metadataFilterDict"""
802-
ruciometadataFilterDict=self.__transform_DIRAC_filter_dict_to_Rucio_filter_dict([metadataFilterDict])
803-
dids=[]
801+
ruciometadataFilterDict = self.__transform_DIRAC_filter_dict_to_Rucio_filter_dict([metadataFilterDict])
802+
dids = []
804803
for scope in self.scopes:
805804
try:
806-
dids.extend(self.client.list_dids(scope=scope, filters=ruciometadataFilterDict,did_type="all" ))
805+
dids.extend(self.client.list_dids(scope=scope, filters=ruciometadataFilterDict, did_type="all"))
807806
except Exception as err:
808807
return S_ERROR(str(err))
809-
return S_OK(dids)
810-
808+
return S_OK(dids)
809+
811810
def __transform_DIRAC_operator_to_Rucio(self, DIRAC_dict):
812811
"""
813812
Transforms a DIRAC's metadata Query dictionary to a Rucio-compatible dictionary.
814-
This method takes a dictionary with DIRAC operators and converts it to a
813+
This method takes a dictionary with DIRAC operators and converts it to a
815814
dictionary with Rucio-compatible operators based on predefined mappings.
816815
for example :
817816
input_dict={'key1': 'value1', 'key2': {'>': 10}, 'key3': {'=': 10}}
818817
return = {'key1': 'value1', 'key2.gt': 10, 'key3': 10}
819818
"""
820819
rucio_dict = {}
821-
operator_mapping = {
822-
'>': '.gt',
823-
'<': '.lt',
824-
'>=': '.gte',
825-
'<=': '.lte',
826-
'=<': '.lte',
827-
'!=': '.ne',
828-
'=' : ''
829-
}
820+
operator_mapping = {">": ".gt", "<": ".lt", ">=": ".gte", "<=": ".lte", "=<": ".lte", "!=": ".ne", "=": ""}
830821

831822
for key, value in DIRAC_dict.items():
832823
if isinstance(value, dict):
@@ -838,7 +829,7 @@ def __transform_DIRAC_operator_to_Rucio(self, DIRAC_dict):
838829
rucio_dict[key] = value
839830

840831
return rucio_dict
841-
832+
842833
def __transform_dict_with_in_operateur(self, DIRAC_dict_with_in_operator_list):
843834
"""
844835
Transforms a list of DIRAC dictionaries containing 'in' operators into a combined list of dictionaries,
@@ -851,7 +842,7 @@ def __transform_dict_with_in_operateur(self, DIRAC_dict_with_in_operator_list):
851842
raise TypeError("DIRAC_dict_with_in_operator_list must be a list of dictionaries")
852843

853844
combined_dict_list = [] # Final list of transformed dictionaries
854-
break_reached = False # Boolean to track if 'in' was found and processed in any dictionary
845+
break_reached = False # Boolean to track if 'in' was found and processed in any dictionary
855846

856847
# Process each dictionary in the input list
857848
for DIRAC_dict_with_in_operator in DIRAC_dict_with_in_operator_list:
@@ -863,9 +854,9 @@ def __transform_dict_with_in_operateur(self, DIRAC_dict_with_in_operator_list):
863854

864855
# Extract the key with 'in' operator and the list of values
865856
for key, value in DIRAC_dict_with_in_operator.items():
866-
if isinstance(value, dict) and 'in' in value:
857+
if isinstance(value, dict) and "in" in value:
867858
in_key = key
868-
in_values = value['in']
859+
in_values = value["in"]
869860
break_reached = True # 'in' operator found
870861
break
871862

@@ -892,11 +883,11 @@ def __transform_DIRAC_filter_dict_to_Rucio_filter_dict(self, DIRAC_filter_dict_l
892883
input_dict_list = [{'particle': {'in': ['proton','electron']},'site': {'in': [ "LaPalma", 'paranal']},'configuration_id': {'=': 14} } ]
893884
return = [{'particle': 'proton', 'site': 'LaPalma', 'configuration_id': 14}, {'particle': 'proton', 'site': 'paranal', 'configuration_id': 14}, {'particle': 'electron', 'site': 'LaPalma', 'configuration_id': 14}, {'particle': 'electron', 'site': 'paranal', 'configuration_id': 14}]
894885
"""
895-
break_detected=True
896-
DIRAC_expanded_filters=DIRAC_filter_dict_list
886+
break_detected = True
887+
DIRAC_expanded_filters = DIRAC_filter_dict_list
897888
while break_detected:
898889
DIRAC_expanded_filters, break_detected = self.__transform_dict_with_in_operateur(DIRAC_expanded_filters)
899-
Rucio_filters=[]
890+
Rucio_filters = []
900891
for filter in DIRAC_expanded_filters:
901892
Rucio_filters.append(self.__transform_DIRAC_operator_to_Rucio(filter))
902-
return Rucio_filters
893+
return Rucio_filters

src/DIRAC/Resources/Catalog/test/Test_RucioFileCatalogClient.py

Lines changed: 122 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -2,128 +2,180 @@
22
from unittest.mock import MagicMock, patch
33
from DIRAC.Resources.Catalog.RucioFileCatalogClient import RucioFileCatalogClient
44

5-
class TestRucioFileCatalogClient(unittest.TestCase):
65

6+
class TestRucioFileCatalogClient(unittest.TestCase):
77
def setUp(self):
8-
self.patcher = patch.object(RucioFileCatalogClient, 'client', new_callable=MagicMock)
8+
self.patcher = patch.object(RucioFileCatalogClient, "client", new_callable=MagicMock)
99
self.client = RucioFileCatalogClient()
10-
self.client.scopes = ['test_scope']
10+
self.client.scopes = ["test_scope"]
1111
self.patcher.start()
1212

1313
def tearDown(self):
1414
self.patcher.stop()
1515

1616
def test_transform_DIRAC_operator_to_Rucio(self):
17-
DIRAC_dict = {
18-
'key1': 'value1',
19-
'key2': {'>': 10},
20-
'key3': {'=': 10}
21-
}
22-
expected_output = {
23-
'key1': 'value1',
24-
'key2.gt': 10,
25-
'key3': 10
26-
}
17+
DIRAC_dict = {"key1": "value1", "key2": {">": 10}, "key3": {"=": 10}}
18+
expected_output = {"key1": "value1", "key2.gt": 10, "key3": 10}
2719
result = self.client._RucioFileCatalogClient__transform_DIRAC_operator_to_Rucio(DIRAC_dict)
2820
self.assertEqual(result, expected_output)
2921

3022
def test_transform_dict_with_in_operateur_2steps(self):
3123
DIRAC_dict_with_in_operator_list = [
32-
{'particle': {'in': ['proton', 'electron']}, 'site': {'in': ['LaPalma', 'paranal']}, 'configuration_id': {'=': 14}}
24+
{
25+
"particle": {"in": ["proton", "electron"]},
26+
"site": {"in": ["LaPalma", "paranal"]},
27+
"configuration_id": {"=": 14},
28+
}
3329
]
3430
expected_intermediate_output = [
35-
{'particle': 'proton', 'site': {'in': ['LaPalma', 'paranal']}, 'configuration_id': {'=': 14}},
36-
{'particle': 'electron', 'site': {'in': ['LaPalma', 'paranal']}, 'configuration_id': {'=': 14}}
31+
{"particle": "proton", "site": {"in": ["LaPalma", "paranal"]}, "configuration_id": {"=": 14}},
32+
{"particle": "electron", "site": {"in": ["LaPalma", "paranal"]}, "configuration_id": {"=": 14}},
3733
]
3834
expected_final_output = [
39-
{'particle': 'proton', 'site': 'LaPalma', 'configuration_id': {'=': 14}},
40-
{'particle': 'proton', 'site': 'paranal', 'configuration_id': {'=': 14}},
41-
{'particle': 'electron', 'site': 'LaPalma', 'configuration_id': {'=': 14}},
42-
{'particle': 'electron', 'site': 'paranal', 'configuration_id': {'=': 14}}
35+
{"particle": "proton", "site": "LaPalma", "configuration_id": {"=": 14}},
36+
{"particle": "proton", "site": "paranal", "configuration_id": {"=": 14}},
37+
{"particle": "electron", "site": "LaPalma", "configuration_id": {"=": 14}},
38+
{"particle": "electron", "site": "paranal", "configuration_id": {"=": 14}},
4339
]
44-
result_intermediate, _ = self.client._RucioFileCatalogClient__transform_dict_with_in_operateur(DIRAC_dict_with_in_operator_list)
40+
result_intermediate, _ = self.client._RucioFileCatalogClient__transform_dict_with_in_operateur(
41+
DIRAC_dict_with_in_operator_list
42+
)
4543
self.assertEqual(result_intermediate, expected_intermediate_output)
46-
result_final, _ = self.client._RucioFileCatalogClient__transform_dict_with_in_operateur( result_intermediate)
44+
result_final, _ = self.client._RucioFileCatalogClient__transform_dict_with_in_operateur(result_intermediate)
4745
self.assertEqual(result_final, expected_final_output)
48-
46+
4947
def test_transform_DIRAC_operator_to_Rucio_simple_key_value(self):
50-
input_dict = {'key1': 'value1', 'key2': 'value2'}
51-
expected_output = {'key1': 'value1', 'key2': 'value2'}
48+
input_dict = {"key1": "value1", "key2": "value2"}
49+
expected_output = {"key1": "value1", "key2": "value2"}
5250
result = self.client._RucioFileCatalogClient__transform_DIRAC_operator_to_Rucio(input_dict)
53-
self.assertEqual(result,expected_output)
51+
self.assertEqual(result, expected_output)
5452

5553
def test_transform_DIRAC_operator_to_Rucio_nested_dict_with_operators_gl(self):
56-
input_dict ={'start' : {'>=': 10}, 'end' : {'>': 5}, 'pointingZ' : {'>=': 0.1} , 'organization' : 'ViaCorp' , 'data_levels' : 'DL3'}
57-
expected_output = {'start.gte': 10, 'end.gt': 5, 'pointingZ.gte' : 0.1 ,'organization': 'ViaCorp', 'data_levels' :'DL3'}
54+
input_dict = {
55+
"start": {">=": 10},
56+
"end": {">": 5},
57+
"pointingZ": {">=": 0.1},
58+
"organization": "ViaCorp",
59+
"data_levels": "DL3",
60+
}
61+
expected_output = {
62+
"start.gte": 10,
63+
"end.gt": 5,
64+
"pointingZ.gte": 0.1,
65+
"organization": "ViaCorp",
66+
"data_levels": "DL3",
67+
}
5868
result = self.client._RucioFileCatalogClient__transform_DIRAC_operator_to_Rucio(input_dict)
59-
self.assertEqual(result,expected_output)
69+
self.assertEqual(result, expected_output)
6070

6171
def test_transform_DIRAC_operator_to_Rucio_nested_dict_with_operators_equals(self):
62-
input_dict = {'start' : {'=': 10}, 'pointingZ' : {'=': 0.1} , 'organization' : 'ViaCorp' , 'data_levels' : 'DL3'}
63-
expected_output = {'start': 10, 'pointingZ' : 0.1 ,'organization': 'ViaCorp', 'data_levels' :'DL3'}
72+
input_dict = {"start": {"=": 10}, "pointingZ": {"=": 0.1}, "organization": "ViaCorp", "data_levels": "DL3"}
73+
expected_output = {"start": 10, "pointingZ": 0.1, "organization": "ViaCorp", "data_levels": "DL3"}
6474
result = self.client._RucioFileCatalogClient__transform_DIRAC_operator_to_Rucio(input_dict)
65-
assert result == expected_output
75+
assert result == expected_output
6676

6777
def test_transform_DIRAC_operator_to_Rucio_mixed_dict(self):
68-
input_dict = {'key1': 'value1', 'key2': {'>': 10}, 'key3': {'=': 10}}
69-
expected_output = {'key1': 'value1', 'key2.gt': 10, 'key3': 10}
78+
input_dict = {"key1": "value1", "key2": {">": 10}, "key3": {"=": 10}}
79+
expected_output = {"key1": "value1", "key2.gt": 10, "key3": 10}
7080
result = self.client._RucioFileCatalogClient__transform_DIRAC_operator_to_Rucio(input_dict)
71-
assert result == expected_output
81+
assert result == expected_output
7282

7383
def test_transform_DIRAC_operator_to_Rucio_in_operator(self):
74-
input_dict = [{'analysis_prog': {'in': ['ctapipe-merge', 'ctapipe-process', 'ctapipe-apply-models']}, 'key1': 'value1','key3': {'=': 10},'key4': {'<': 5} }]
75-
expected_intermediate = [{'key1': 'value1', 'key3': 10, 'key4.lt': 5, 'analysis_prog': 'ctapipe-merge'}, {'key1': 'value1', 'key3': 10, 'key4.lt': 5, 'analysis_prog': 'ctapipe-process'}, {'key1': 'value1', 'key3': 10, 'key4.lt': 5, 'analysis_prog': 'ctapipe-apply-models'}]
76-
result_interm = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(input_dict)
77-
assert result_interm == expected_intermediate
78-
79-
84+
input_dict = [
85+
{
86+
"analysis_prog": {"in": ["ctapipe-merge", "ctapipe-process", "ctapipe-apply-models"]},
87+
"key1": "value1",
88+
"key3": {"=": 10},
89+
"key4": {"<": 5},
90+
}
91+
]
92+
expected_intermediate = [
93+
{"key1": "value1", "key3": 10, "key4.lt": 5, "analysis_prog": "ctapipe-merge"},
94+
{"key1": "value1", "key3": 10, "key4.lt": 5, "analysis_prog": "ctapipe-process"},
95+
{"key1": "value1", "key3": 10, "key4.lt": 5, "analysis_prog": "ctapipe-apply-models"},
96+
]
97+
result_interm = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(
98+
input_dict
99+
)
100+
assert result_interm == expected_intermediate
101+
80102
def test_transform_DIRAC_operator_to_Rucio_2timesin_operator(self):
81-
input_dict = [{ 'particle': {'in': ['proton','electron']},'site': {'in': [ "LaPalma", 'paranal'] } }]
82-
expected = [{'particle': 'proton', 'site': 'LaPalma'}, {'particle': 'proton', 'site': 'paranal'}, {'particle': 'electron', 'site': 'LaPalma'}, {'particle': 'electron', 'site': 'paranal'}]
103+
input_dict = [{"particle": {"in": ["proton", "electron"]}, "site": {"in": ["LaPalma", "paranal"]}}]
104+
expected = [
105+
{"particle": "proton", "site": "LaPalma"},
106+
{"particle": "proton", "site": "paranal"},
107+
{"particle": "electron", "site": "LaPalma"},
108+
{"particle": "electron", "site": "paranal"},
109+
]
83110
result = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(input_dict)
84-
assert result == expected
111+
assert result == expected
85112

86113
def test_2timesin_mix_operator(self):
87-
input_dict = [{
88-
'particle': {'in': ['proton','electron']},'site': {'in': [ "LaPalma", 'paranal']},'configuration_id': {'=': 14} } ]
89-
expected = [{'particle': 'proton', 'site': 'LaPalma', 'configuration_id': 14}, {'particle': 'proton', 'site': 'paranal', 'configuration_id': 14}, {'particle': 'electron', 'site': 'LaPalma', 'configuration_id': 14}, {'particle': 'electron', 'site': 'paranal', 'configuration_id': 14}]
114+
input_dict = [
115+
{
116+
"particle": {"in": ["proton", "electron"]},
117+
"site": {"in": ["LaPalma", "paranal"]},
118+
"configuration_id": {"=": 14},
119+
}
120+
]
121+
expected = [
122+
{"particle": "proton", "site": "LaPalma", "configuration_id": 14},
123+
{"particle": "proton", "site": "paranal", "configuration_id": 14},
124+
{"particle": "electron", "site": "LaPalma", "configuration_id": 14},
125+
{"particle": "electron", "site": "paranal", "configuration_id": 14},
126+
]
90127
result = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(input_dict)
91-
assert result == expected
92-
93-
input_dict = [{
94-
'particle': {'in': ['proton','electron']},'configuration_id': {'=': 14},'site': {'in': [ "LaPalma", 'paranal']} } ]
95-
expected = [{'particle': 'proton', 'configuration_id': 14, 'site': 'LaPalma'}, {'particle': 'proton', 'configuration_id': 14, 'site': 'paranal'}, {'particle': 'electron', 'configuration_id': 14, 'site': 'LaPalma'}, {'particle': 'electron', 'configuration_id': 14, 'site': 'paranal'}]
128+
assert result == expected
129+
130+
input_dict = [
131+
{
132+
"particle": {"in": ["proton", "electron"]},
133+
"configuration_id": {"=": 14},
134+
"site": {"in": ["LaPalma", "paranal"]},
135+
}
136+
]
137+
expected = [
138+
{"particle": "proton", "configuration_id": 14, "site": "LaPalma"},
139+
{"particle": "proton", "configuration_id": 14, "site": "paranal"},
140+
{"particle": "electron", "configuration_id": 14, "site": "LaPalma"},
141+
{"particle": "electron", "configuration_id": 14, "site": "paranal"},
142+
]
96143
result = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(input_dict)
97-
assert result == expected
98-
99-
144+
assert result == expected
100145

101146
def test_transform_DIRAC_filter_dict_to_Rucio_filter_dict(self):
102147
DIRAC_filter_dict_list = [
103-
{'particle': {'in': ['proton', 'electron']}, 'configuration_id': {'=': 14}, 'site': {'in': ['LaPalma', 'paranal']}}
148+
{
149+
"particle": {"in": ["proton", "electron"]},
150+
"configuration_id": {"=": 14},
151+
"site": {"in": ["LaPalma", "paranal"]},
152+
}
104153
]
105154
expected_output = [
106-
{'particle': 'proton', 'configuration_id': 14, 'site': 'LaPalma'},
107-
{'particle': 'proton', 'configuration_id': 14, 'site': 'paranal'},
108-
{'particle': 'electron', 'configuration_id': 14, 'site': 'LaPalma'},
109-
{'particle': 'electron', 'configuration_id': 14, 'site': 'paranal'}
155+
{"particle": "proton", "configuration_id": 14, "site": "LaPalma"},
156+
{"particle": "proton", "configuration_id": 14, "site": "paranal"},
157+
{"particle": "electron", "configuration_id": 14, "site": "LaPalma"},
158+
{"particle": "electron", "configuration_id": 14, "site": "paranal"},
110159
]
111-
result = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(DIRAC_filter_dict_list)
160+
result = self.client._RucioFileCatalogClient__transform_DIRAC_filter_dict_to_Rucio_filter_dict(
161+
DIRAC_filter_dict_list
162+
)
112163
self.assertEqual(result, expected_output)
113164

114165
def test_findFilesByMetadata(self):
115-
self.client.client.list_dids.return_value = ['did1', 'did2']
116-
metadataFilterDict = {'key1': 'value1'}
166+
self.client.client.list_dids.return_value = ["did1", "did2"]
167+
metadataFilterDict = {"key1": "value1"}
117168
result = self.client.findFilesByMetadata(metadataFilterDict)
118-
self.assertTrue(result['OK'])
119-
self.assertEqual(result['Value'], ['did1', 'did2'])
169+
self.assertTrue(result["OK"])
170+
self.assertEqual(result["Value"], ["did1", "did2"])
120171

121172
def test_findFilesByMetadata_with_error(self):
122-
self.client.client.list_dids.side_effect = Exception('Test error')
123-
metadataFilterDict = {'key1': 'value1'}
173+
self.client.client.list_dids.side_effect = Exception("Test error")
174+
metadataFilterDict = {"key1": "value1"}
124175
result = self.client.findFilesByMetadata(metadataFilterDict)
125-
self.assertFalse(result['OK'])
126-
self.assertIn('Test error', result['Message'])
176+
self.assertFalse(result["OK"])
177+
self.assertIn("Test error", result["Message"])
178+
127179

128-
if __name__ == '__main__':
180+
if __name__ == "__main__":
129181
unittest.main()

0 commit comments

Comments
 (0)