folio-migration-tools 1.9.0rc9__py3-none-any.whl → 1.9.0rc11__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.
Files changed (24) hide show
  1. folio_migration_tools/__main__.py +23 -5
  2. folio_migration_tools/circulation_helper.py +3 -3
  3. folio_migration_tools/library_configuration.py +54 -6
  4. folio_migration_tools/mapper_base.py +2 -2
  5. folio_migration_tools/marc_rules_transformation/hrid_handler.py +1 -1
  6. folio_migration_tools/marc_rules_transformation/marc_file_processor.py +21 -23
  7. folio_migration_tools/marc_rules_transformation/rules_mapper_base.py +3 -0
  8. folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py +52 -37
  9. folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py +131 -21
  10. folio_migration_tools/migration_tasks/batch_poster.py +7 -7
  11. folio_migration_tools/migration_tasks/bibs_transformer.py +6 -59
  12. folio_migration_tools/migration_tasks/holdings_marc_transformer.py +61 -23
  13. folio_migration_tools/migration_tasks/loans_migrator.py +5 -5
  14. folio_migration_tools/migration_tasks/migration_task_base.py +64 -1
  15. folio_migration_tools/migration_tasks/reserves_migrator.py +1 -1
  16. folio_migration_tools/task_configuration.py +18 -1
  17. folio_migration_tools/test_infrastructure/mocked_classes.py +94 -0
  18. folio_migration_tools/transaction_migration/legacy_loan.py +14 -12
  19. folio_migration_tools/transaction_migration/legacy_reserve.py +1 -1
  20. {folio_migration_tools-1.9.0rc9.dist-info → folio_migration_tools-1.9.0rc11.dist-info}/METADATA +2 -2
  21. {folio_migration_tools-1.9.0rc9.dist-info → folio_migration_tools-1.9.0rc11.dist-info}/RECORD +24 -24
  22. {folio_migration_tools-1.9.0rc9.dist-info → folio_migration_tools-1.9.0rc11.dist-info}/LICENSE +0 -0
  23. {folio_migration_tools-1.9.0rc9.dist-info → folio_migration_tools-1.9.0rc11.dist-info}/WHEEL +0 -0
  24. {folio_migration_tools-1.9.0rc9.dist-info → folio_migration_tools-1.9.0rc11.dist-info}/entry_points.txt +0 -0
@@ -10,7 +10,24 @@ def to_camel(string):
10
10
 
11
11
 
12
12
  class AbstractTaskConfiguration(BaseModel):
13
- name: str
13
+ """Abstract class for task configuration."""
14
+
15
+ name: Annotated[
16
+ str,
17
+ Field(
18
+ description=(
19
+ "Name of this migration task. The name is being used to call the specific "
20
+ "task, and to distinguish tasks of similar types"
21
+ )
22
+ ),
23
+ ]
24
+ migration_task_type: Annotated[
25
+ str,
26
+ Field(
27
+ title="Migration task type",
28
+ description=("The type of migration task you want to perform."),
29
+ ),
30
+ ]
14
31
  ecs_tenant_id: Annotated[
15
32
  str,
16
33
  Field(
@@ -212,6 +212,100 @@ def folio_get_all_mocked(ref_data_path, array_name, query="", limit=10):
212
212
  }
213
213
  ]
214
214
 
