folio-migration-tools 1.10.0b7__tar.gz → 1.10.2__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.
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/PKG-INFO +2 -1
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/pyproject.toml +2 -1
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_report.py +1 -1
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/batch_poster.py +9 -1
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/bibs_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/courses_migrator.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/holdings_csv_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/holdings_marc_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/items_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/loans_migrator.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/manual_fee_fines_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/orders_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/organization_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/requests_migrator.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/reserves_migrator.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/user_transformer.py +2 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/README.md +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/__init__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/__main__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/circulation_helper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/colors.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/config_file_load.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/custom_dict.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/custom_exceptions.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/extradata_writer.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/folder_structure.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/helper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/holdings_helper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/i18n_cache.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/i18n_config.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/library_configuration.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapper_base.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/__init__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/courses_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/holdings_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/item_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/manual_fee_fines_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/mapping_file_mapper_base.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/notes_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/order_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/organization_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/ref_data_mapping.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/mapping_file_transformation/user_mapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/__init__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/conditions.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/holdings_statementsparser.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/hrid_handler.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/loc_language_codes.xml +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/marc_file_processor.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/marc_reader_wrapper.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_base.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_bibs.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/marc_rules_transformation/rules_mapper_holdings.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/__init__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/migration_tasks/migration_task_base.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/task_configuration.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/transaction_migration/__init__.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/transaction_migration/legacy_loan.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/transaction_migration/legacy_request.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/transaction_migration/legacy_reserve.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/transaction_migration/transaction_result.py +0 -0
- {folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/translations/en.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: folio-migration-tools
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.2
|
|
4
4
|
Summary: A tool allowing you to migrate data from legacy ILS:s (Library systems) into FOLIO LSP
|
|
5
5
|
Keywords: FOLIO,ILS,LSP,Library Systems,MARC21,Library data
|
|
6
6
|
Author: Theodor Tolstoy, Lisa Sjögren, Brooks Travis, Jeremy Nelson, Clinton Bradford
|
|
@@ -18,6 +18,7 @@ Requires-Dist: deepdiff>=6.2.3,<7.0.0
|
|
|
18
18
|
Requires-Dist: pyaml>=21.10.1,<22.0.0
|
|
19
19
|
Requires-Dist: python-i18n>=0.3.9,<1.0.0
|
|
20
20
|
Requires-Dist: art>=6.5,<7.0
|
|
21
|
+
Requires-Dist: folio-data-import>=0.5.0,<0.6.0
|
|
21
22
|
Requires-Python: >=3.10, <4.0
|
|
22
23
|
Project-URL: Documentation, https://folio-migration-tools.readthedocs.io/en/latest/
|
|
23
24
|
Project-URL: Homepage, https://github.com/folio-fse/folio_migration_tools
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "folio_migration_tools"
|
|
3
|
-
version = "1.10.
|
|
3
|
+
version = "1.10.2"
|
|
4
4
|
description = "A tool allowing you to migrate data from legacy ILS:s (Library systems) into FOLIO LSP"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Theodor Tolstoy", email = "github.teddes@tolstoy.se"},
|
|
@@ -26,6 +26,7 @@ dependencies = [
|
|
|
26
26
|
"pyaml>=21.10.1,<22.0.0",
|
|
27
27
|
"python-i18n>=0.3.9,<1.0.0",
|
|
28
28
|
"art>=6.5,<7.0",
|
|
29
|
+
"folio-data-import>=0.5.0,<0.6.0",
|
|
29
30
|
]
|
|
30
31
|
|
|
31
32
|
[dependency-groups]
|
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import copy
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
+
import os
|
|
5
6
|
import re
|
|
6
7
|
import sys
|
|
7
8
|
import traceback
|
|
@@ -249,6 +250,10 @@ class BatchPoster(MigrationTaskBase):
|
|
|
249
250
|
self.num_posted = 0
|
|
250
251
|
self.starting_record_count_in_folio: Optional[int] = None
|
|
251
252
|
self.finished_record_count_in_folio: Optional[int] = None
|
|
253
|
+
# Create a semaphore to limit concurrent async requests
|
|
254
|
+
self.semaphore = asyncio.Semaphore(
|
|
255
|
+
int(os.environ.get("FOLIO_MAX_CONCURRENT_REQUESTS", 10))
|
|
256
|
+
)
|
|
252
257
|
|
|
253
258
|
def do_work(self): # noqa: C901
|
|
254
259
|
with open(
|
|
@@ -520,7 +525,8 @@ class BatchPoster(MigrationTaskBase):
|
|
|
520
525
|
|
|
521
526
|
for attempt in range(retries):
|
|
522
527
|
try:
|
|
523
|
-
|
|
528
|
+
async with self.semaphore:
|
|
529
|
+
return await self.folio_client.folio_get_async(url, query_params=params)
|
|
524
530
|
|
|
525
531
|
except folioclient.FolioConnectionError as e:
|
|
526
532
|
# Network/connection errors - always retry
|
|
@@ -901,6 +907,8 @@ class BatchPoster(MigrationTaskBase):
|
|
|
901
907
|
report_file,
|
|
902
908
|
self.start_datetime,
|
|
903
909
|
)
|
|
910
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
911
|
+
self.migration_report.write_json_report(raw_report_file)
|
|
904
912
|
self.clean_out_empty_logs()
|
|
905
913
|
|
|
906
914
|
def rerun_run(self):
|
|
@@ -163,6 +163,8 @@ class BibsTransformer(MigrationTaskBase):
|
|
|
163
163
|
self.mapper.mapped_folio_fields,
|
|
164
164
|
self.mapper.mapped_legacy_fields,
|
|
165
165
|
)
|
|
166
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
167
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
166
168
|
|
|
167
169
|
logging.info(
|
|
168
170
|
"Done. Transformation report written to %s",
|
|
@@ -178,6 +178,8 @@ class CoursesMigrator(MigrationTaskBase):
|
|
|
178
178
|
self.mapper.migration_report.write_migration_report(
|
|
179
179
|
i18n.t("Courses migration report"), report_file, self.mapper.start_datetime
|
|
180
180
|
)
|
|
181
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
182
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
181
183
|
self.clean_out_empty_logs()
|
|
182
184
|
|
|
183
185
|
|
|
@@ -368,6 +368,8 @@ class HoldingsCsvTransformer(MigrationTaskBase):
|
|
|
368
368
|
self.mapper.mapped_folio_fields,
|
|
369
369
|
self.mapper.mapped_legacy_fields,
|
|
370
370
|
)
|
|
371
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
372
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
371
373
|
logging.info("All done!")
|
|
372
374
|
self.clean_out_empty_logs()
|
|
373
375
|
|
|
@@ -360,6 +360,8 @@ class HoldingsMarcTransformer(MigrationTaskBase):
|
|
|
360
360
|
self.mapper.mapped_folio_fields,
|
|
361
361
|
self.mapper.mapped_legacy_fields,
|
|
362
362
|
)
|
|
363
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
364
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
363
365
|
|
|
364
366
|
logging.info(
|
|
365
367
|
"Done. Transformation report written to %s",
|
|
@@ -481,5 +481,7 @@ class ItemsTransformer(MigrationTaskBase):
|
|
|
481
481
|
self.mapper.mapped_folio_fields,
|
|
482
482
|
self.mapper.mapped_legacy_fields,
|
|
483
483
|
)
|
|
484
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
485
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
484
486
|
self.clean_out_empty_logs()
|
|
485
487
|
logging.info("All done!")
|
|
@@ -314,6 +314,8 @@ class LoansMigrator(MigrationTaskBase):
|
|
|
314
314
|
self.migration_report.write_migration_report(
|
|
315
315
|
i18n_t("Loans migration report"), report_file, self.start_datetime
|
|
316
316
|
)
|
|
317
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
318
|
+
self.migration_report.write_json_report(raw_report_file)
|
|
317
319
|
self.clean_out_empty_logs()
|
|
318
320
|
|
|
319
321
|
def write_failed_loans_to_file(self):
|
|
@@ -183,5 +183,7 @@ class ManualFeeFinesTransformer(MigrationTaskBase):
|
|
|
183
183
|
self.mapper.mapped_folio_fields,
|
|
184
184
|
self.mapper.mapped_legacy_fields,
|
|
185
185
|
)
|
|
186
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
187
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
186
188
|
|
|
187
189
|
self.clean_out_empty_logs()
|
|
@@ -328,6 +328,8 @@ class OrdersTransformer(MigrationTaskBase):
|
|
|
328
328
|
self.mapper.mapped_folio_fields,
|
|
329
329
|
self.mapper.mapped_legacy_fields,
|
|
330
330
|
)
|
|
331
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
332
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
331
333
|
logging.info("All done!")
|
|
332
334
|
|
|
333
335
|
def merge_into_orders_with_embedded_pols(self, folio_rec, results_file):
|
|
@@ -299,6 +299,8 @@ class OrganizationTransformer(MigrationTaskBase):
|
|
|
299
299
|
self.mapper.save_id_map_file(
|
|
300
300
|
self.folder_structure.organizations_id_map_path, self.organizations_id_map
|
|
301
301
|
)
|
|
302
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
303
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
302
304
|
self.clean_out_empty_logs()
|
|
303
305
|
|
|
304
306
|
logging.info("All done!")
|
|
@@ -236,6 +236,8 @@ class RequestsMigrator(MigrationTaskBase):
|
|
|
236
236
|
self.migration_report.write_migration_report(
|
|
237
237
|
i18n_t("Requests migration report"), report_file, self.start_datetime
|
|
238
238
|
)
|
|
239
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
240
|
+
self.migration_report.write_json_report(raw_report_file)
|
|
239
241
|
self.clean_out_empty_logs()
|
|
240
242
|
|
|
241
243
|
def write_failed_request_to_file(self):
|
|
@@ -126,6 +126,8 @@ class ReservesMigrator(MigrationTaskBase):
|
|
|
126
126
|
self.migration_report.write_migration_report(
|
|
127
127
|
i18n_t("Reserves migration report"), report_file, self.start_datetime
|
|
128
128
|
)
|
|
129
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
130
|
+
self.migration_report.write_json_report(raw_report_file)
|
|
129
131
|
self.clean_out_empty_logs()
|
|
130
132
|
|
|
131
133
|
def write_failed_reserves_to_file(self):
|
|
@@ -265,6 +265,8 @@ class UserTransformer(MigrationTaskBase):
|
|
|
265
265
|
self.mapper.mapped_folio_fields,
|
|
266
266
|
self.mapper.mapped_legacy_fields,
|
|
267
267
|
)
|
|
268
|
+
with open(self.folder_structure.migration_reports_raw_file, "w") as raw_report_file:
|
|
269
|
+
self.mapper.migration_report.write_json_report(raw_report_file)
|
|
268
270
|
logging.info("All done!")
|
|
269
271
|
self.clean_out_empty_logs()
|
|
270
272
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/colors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{folio_migration_tools-1.10.0b7 → folio_migration_tools-1.10.2}/src/folio_migration_tools/helper.py
RENAMED
|
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
|
|
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
|