215
+ elif ref_data_path == "/holdings-note-types":
216
+ yield from [
217
+ {
218
+ "id": "88914775-f677-4759-b57b-1a33b90b24e0",
219
+ "name": "Electronic bookplate",
220
+ "source": "folio",
221
+ "metadata": {
222
+ "createdDate": "2024-09-04T01:54:20.719+00:00",
223
+ "updatedDate": "2024-09-04T01:54:20.719+00:00"
224
+ }
225
+ },
226
+ {
227
+ "id": "c4407cc7-d79f-4609-95bd-1cefb2e2b5c5",
228
+ "name": "Copy note",
229
+ "source": "folio",
230
+ "metadata": {
231
+ "createdDate": "2024-09-04T01:54:20.722+00:00",
232
+ "updatedDate": "2024-09-04T01:54:20.722+00:00"
233
+ }
234
+ },
235
+ {
236
+ "id": "d6510242-5ec3-42ed-b593-3585d2e48fd6",
237
+ "name": "Action note",
238
+ "source": "folio",
239
+ "metadata": {
240
+ "createdDate": "2024-09-04T01:54:20.723+00:00",
241
+ "updatedDate": "2024-09-04T01:54:20.723+00:00"
242
+ }
243
+ },
244
+ {
245
+ "id": "e19eabab-a85c-4aef-a7b2-33bd9acef24e",
246
+ "name": "Binding",
247
+ "source": "folio",
248
+ "metadata": {
249
+ "createdDate": "2024-09-04T01:54:20.724+00:00",
250
+ "updatedDate": "2024-09-04T01:54:20.724+00:00"
251
+ }
252
+ },
253
+ {
254
+ "id": "db9b4787-95f0-4e78-becf-26748ce6bdeb",
255
+ "name": "Provenance",
256
+ "source": "folio",
257
+ "metadata": {
258
+ "createdDate": "2024-09-04T01:54:20.725+00:00",
259
+ "updatedDate": "2024-09-04T01:54:20.725+00:00"
260
+ }
261
+ },
262
+ {
263
+ "id": "6a41b714-8574-4084-8d64-a9373c3fbb59",
264
+ "name": "Reproduction",
265
+ "source": "folio",
266
+ "metadata": {
267
+ "createdDate": "2024-09-04T01:54:20.728+00:00",
268
+ "updatedDate": "2024-09-04T01:54:20.728+00:00"
269
+ }
270
+ },
271
+ {
272
+ "id": "b160f13a-ddba-4053-b9c4-60ec5ea45d56",
273
+ "name": "Note",
274
+ "source": "folio",
275
+ "metadata": {
276
+ "createdDate": "2024-09-04T01:54:20.728+00:00",
277
+ "updatedDate": "2024-09-04T01:54:20.728+00:00"
278
+ }
279
+ },
280
+ {
281
+ "id": "841d1873-015b-4bfb-a69f-6cbb41d925ba",
282
+ "name": "Original MARC holdings statements",
283
+ "source": "local",
284
+ "metadata": {
285
+ "createdDate": "2025-05-02T01:54:20.728+00:00",
286
+ "updatedDate": "2025-05-02T01:54:20.728+00:00"
287
+ }
288
+ },
289
+ {
290
+ "id": "09c1e5c9-6f11-432e-bcbe-b9e733ccce57",
291
+ "name": "Original MFHD Record",
292
+ "source": "local",
293
+ "metadata": {
294
+ "createdDate": "2025-05-02T01:54:20.728+00:00",
295
+ "updatedDate": "2025-05-02T01:54:20.728+00:00"
296
+ }
297
+ },
298
+ {
299
+ "id": "474120b0-d64e-4a6f-9c9c-e7d3e76f3cf5",
300
+ "name": "Original MFHD (MARC21)",
301
+ "source": "local",
302
+ "metadata": {
303
+ "createdDate": "2025-05-02T01:54:20.728+00:00",
304
+ "updatedDate": "2025-05-02T01:54:20.728+00:00"
305
+ }
306
+ }
307
+ ]
308
+
215
309
  elif ref_data_path in super_schema:
216
310
  yield from super_schema.get(ref_data_path)
217
311
  else:
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import logging
2
3
  from datetime import datetime
3
4
  from zoneinfo import ZoneInfo
@@ -41,20 +42,21 @@ class LegacyLoan(object):
41
42
  "Lost and paid",
42
43
  ]
43
44
 
45
+ self.legacy_loan_dict = legacy_loan_dict
44
46
  self.tenant_timezone = tenant_timezone
45
47
  self.errors = []
46
48
  self.row = row
47
49
  for prop in correct_headers:
48
- if prop not in legacy_loan_dict and prop not in optional_headers:
50
+ if prop not in self.legacy_loan_dict and prop not in optional_headers:
49
51
  self.errors.append((f"Missing properties in legacy data {row=}", prop))
50
52
  if (
51
53
  prop != "next_item_status"
52
- and not legacy_loan_dict.get(prop, "").strip()
54
+ and not self.legacy_loan_dict.get(prop, "").strip()
53
55
  and prop not in optional_headers
54
56
  ):
55
57
  self.errors.append((f"Empty properties in legacy data {row=}", prop))
56
58
  try:
57
- temp_date_due: datetime = parse(legacy_loan_dict["due_date"])
59
+ temp_date_due: datetime = parse(self.legacy_loan_dict["due_date"])
58
60
  if temp_date_due.tzinfo != tz.UTC:
59
61
  temp_date_due = temp_date_due.replace(tzinfo=self.tenant_timezone)
60
62
  self.report(
@@ -72,7 +74,7 @@ class LegacyLoan(object):
72
74
  self.errors.append((f"Parse date failure in {row=}. Setting UTC NOW", "due_date"))
73
75
  temp_date_due = datetime.now(ZoneInfo("UTC"))
74
76
  try:
75
- temp_date_out: datetime = parse(legacy_loan_dict["out_date"])
77
+ temp_date_out: datetime = parse(self.legacy_loan_dict["out_date"])
76
78
  if temp_date_out.tzinfo != tz.UTC:
77
79
  temp_date_out = temp_date_out.replace(tzinfo=self.tenant_timezone)
78
80
  self.report(
@@ -86,20 +88,20 @@ class LegacyLoan(object):
86
88
  self.errors.append((f"Parse date failure in {row=}. Setting UTC NOW", "out_date"))
87
89
 
88
90
  # good to go, set properties
89
- self.item_barcode: str = legacy_loan_dict["item_barcode"].strip()
90
- self.patron_barcode: str = legacy_loan_dict["patron_barcode"].strip()
91
- self.proxy_patron_barcode: str = legacy_loan_dict.get("proxy_patron_barcode", "")
91
+ self.item_barcode: str = self.legacy_loan_dict["item_barcode"].strip()
92
+ self.patron_barcode: str = self.legacy_loan_dict["patron_barcode"].strip()
93
+ self.proxy_patron_barcode: str = self.legacy_loan_dict.get("proxy_patron_barcode", "")
92
94
  self.due_date: datetime = temp_date_due
93
95
  self.out_date: datetime = temp_date_out
94
96
  self.correct_for_1_day_loans()
95
97
  self.make_utc()
96
- self.renewal_count = self.set_renewal_count(legacy_loan_dict)
97
- self.next_item_status = legacy_loan_dict.get("next_item_status", "").strip()
98
+ self.renewal_count = self.set_renewal_count(self.legacy_loan_dict)
99
+ self.next_item_status = self.legacy_loan_dict.get("next_item_status", "").strip()
98
100
  if self.next_item_status not in legal_statuses:
99
101
  self.errors.append((f"Not an allowed status {row=}", self.next_item_status))
100
102
  self.service_point_id = (
101
- legacy_loan_dict["service_point_id"]
102
- if legacy_loan_dict.get("service_point_id", "")
103
+ self.legacy_loan_dict["service_point_id"]
104
+ if self.legacy_loan_dict.get("service_point_id", "")
103
105
  else fallback_service_point_id
104
106
  )
105
107
 
@@ -121,7 +123,7 @@ class LegacyLoan(object):
121
123
  if self.out_date.hour == 0:
122
124
  self.out_date = self.out_date.replace(hour=0, minute=1)
123
125
  if self.due_date <= self.out_date:
124
- raise TransformationProcessError(self.row, "Due date is before out date")
126
+ raise TransformationProcessError(self.row, "Due date is before out date, or date information is missing from both", json.dumps(self.legacy_loan_dict, indent=2))
125
127
 
126
128
  def to_dict(self):
127
129
  return {
@@ -33,7 +33,7 @@ class LegacyReserve(object):
33
33
  self.errors.append(("Missing data.", "legacy_identifier"))
34
34
  self.course_listing_id: str = str(
35
35
  FolioUUID(
36
- folio_client.okapi_url,
36
+ folio_client.gateway_url,
37
37
  FOLIONamespaces.course_listing,
38
38
  legacy_request_dict["legacy_identifier"],
39
39
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: folio_migration_tools
3
- Version: 1.9.0rc9
3
+ Version: 1.9.0rc11
4
4
  Summary: A tool allowing you to migrate data from legacy ILS:s (Library systems) into FOLIO LSP
5
5
  License: MIT
6
6
  Keywords: FOLIO,ILS,LSP,Library Systems,MARC21,Library data
@@ -20,7 +20,7 @@ Requires-Dist: art (>=6.5,<7.0)
20
20
  Requires-Dist: deepdiff (>=6.2.3,<7.0.0)
21
21
  Requires-Dist: defusedxml (>=0.7.1,<0.8.0)
22
22
  Requires-Dist: folio-uuid (>=0.2.8,<0.3.0)
23
- Requires-Dist: folioclient (>=0.61.2,<0.62.0)
23
+ Requires-Dist: folioclient (==0.70.1)
24
24
  Requires-Dist: pyaml (>=21.10.1,<22.0.0)
25
25
  Requires-Dist: pydantic (>=1.10.2,<2.0.0)
26
26
  Requires-Dist: pyhumps (>=3.7.3,<4.0.0)
@@ -1,6 +1,6 @@
1
1
  folio_migration_tools/__init__.py,sha256=DXvzUKFSpSZjflFWaNm0L8yhFk0u7RVIvQMskwMmKFc,238
2
- folio_migration_tools/__main__.py,sha256=_0el5EyJhG8lPj--gM5zMfVJgTt9RhrJo7rmuOY20sM,7883
3
- folio_migration_tools/circulation_helper.py,sha256=2kAkLM6caPiep0ZtBkMICbRDh53KdfdH21oEX1eMRDI,14193
2
+ folio_migration_tools/__main__.py,sha256=f2xy05yq5tT1WMesXmQM0GqvPAXXXnO9C0kwacasnZU,8458
3
+ folio_migration_tools/circulation_helper.py,sha256=V2VM30i2OigOKb64B4FFKTeHu9NTkhptalaOfziPhTo,14199
4
4
  folio_migration_tools/colors.py,sha256=GP0wdI_GZ2WD5SjrbPN-S3u8vvN_u6rGQIBBcWv_0ZM,227
5
5
  folio_migration_tools/config_file_load.py,sha256=zHHa6NDkN6EJiQE4DgjrFQPVKsd70POsfbGkB8308jg,2822
6
6
  folio_migration_tools/custom_dict.py,sha256=-FUnhKp90Dg8EHlY6twx-PYQxBUWEO7FgxL2b7pf-xk,678
@@ -10,8 +10,8 @@ folio_migration_tools/folder_structure.py,sha256=bZlmKGtxdytWcqjnM2lE4Vpx4nHyYRk
10
10
  folio_migration_tools/helper.py,sha256=KkOkNAGO_fuYqxdLrsbLzCJLQHUrFZG1NzD4RmpQ-KM,2804
11
11
  folio_migration_tools/holdings_helper.py,sha256=yJpz6aJrKRBiJ1MtT5bs2vXAc88uJuGh2_KDuCySOKc,7559
12
12
  folio_migration_tools/i18n_config.py,sha256=3AH_2b9zTsxE4XTe4isM_zYtPJSlK0ix6eBmV7kAYUM,228
13
- folio_migration_tools/library_configuration.py,sha256=UhHNiz9SI2nEnm6XME2ESD33LNwqdRzIgCU9kjYPHQQ,4863
14
- folio_migration_tools/mapper_base.py,sha256=WnUA2KBJrvAWRuq7KsTPi9YXD76pXfX7lyI5pExEwLI,20139
13
+ folio_migration_tools/library_configuration.py,sha256=I2Pj2hrjbhbc3HNwzQ-LTPM4IyJyeqAXsb2aA9TvX3s,6469
14
+ folio_migration_tools/mapper_base.py,sha256=H2QiNZZzDKxuCxSdXaa-1BRatAUArpr3Te1QsAscMog,20122
15
15
  folio_migration_tools/mapping_file_transformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  folio_migration_tools/mapping_file_transformation/courses_mapper.py,sha256=RuNkdG9XumpgPO3Zvcx_JYzZ598Xle_AMNf18zLR2UM,8095
17
17
  folio_migration_tools/mapping_file_transformation/holdings_mapper.py,sha256=nJS-xx1LszvbYfw0qdTUHX9xXHlxS7wP5mYmixFMh8A,7221
@@ -26,42 +26,42 @@ folio_migration_tools/mapping_file_transformation/user_mapper.py,sha256=Q8418BdX
26
26
  folio_migration_tools/marc_rules_transformation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  folio_migration_tools/marc_rules_transformation/conditions.py,sha256=ttTZISieqveu3YpvpnawHh3In1_DNQMTziI5yasfmWU,39142
28
28
  folio_migration_tools/marc_rules_transformation/holdings_statementsparser.py,sha256=lTb5QWEAgwyFHy5vdSK6oDl1Q5v2GnzuV04xWV3p4rc,12401
29
- folio_migration_tools/marc_rules_transformation/hrid_handler.py,sha256=Ihdv0_1q7gL_pZ3HWU3GcfV_jjpIfOLithWk9z_uH3Y,9997
29
+ folio_migration_tools/marc_rules_transformation/hrid_handler.py,sha256=SgnSYeNR0z_qarkizBMWZZWr8tOPZJ4fvlZjlM3nJOU,9999
30
30
  folio_migration_tools/marc_rules_transformation/loc_language_codes.xml,sha256=ztn2_yKws6qySL4oSsZh7sOjxq5bCC1PhAnXJdtgmJ0,382912
31
- folio_migration_tools/marc_rules_transformation/marc_file_processor.py,sha256=WkOQRDi7f4PZ5qmVH3Q-1_zdGEKYSvOGC6jixDwDp98,12349
31
+ folio_migration_tools/marc_rules_transformation/marc_file_processor.py,sha256=M-PHduzMYmZnrMwOSlwnWQ5bT-566gVRFSMo-JgS2d4,12346
32
32
  folio_migration_tools/marc_rules_transformation/marc_reader_wrapper.py,sha256=9ATjYMRAjy0QcXtmNZaHVhHLJ5hE1WUgOcF6KMJjbgo,5309
33
33
  folio_migration_tools/marc_rules_transformation/rules_mapper_authorities.py,sha256=e-wwJs8s8qEgIp8NvQgjx9lEyv7uvt08Fp6fPsy1GK8,9603
34
- folio_migration_tools/marc_rules_transformation/rules_mapper_base.py,sha256=C2jTzdXGkGjE3EWHxUh8jJeqE9tVk0qwRWVxFPZUj-Y,41223
35
- folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py,sha256=ZZHsuxlrHRcxkWPeiTjze0SahkNW_rhY3vkOQKnm1cU,28923
36
- folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py,sha256=wTZ2x8VIvCuLuNJLsbUAMCVjbMN7SS1teq0G6LAcOhU,21240
34
+ folio_migration_tools/marc_rules_transformation/rules_mapper_base.py,sha256=6EcOQSDG3wgW7S7re2uWiLkbup9Flg4ZqhtX6cCLnbk,41402
35
+ folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py,sha256=aypqjownO5jipFslRLeDR-gvqxxPlZeYB58GfoR8EQA,29996
36
+ folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py,sha256=Qw8E5793IfvwLFwCbDMJuqZjnKVLIK3twrOR4twFv_E,26410
37
37
  folio_migration_tools/migration_report.py,sha256=BkRspM1hwTBnWeqsHamf7yVEofzLj560Q-9G--O00hw,4258
38
38
  folio_migration_tools/migration_tasks/__init__.py,sha256=ZkbY_yGyB84Ke8OMlYUzyyBj4cxxNrhMTwQlu_GbdDs,211
39
39
  folio_migration_tools/migration_tasks/authority_transformer.py,sha256=AoXg9s-GLO3yEEDCrQV7hc4YVXxwxsdxDdpj1zhHydE,4251
40
- folio_migration_tools/migration_tasks/batch_poster.py,sha256=wI4lCXU5BQDbKErF6pQxT6srq_Wf_nfFAJc4f1sRCoo,36388
41
- folio_migration_tools/migration_tasks/bibs_transformer.py,sha256=XzlPo-0uuugJA4SM80xOlOj5nDK6OMDXFnAYg80hOBc,7791
40
+ folio_migration_tools/migration_tasks/batch_poster.py,sha256=BcbNz2z5bGcbXmNvjnLd3IVHb0RSuagiVPvm77GUzwU,36402
41
+ folio_migration_tools/migration_tasks/bibs_transformer.py,sha256=uOIfKVfkUdSr0RMbLpC4KbwbU16VKkXRJY8ULbdKzQk,5831
42
42
  folio_migration_tools/migration_tasks/courses_migrator.py,sha256=CzXnsu-KGP7B4zcINJzLYUqz47D16NuFfzu_DPqRlTQ,7061
43
43
  folio_migration_tools/migration_tasks/holdings_csv_transformer.py,sha256=NtysoayEIqQ8c_GNcRi6LXDYR-7OLmqFCfciMwzsyT4,21668
44
- folio_migration_tools/migration_tasks/holdings_marc_transformer.py,sha256=gL2LoXgavVQDpIH-t2vF2za04W8IjBul7MiVifuzvD8,11637
44
+ folio_migration_tools/migration_tasks/holdings_marc_transformer.py,sha256=GWBf-njOgDNAGONcr1CtgcPk7ATqo0r6zeyXuHjE47Y,13305
45
45
  folio_migration_tools/migration_tasks/items_transformer.py,sha256=qk0sLPBxE5MtPnpLzO_gEhVVe1BqHHnpn2Zaz_vo1RY,19083
46
- folio_migration_tools/migration_tasks/loans_migrator.py,sha256=JE1e0i2HFzhYl05SqEkg79p9KzwSq_hPboVT9mJhgmk,34510
46
+ folio_migration_tools/migration_tasks/loans_migrator.py,sha256=CPsin9XLzHwNrpKHPMHAvgRvpoH8QvAfYZYr1FSxAN4,34520
47
47
  folio_migration_tools/migration_tasks/manual_fee_fines_transformer.py,sha256=CnmlTge7nChUJ10EiUkriQtJlVxWqglgfhjgneh2_yM,7247
48
- folio_migration_tools/migration_tasks/migration_task_base.py,sha256=8U3g4PMexjqaAZ8K70Akylf5ayzMTMMKPze5IlibQ04,19177
48
+ folio_migration_tools/migration_tasks/migration_task_base.py,sha256=cZVPqWMuaNJYsnqiiFlyjiRSQ4trQyaSDwykDHfbkyg,21640
49
49
  folio_migration_tools/migration_tasks/orders_transformer.py,sha256=ry3oUUVQTFKCDUbGF5Zjo5ppa6AseKQwpF-wb1sb5UY,14214
50
50
  folio_migration_tools/migration_tasks/organization_transformer.py,sha256=vcCjhN1sS55c_a0LXi1Yw1eq3zpDn5E4BGbm2zDQ_Z4,16885
51
51
  folio_migration_tools/migration_tasks/requests_migrator.py,sha256=QP9OBezC3FfcKpI78oMmydxcPaUIYAgHyKevyLwC-WQ,14841
52
- folio_migration_tools/migration_tasks/reserves_migrator.py,sha256=SA3b7FQWHMHb7bEO8ZqOlblQ9m65zWUMH71uRk-zOKw,9950
52
+ folio_migration_tools/migration_tasks/reserves_migrator.py,sha256=4sSPer6_6yMwiiY1VYJmYZske_Ah1XG4KAM3NDadPhg,9952
53
53
  folio_migration_tools/migration_tasks/user_transformer.py,sha256=cNBT-wn_xx1OQXiB-vMLZmvyzkg1X562AJXUcYfThaE,12279
54
- folio_migration_tools/task_configuration.py,sha256=C5-OQtZLH7b4lVeyj5v8OXsqKNN4tzfp9F3b4vhthN4,632
54
+ folio_migration_tools/task_configuration.py,sha256=2GXVog0-_cFybqsU2WFcxnTNGDhvDzqb7gYyIimdPAk,1131
55
55
  folio_migration_tools/test_infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- folio_migration_tools/test_infrastructure/mocked_classes.py,sha256=trK1ZvxTdebc8qHtFtLtc-6SLlNdGDtX2z4zhP8GMcI,11278
56
+ folio_migration_tools/test_infrastructure/mocked_classes.py,sha256=lpohRMqKnGmsoyspUQFXuyrGXRoIQZu2Dq7Q5WLQJw8,14877
57
57
  folio_migration_tools/transaction_migration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- folio_migration_tools/transaction_migration/legacy_loan.py,sha256=3PDyC1wbJzF0CcNWelvZ0tC8hjl3p5hbLVJHrz78ORM,6006
58
+ folio_migration_tools/transaction_migration/legacy_loan.py,sha256=iPHdFTXk0E_pumyPESxd5pnNG1_ux0pf3ALQU-0-05w,6209
59
59
  folio_migration_tools/transaction_migration/legacy_request.py,sha256=1ulyFzPQw_InOjyPzkWpGnNptgXdQ18nmri0J8Nlpkc,6124
60
- folio_migration_tools/transaction_migration/legacy_reserve.py,sha256=d0qbh2fWpwlVSYRL6wZyZG20__NAYNxh7sPSsB-LAes,1804
60
+ folio_migration_tools/transaction_migration/legacy_reserve.py,sha256=qzw0okg4axAE_ezXopP9gFsQ_e60o0zh7zqRzFBSWHY,1806
61
61
  folio_migration_tools/transaction_migration/transaction_result.py,sha256=cTdCN0BnlI9_ZJB2Z3Fdkl9gpymIi-9mGZsRFlQcmDk,656
62
62
  folio_migration_tools/translations/en.json,sha256=HOVpkb_T-SN_x0NpDp8gyvV1hMLCui3SsG7ByyIv0OU,38669
63
- folio_migration_tools-1.9.0rc9.dist-info/LICENSE,sha256=PhIEkitVi3ejgq56tt6sWoJIG_zmv82cjjd_aYPPGdI,1072
64
- folio_migration_tools-1.9.0rc9.dist-info/METADATA,sha256=mmS_JIsaYjr9Ep6MpDnNN-9gRPT89JgqohMuvj5LgEk,7447
65
- folio_migration_tools-1.9.0rc9.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
66
- folio_migration_tools-1.9.0rc9.dist-info/entry_points.txt,sha256=Hbe-HjqMcU8FwVshVIkeWyZd9XwgT1CCMNf06EpHQu8,77
67
- folio_migration_tools-1.9.0rc9.dist-info/RECORD,,
63
+ folio_migration_tools-1.9.0rc11.dist-info/LICENSE,sha256=PhIEkitVi3ejgq56tt6sWoJIG_zmv82cjjd_aYPPGdI,1072
64
+ folio_migration_tools-1.9.0rc11.dist-info/METADATA,sha256=_BE6KK753NHtTZqoPKw8clfifWCX4OxNQ8uMOpMjwms,7440
65
+ folio_migration_tools-1.9.0rc11.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
66
+ folio_migration_tools-1.9.0rc11.dist-info/entry_points.txt,sha256=Hbe-HjqMcU8FwVshVIkeWyZd9XwgT1CCMNf06EpHQu8,77
67
+ folio_migration_tools-1.9.0rc11.dist-info/RECORD,,