refactor(treewide): formatting and ruff fixes, + manually enabled F401

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index bd16d69..7b58cbb 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -17,9 +17,9 @@
 
 
 def get_warehouse_account_map(company=None):
-	company_warehouse_account_map = company and frappe.flags.setdefault(
-		"warehouse_account_map", {}
-	).get(company)
+	company_warehouse_account_map = company and frappe.flags.setdefault("warehouse_account_map", {}).get(
+		company
+	)
 	warehouse_account_map = frappe.flags.warehouse_account_map
 
 	if not warehouse_account_map or not company_warehouse_account_map or frappe.flags.in_test:
diff --git a/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py b/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
index d488150..cbc4fc7 100644
--- a/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
+++ b/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
@@ -27,9 +27,7 @@
 	if filters and filters.get("company"):
 		warehouse_filters.append(["company", "=", filters.get("company")])
 
-	warehouses = frappe.get_list(
-		"Warehouse", pluck="name", filters=warehouse_filters, order_by="name"
-	)
+	warehouses = frappe.get_list("Warehouse", pluck="name", filters=warehouse_filters, order_by="name")
 
 	warehouses = frappe.get_list(
 		"Bin",
diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py
index 6e32cc2..bc53878 100644
--- a/erpnext/stock/deprecated_serial_batch.py
+++ b/erpnext/stock/deprecated_serial_batch.py
@@ -139,9 +139,7 @@
 			if not self.non_batchwise_balance_qty:
 				continue
 
-			self.batch_avg_rate[batch_no] = (
-				self.non_batchwise_balance_value / self.non_batchwise_balance_qty
-			)
+			self.batch_avg_rate[batch_no] = self.non_batchwise_balance_value / self.non_batchwise_balance_qty
 
 			stock_value_change = self.batch_avg_rate[batch_no] * ledger.qty
 			self.stock_value_change += stock_value_change
@@ -208,9 +206,9 @@
 		bundle_child = frappe.qb.DocType("Serial and Batch Entry")
 		batch = frappe.qb.DocType("Batch")
 
-		timestamp_condition = CombineDatetime(
-			bundle.posting_date, bundle.posting_time
-		) < CombineDatetime(self.sle.posting_date, self.sle.posting_time)
+		timestamp_condition = CombineDatetime(bundle.posting_date, bundle.posting_time) < CombineDatetime(
+			self.sle.posting_date, self.sle.posting_time
+		)
 
 		if self.sle.creation:
 			timestamp_condition |= (
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py
index e8e94fd..8726642 100644
--- a/erpnext/stock/doctype/batch/batch.py
+++ b/erpnext/stock/doctype/batch/batch.py
@@ -240,17 +240,13 @@
 def get_batches_by_oldest(item_code, warehouse):
 	"""Returns the oldest batch and qty for the given item_code and warehouse"""
 	batches = get_batch_qty(item_code=item_code, warehouse=warehouse)
-	batches_dates = [
-		[batch, frappe.get_value("Batch", batch.batch_no, "expiry_date")] for batch in batches
-	]
+	batches_dates = [[batch, frappe.get_value("Batch", batch.batch_no, "expiry_date")] for batch in batches]
 	batches_dates.sort(key=lambda tup: tup[1])
 	return batches_dates
 
 
 @frappe.whitelist()
-def split_batch(
-	batch_no: str, item_code: str, warehouse: str, qty: float, new_batch_id: str | None = None
-):
+def split_batch(batch_no: str, item_code: str, warehouse: str, qty: float, new_batch_id: str | None = None):
 	"""Split the batch into a new batch"""
 	batch = frappe.get_doc(dict(doctype="Batch", item=item_code, batch_id=new_batch_id)).insert()
 	qty = flt(qty)
@@ -282,7 +278,10 @@
 			company=company,
 			items=[
 				dict(
-					item_code=item_code, qty=qty, s_warehouse=warehouse, serial_and_batch_bundle=from_bundle_id
+					item_code=item_code,
+					qty=qty,
+					s_warehouse=warehouse,
+					serial_and_batch_bundle=from_bundle_id,
 				),
 				dict(
 					item_code=item_code, qty=qty, t_warehouse=warehouse, serial_and_batch_bundle=to_bundle_id
diff --git a/erpnext/stock/doctype/batch/test_batch.py b/erpnext/stock/doctype/batch/test_batch.py
index 7fb672c..1adffae 100644
--- a/erpnext/stock/doctype/batch/test_batch.py
+++ b/erpnext/stock/doctype/batch/test_batch.py
@@ -156,9 +156,7 @@
 
 		bundle = stock_entry.items[0].serial_and_batch_bundle
 		self.assertTrue(bundle)
-		self.assertEqual(
-			get_batch_qty(get_batch_from_bundle(bundle), stock_entry.items[0].t_warehouse), 90
-		)
+		self.assertEqual(get_batch_qty(get_batch_from_bundle(bundle), stock_entry.items[0].t_warehouse), 90)
 
 	def test_delivery_note(self):
 		"""Test automatic batch selection for outgoing items"""
@@ -543,9 +541,7 @@
 			get_batch_from_bundle(pr_2.items[0].serial_and_batch_bundle),
 		)
 
-		self.assertEqual(
-			"BATCHEXISTING002", get_batch_from_bundle(pr_2.items[0].serial_and_batch_bundle)
-		)
+		self.assertEqual("BATCHEXISTING002", get_batch_from_bundle(pr_2.items[0].serial_and_batch_bundle))
 
 
 def create_batch(item_code, rate, create_item_price_for_batch):
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 9310985..e3a155b 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -83,9 +83,7 @@
 			get_reserved_qty_for_sub_assembly,
 		)
 
-		reserved_qty_for_production_plan = get_reserved_qty_for_sub_assembly(
-			self.item_code, self.warehouse
-		)
+		reserved_qty_for_production_plan = get_reserved_qty_for_sub_assembly(self.item_code, self.warehouse)
 
 		if reserved_qty_for_production_plan is None and not self.reserved_qty_for_production_plan:
 			return
@@ -106,9 +104,7 @@
 		in open work orders"""
 		from erpnext.manufacturing.doctype.work_order.work_order import get_reserved_qty_for_production
 
-		self.reserved_qty_for_production = get_reserved_qty_for_production(
-			self.item_code, self.warehouse
-		)
+		self.reserved_qty_for_production = get_reserved_qty_for_production(self.item_code, self.warehouse)
 
 		self.db_set(
 			"reserved_qty_for_production", flt(self.reserved_qty_for_production), update_modified=True
@@ -156,9 +152,7 @@
 		se_item = frappe.qb.DocType("Stock Entry Detail")
 
 		if frappe.db.field_exists("Stock Entry", "is_return"):
-			qty_field = (
-				Case().when(se.is_return == 1, se_item.transfer_qty * -1).else_(se_item.transfer_qty)
-			)
+			qty_field = Case().when(se.is_return == 1, se_item.transfer_qty * -1).else_(se_item.transfer_qty)
 		else:
 			qty_field = se_item.transfer_qty
 
diff --git a/erpnext/stock/doctype/bin/test_bin.py b/erpnext/stock/doctype/bin/test_bin.py
index b79dee8..e4f5565 100644
--- a/erpnext/stock/doctype/bin/test_bin.py
+++ b/erpnext/stock/doctype/bin/test_bin.py
@@ -31,4 +31,4 @@
 	def test_index_exists(self):
 		indexes = frappe.db.sql("show index from tabBin where Non_unique = 0", as_dict=1)
 		if not any(index.get("Key_name") == "unique_item_warehouse" for index in indexes):
-			self.fail(f"Expected unique index on item-warehouse")
+			self.fail("Expected unique index on item-warehouse")
diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
index e99a0b1..1cb6305 100644
--- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
+++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py
@@ -149,6 +149,6 @@
 	try:
 		doc.create_closing_stock_balance_entries()
 		doc.db_set("status", "Completed")
-	except Exception as e:
+	except Exception:
 		doc.db_set("status", "Failed")
 		doc.log_error(title="Closing Stock Balance Failed")
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index f13353e..c3148d6 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -141,7 +141,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(DeliveryNote, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		self.status_updater = [
 			{
 				"source_dt": "Delivery Note Item",
@@ -229,7 +229,7 @@
 			for f in fieldname:
 				toggle_print_hide(self.meta if key == "parent" else item_meta, f)
 
-		super(DeliveryNote, self).before_print(settings)
+		super().before_print(settings)
 
 	def set_actual_qty(self):
 		for d in self.get("items"):
@@ -250,7 +250,7 @@
 
 	def validate(self):
 		self.validate_posting_time()
-		super(DeliveryNote, self).validate()
+		super().validate()
 		self.validate_references()
 		self.set_status()
 		self.so_required()
@@ -274,11 +274,16 @@
 		self.reset_default_field_value("set_warehouse", "items", "warehouse")
 
 	def validate_with_previous_doc(self):
-		super(DeliveryNote, self).validate_with_previous_doc(
+		super().validate_with_previous_doc(
 			{
 				"Sales Order": {
 					"ref_dn_field": "against_sales_order",
-					"compare_fields": [["customer", "="], ["company", "="], ["project", "="], ["currency", "="]],
+					"compare_fields": [
+						["customer", "="],
+						["company", "="],
+						["project", "="],
+						["currency", "="],
+					],
 				},
 				"Sales Order Item": {
 					"ref_dn_field": "so_detail",
@@ -288,7 +293,12 @@
 				},
 				"Sales Invoice": {
 					"ref_dn_field": "against_sales_invoice",
-					"compare_fields": [["customer", "="], ["company", "="], ["project", "="], ["currency", "="]],
+					"compare_fields": [
+						["customer", "="],
+						["company", "="],
+						["project", "="],
+						["currency", "="],
+					],
 				},
 				"Sales Invoice Item": {
 					"ref_dn_field": "si_detail",
@@ -409,7 +419,7 @@
 				)
 
 	def validate_warehouse(self):
-		super(DeliveryNote, self).validate_warehouse()
+		super().validate_warehouse()
 
 		for d in self.get_item_list():
 			if not d["warehouse"] and frappe.get_cached_value("Item", d["item_code"], "is_stock_item") == 1:
@@ -466,7 +476,7 @@
 		self.repost_future_sle_and_gle()
 
 	def on_cancel(self):
-		super(DeliveryNote, self).on_cancel()
+		super().on_cancel()
 
 		self.check_sales_order_on_hold_or_close("against_sales_order")
 		self.check_next_docstatus()
@@ -555,7 +565,9 @@
 									delivered_batch_qty[entry.batch_no] -= delivered_qty
 					else:
 						# `Delivered Qty` should be less than or equal to `Reserved Qty`.
-						qty_can_be_deliver = min((sre_doc.reserved_qty - sre_doc.delivered_qty), qty_to_deliver)
+						qty_can_be_deliver = min(
+							(sre_doc.reserved_qty - sre_doc.delivered_qty), qty_to_deliver
+						)
 
 					sre_doc.delivered_qty += qty_can_be_deliver
 					sre_doc.db_update()
@@ -613,7 +625,9 @@
 							batch_qty_to_undelivered = {d.batch_no: -1 * d.qty for d in sbb.entries}
 							for entry in sre_doc.sb_entries:
 								if entry.batch_no in batch_qty_to_undelivered:
-									undelivered_qty = min(entry.delivered_qty, batch_qty_to_undelivered[entry.batch_no])
+									undelivered_qty = min(
+										entry.delivered_qty, batch_qty_to_undelivered[entry.batch_no]
+									)
 									entry.delivered_qty -= undelivered_qty
 									entry.db_update()
 									qty_can_be_undelivered += undelivered_qty
@@ -669,7 +683,8 @@
 						frappe.bold(reserved_warehouses[0])
 						if len(reserved_warehouses) == 1
 						else _("{0} and {1}").format(
-							frappe.bold(", ".join(reserved_warehouses[:-1])), frappe.bold(reserved_warehouses[-1])
+							frappe.bold(", ".join(reserved_warehouses[:-1])),
+							frappe.bold(reserved_warehouses[-1]),
 						),
 					)
 					frappe.throw(msg, title=_("Stock Reservation Warehouse Mismatch"))
@@ -1166,7 +1181,7 @@
 			"User", frappe.session.user, ["email", "full_name", "phone", "mobile_no"], as_dict=1
 		)
 		target.pickup_contact_email = user.email
-		pickup_contact_display = "{}".format(user.full_name)
+		pickup_contact_display = f"{user.full_name}"
 		if user:
 			if user.email:
 				pickup_contact_display += "<br>" + user.email
@@ -1182,7 +1197,7 @@
 		contact = frappe.db.get_value(
 			"Contact", source.contact_person, ["email_id", "phone", "mobile_no"], as_dict=1
 		)
-		delivery_contact_display = "{}".format(source.contact_display)
+		delivery_contact_display = f"{source.contact_display}"
 		if contact:
 			if contact.email_id:
 				delivery_contact_display += "<br>" + contact.email_id
@@ -1351,8 +1366,7 @@
 				"postprocess": update_details,
 				"field_no_map": ["taxes_and_charges", "set_warehouse"],
 			},
-			doctype
-			+ " Item": {
+			doctype + " Item": {
 				"doctype": target_doctype + " Item",
 				"field_map": {
 					source_document_warehouse_field: target_document_warehouse_field,
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 905287d..6f47c26 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -68,7 +68,7 @@
 		self.assertRaises(frappe.ValidationError, frappe.get_doc(si).insert)
 
 	def test_delivery_note_no_gl_entry(self):
-		company = frappe.db.get_value("Warehouse", "_Test Warehouse - _TC", "company")
+		frappe.db.get_value("Warehouse", "_Test Warehouse - _TC", "company")
 		make_stock_entry(target="_Test Warehouse - _TC", qty=5, basic_rate=100)
 
 		stock_queue = json.loads(
@@ -85,16 +85,14 @@
 
 		dn = create_delivery_note()
 
-		sle = frappe.get_doc(
-			"Stock Ledger Entry", {"voucher_type": "Delivery Note", "voucher_no": dn.name}
-		)
+		sle = frappe.get_doc("Stock Ledger Entry", {"voucher_type": "Delivery Note", "voucher_no": dn.name})
 
 		self.assertEqual(sle.stock_value_difference, flt(-1 * stock_queue[0][1], 2))
 
 		self.assertFalse(get_gl_entries("Delivery Note", dn.name))
 
 	def test_delivery_note_gl_entry_packing_item(self):
-		company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company")
+		frappe.db.get_value("Warehouse", "Stores - TCP1", "company")
 
 		make_stock_entry(item_code="_Test Item", target="Stores - TCP1", qty=10, basic_rate=100)
 		make_stock_entry(
@@ -141,7 +139,7 @@
 			stock_in_hand_account: [0.0, stock_value_diff],
 			"Cost of Goods Sold - TCP1": [stock_value_diff, 0.0],
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual([gle.debit, gle.credit], expected_values.get(gle.account))
 
 		# check stock in hand balance
@@ -795,7 +793,7 @@
 			"Stock In Hand - TCP1": [0.0, stock_value_difference],
 			target_warehouse: [stock_value_difference, 0.0],
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual([gle.debit, gle.credit], expected_values.get(gle.account))
 
 		# tear down
@@ -1003,7 +1001,7 @@
 			"Cost of Goods Sold - TCP1": {"cost_center": cost_center},
 			stock_in_hand_account: {"cost_center": cost_center},
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual(expected_values[gle.account]["cost_center"], gle.cost_center)
 
 	def test_delivery_note_cost_center_with_balance_sheet_account(self):
@@ -1032,7 +1030,7 @@
 			"Cost of Goods Sold - TCP1": {"cost_center": cost_center},
 			stock_in_hand_account: {"cost_center": cost_center},
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual(expected_values[gle.account]["cost_center"], gle.cost_center)
 
 	def test_make_sales_invoice_from_dn_for_returned_qty(self):
@@ -1100,9 +1098,7 @@
 			},
 		)
 		make_product_bundle(parent=batched_bundle.name, items=[batched_item.name])
-		make_stock_entry(
-			item_code=batched_item.name, target="_Test Warehouse - _TC", qty=10, basic_rate=42
-		)
+		make_stock_entry(item_code=batched_item.name, target="_Test Warehouse - _TC", qty=10, basic_rate=42)
 
 		dn = create_delivery_note(item_code=batched_bundle.name, qty=1)
 		dn.load_from_db()
@@ -1125,9 +1121,7 @@
 		dn.reload()
 		dn.delete()
 
-		bundle = frappe.db.get_value(
-			"Serial and Batch Bundle", {"voucher_detail_no": packed_name}, "name"
-		)
+		bundle = frappe.db.get_value("Serial and Batch Bundle", {"voucher_detail_no": packed_name}, "name")
 		self.assertFalse(bundle)
 
 		frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1)
@@ -1306,9 +1300,7 @@
 			warehouse=warehouse,
 			target_warehouse=target,
 		)
-		self.assertFalse(
-			frappe.db.exists("GL Entry", {"voucher_no": dn.name, "voucher_type": dn.doctype})
-		)
+		self.assertFalse(frappe.db.exists("GL Entry", {"voucher_no": dn.name, "voucher_type": dn.doctype}))
 
 	def test_batch_expiry_for_delivery_note(self):
 		from erpnext.controllers.sales_and_purchase_return import make_return_doc
@@ -1435,9 +1427,7 @@
 			basic_rate=100.0,
 			posting_date=add_days(nowdate(), -5),
 		)
-		dn = create_delivery_note(
-			item_code=item_code, qty=5, rate=500, posting_date=add_days(nowdate(), -4)
-		)
+		dn = create_delivery_note(item_code=item_code, qty=5, rate=500, posting_date=add_days(nowdate(), -4))
 		self.assertEqual(dn.items[0].incoming_rate, 100.0)
 
 		make_stock_entry(
@@ -1527,9 +1517,7 @@
 		self.assertAlmostEqual(returned_dn.items[0].incoming_rate, 200.0)
 
 	def test_batch_with_non_stock_uom(self):
-		frappe.db.set_single_value(
-			"Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 1
-		)
+		frappe.db.set_single_value("Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 1)
 
 		item = make_item(
 			properties={
@@ -1562,9 +1550,7 @@
 		)
 		self.assertEqual(abs(delivered_batch_qty), 5.0)
 
-		frappe.db.set_single_value(
-			"Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 0
-		)
+		frappe.db.set_single_value("Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 0)
 
 	def test_internal_transfer_for_non_stock_item(self):
 		from erpnext.selling.doctype.customer.test_customer import create_internal_customer
@@ -1604,9 +1590,7 @@
 
 		item_details = {}
 		for item in [serial_item, batch_item]:
-			se = make_stock_entry(
-				item_code=item.name, target="_Test Warehouse - _TC", qty=5, basic_rate=100
-			)
+			se = make_stock_entry(item_code=item.name, target="_Test Warehouse - _TC", qty=5, basic_rate=100)
 			item_details[item.name] = se.items[0].serial_and_batch_bundle
 
 		dn = create_delivery_note(item_code=bundle_item.name, qty=1, do_not_submit=True)
diff --git a/erpnext/stock/doctype/delivery_trip/delivery_trip.py b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
index cb9fc5b..58f393d 100644
--- a/erpnext/stock/doctype/delivery_trip/delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/delivery_trip.py
@@ -40,7 +40,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(DeliveryTrip, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 
 		# Google Maps returns distances in meters by default
 		self.default_distance_uom = (
@@ -94,9 +94,7 @@
 		        delete (bool, optional): Defaults to `False`. `True` if driver details need to be emptied, else `False`.
 		"""
 
-		delivery_notes = list(
-			set(stop.delivery_note for stop in self.delivery_stops if stop.delivery_note)
-		)
+		delivery_notes = list(set(stop.delivery_note for stop in self.delivery_stops if stop.delivery_note))
 
 		update_fields = {
 			"driver": self.driver,
@@ -342,14 +340,11 @@
 		"Contact", contact, ["first_name", "last_name", "phone", "mobile_no"], as_dict=1
 	)
 
-	contact_info.html = (
-		""" <b>%(first_name)s %(last_name)s</b> <br> %(phone)s <br> %(mobile_no)s"""
-		% {
-			"first_name": contact_info.first_name,
-			"last_name": contact_info.last_name or "",
-			"phone": contact_info.phone or "",
-			"mobile_no": contact_info.mobile_no or "",
-		}
+	contact_info.html = """ <b>{first_name} {last_name}</b> <br> {phone} <br> {mobile_no}""".format(
+		first_name=contact_info.first_name,
+		last_name=contact_info.last_name or "",
+		phone=contact_info.phone or "",
+		mobile_no=contact_info.mobile_no or "",
 	)
 
 	return contact_info.html
diff --git a/erpnext/stock/doctype/delivery_trip/test_delivery_trip.py b/erpnext/stock/doctype/delivery_trip/test_delivery_trip.py
index 9b8b46e..09f5b2c 100644
--- a/erpnext/stock/doctype/delivery_trip/test_delivery_trip.py
+++ b/erpnext/stock/doctype/delivery_trip/test_delivery_trip.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
 # See license.txt
 
-import unittest
 
 import frappe
 from frappe.tests.utils import FrappeTestCase
diff --git a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py
index d5eef5a..103d8a1 100644
--- a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py
+++ b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py
@@ -384,9 +384,7 @@
 
 @frappe.whitelist()
 def get_parent_fields(child_doctype, dimension_name):
-	parent_doctypes = frappe.get_all(
-		"DocField", fields=["parent"], filters={"options": child_doctype}
-	)
+	parent_doctypes = frappe.get_all("DocField", fields=["parent"], filters={"options": child_doctype})
 
 	fields = []
 
diff --git a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py
index 361c2f8..8ce954d 100644
--- a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py
+++ b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py
@@ -210,9 +210,7 @@
 		)
 
 		self.assertFalse(
-			frappe.db.get_value(
-				"Custom Field", {"fieldname": "project", "dt": "Stock Ledger Entry"}, "name"
-			)
+			frappe.db.get_value("Custom Field", {"fieldname": "project", "dt": "Stock Ledger Entry"}, "name")
 		)
 
 	def test_check_mandatory_dimensions(self):
@@ -296,9 +294,7 @@
 		se_doc.save()
 		se_doc.submit()
 
-		entries = get_voucher_sl_entries(
-			se_doc.name, ["warehouse", "store", "incoming_rate", "actual_qty"]
-		)
+		entries = get_voucher_sl_entries(se_doc.name, ["warehouse", "store", "incoming_rate", "actual_qty"])
 
 		for entry in entries:
 			self.assertEqual(entry.warehouse, warehouse)
@@ -488,7 +484,14 @@
 				"autoname": "field:store_name",
 				"fields": [{"label": "Store Name", "fieldname": "store_name", "fieldtype": "Data"}],
 				"permissions": [
-					{"role": "System Manager", "permlevel": 0, "read": 1, "write": 1, "create": 1, "delete": 1}
+					{
+						"role": "System Manager",
+						"permlevel": 0,
+						"read": 1,
+						"write": 1,
+						"create": 1,
+						"delete": 1,
+					}
 				],
 			}
 		).insert(ignore_permissions=True)
@@ -510,7 +513,14 @@
 				"autoname": "field:shelf_name",
 				"fields": [{"label": "Shelf Name", "fieldname": "shelf_name", "fieldtype": "Data"}],
 				"permissions": [
-					{"role": "System Manager", "permlevel": 0, "read": 1, "write": 1, "create": 1, "delete": 1}
+					{
+						"role": "System Manager",
+						"permlevel": 0,
+						"read": 1,
+						"write": 1,
+						"create": 1,
+						"delete": 1,
+					}
 				],
 			}
 		).insert(ignore_permissions=True)
@@ -532,7 +542,14 @@
 				"autoname": "field:rack_name",
 				"fields": [{"label": "Rack Name", "fieldname": "rack_name", "fieldtype": "Data"}],
 				"permissions": [
-					{"role": "System Manager", "permlevel": 0, "read": 1, "write": 1, "create": 1, "delete": 1}
+					{
+						"role": "System Manager",
+						"permlevel": 0,
+						"read": 1,
+						"write": 1,
+						"create": 1,
+						"delete": 1,
+					}
 				],
 			}
 		).insert(ignore_permissions=True)
@@ -554,7 +571,14 @@
 				"autoname": "field:pallet_name",
 				"fields": [{"label": "Pallet Name", "fieldname": "pallet_name", "fieldtype": "Data"}],
 				"permissions": [
-					{"role": "System Manager", "permlevel": 0, "read": 1, "write": 1, "create": 1, "delete": 1}
+					{
+						"role": "System Manager",
+						"permlevel": 0,
+						"read": 1,
+						"write": 1,
+						"create": 1,
+						"delete": 1,
+					}
 				],
 			}
 		).insert(ignore_permissions=True)
@@ -570,7 +594,14 @@
 				"autoname": "field:site_name",
 				"fields": [{"label": "Site Name", "fieldname": "site_name", "fieldtype": "Data"}],
 				"permissions": [
-					{"role": "System Manager", "permlevel": 0, "read": 1, "write": 1, "create": 1, "delete": 1}
+					{
+						"role": "System Manager",
+						"permlevel": 0,
+						"read": 1,
+						"write": 1,
+						"create": 1,
+						"delete": 1,
+					}
 				],
 			}
 		).insert(ignore_permissions=True)
@@ -623,9 +654,7 @@
 
 	to_warehouse = create_warehouse("_Test Internal Warehouse GIT A", company=company)
 
-	pr_doc = make_purchase_receipt(
-		company=company, warehouse=warehouse, qty=10, rate=100, do_not_submit=True
-	)
+	pr_doc = make_purchase_receipt(company=company, warehouse=warehouse, qty=10, rate=100, do_not_submit=True)
 	pr_doc.items[0].store = "Inter Transfer Store 1"
 	pr_doc.submit()
 
@@ -651,9 +680,7 @@
 
 	expene_account = frappe.db.get_value(
 		"Company", company, "stock_adjustment_account"
-	) or frappe.db.get_value(
-		"Account", {"company": company, "account_type": "Expense Account"}, "name"
-	)
+	) or frappe.db.get_value("Account", {"company": company, "account_type": "Expense Account"}, "name")
 
 	return frappe._dict(
 		{
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 949c109..063b28d 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -3,7 +3,6 @@
 
 import copy
 import json
-from typing import Dict, List, Optional
 
 import frappe
 from frappe import _
@@ -375,9 +374,9 @@
 		for d in self.get("uoms"):
 			if cstr(d.uom) in check_list:
 				frappe.throw(
-					_("Unit of Measure {0} has been entered more than once in Conversion Factor Table").format(
-						d.uom
-					)
+					_(
+						"Unit of Measure {0} has been entered more than once in Conversion Factor Table"
+					).format(d.uom)
 				)
 			else:
 				check_list.append(cstr(d.uom))
@@ -429,7 +428,7 @@
 					frappe.throw(
 						_("{0} entered twice {1} in Item Taxes").format(
 							frappe.bold(d.item_tax_template),
-							"for tax category {0}".format(frappe.bold(d.tax_category)) if d.tax_category else "",
+							f"for tax category {frappe.bold(d.tax_category)}" if d.tax_category else "",
 						)
 					)
 				else:
@@ -448,7 +447,9 @@
 					)
 					if duplicate:
 						frappe.throw(
-							_("Barcode {0} already used in Item {1}").format(item_barcode.barcode, duplicate[0][0])
+							_("Barcode {0} already used in Item {1}").format(
+								item_barcode.barcode, duplicate[0][0]
+							)
 						)
 
 					item_barcode.barcode_type = (
@@ -477,9 +478,9 @@
 				warehouse_material_request_type += [(d.get("warehouse"), d.get("material_request_type"))]
 			else:
 				frappe.throw(
-					_("Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.").format(
-						d.idx, d.warehouse, d.material_request_type
-					),
+					_(
+						"Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}."
+					).format(d.idx, d.warehouse, d.material_request_type),
 					DuplicateReorderRows,
 				)
 
@@ -547,20 +548,21 @@
 
 		for dt in ("Sales Taxes and Charges", "Purchase Taxes and Charges"):
 			for d in frappe.db.sql(
-				"""select name, item_wise_tax_detail from `tab{0}`
-					where ifnull(item_wise_tax_detail, '') != ''""".format(
-					dt
-				),
+				f"""select name, item_wise_tax_detail from `tab{dt}`
+					where ifnull(item_wise_tax_detail, '') != ''""",
 				as_dict=1,
 			):
-
 				item_wise_tax_detail = json.loads(d.item_wise_tax_detail)
 				if isinstance(item_wise_tax_detail, dict) and old_name in item_wise_tax_detail:
 					item_wise_tax_detail[new_name] = item_wise_tax_detail[old_name]
 					item_wise_tax_detail.pop(old_name)
 
 					frappe.db.set_value(
-						dt, d.name, "item_wise_tax_detail", json.dumps(item_wise_tax_detail), update_modified=False
+						dt,
+						d.name,
+						"item_wise_tax_detail",
+						json.dumps(item_wise_tax_detail),
+						update_modified=False,
 					)
 
 	def delete_old_bins(self, old_name):
@@ -587,9 +589,7 @@
 		)
 
 		msg += " <br>"
-		msg += (
-			", ".join([get_link_to_form("Stock Reconciliation", d.parent) for d in records]) + "<br><br>"
-		)
+		msg += ", ".join([get_link_to_form("Stock Reconciliation", d.parent) for d in records]) + "<br><br>"
 
 		msg += _(
 			"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}"
@@ -612,12 +612,8 @@
 
 	def validate_duplicate_product_bundles_before_merge(self, old_name, new_name):
 		"Block merge if both old and new items have product bundles."
-		old_bundle = frappe.get_value(
-			"Product Bundle", filters={"new_item_code": old_name, "disabled": 0}
-		)
-		new_bundle = frappe.get_value(
-			"Product Bundle", filters={"new_item_code": new_name, "disabled": 0}
-		)
+		old_bundle = frappe.get_value("Product Bundle", filters={"new_item_code": old_name, "disabled": 0})
+		new_bundle = frappe.get_value("Product Bundle", filters={"new_item_code": new_name, "disabled": 0})
 
 		if old_bundle and new_bundle:
 			bundle_link = get_link_to_form("Product Bundle", old_bundle)
@@ -635,9 +631,7 @@
 	def recalculate_bin_qty(self, new_name):
 		from erpnext.stock.stock_balance import repost_stock
 
-		existing_allow_negative_stock = frappe.db.get_single_value(
-			"Stock Settings", "allow_negative_stock"
-		)
+		existing_allow_negative_stock = frappe.db.get_single_value("Stock Settings", "allow_negative_stock")
 		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 		repost_stock_for_warehouses = frappe.get_all(
@@ -654,9 +648,7 @@
 		for warehouse in repost_stock_for_warehouses:
 			repost_stock(new_name, warehouse)
 
-		frappe.db.set_single_value(
-			"Stock Settings", "allow_negative_stock", existing_allow_negative_stock
-		)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", existing_allow_negative_stock)
 
 	def update_bom_item_desc(self):
 		if self.is_new():
@@ -817,12 +809,10 @@
 			return "<br>".join(docnames)
 
 		def table_row(title, body):
-			return """<tr>
-				<td>{0}</td>
-				<td>{1}</td>
-			</tr>""".format(
-				title, body
-			)
+			return f"""<tr>
+				<td>{title}</td>
+				<td>{body}</td>
+			</tr>"""
 
 		rows = ""
 		for docname, attr_list in not_included.items():
@@ -834,17 +824,15 @@
 		)
 
 		message = """
-			<div>{0}</div><br>
+			<div>{}</div><br>
 			<table class="table">
 				<thead>
-					<td>{1}</td>
-					<td>{2}</td>
+					<td>{}</td>
+					<td>{}</td>
 				</thead>
-				{3}
+				{}
 			</table>
-		""".format(
-			error_description, _("Variant Items"), _("Attributes"), rows
-		)
+		""".format(error_description, _("Variant Items"), _("Attributes"), rows)
 
 		frappe.throw(message, title=_("Variant Attribute Error"), is_minimizable=True, wide=True)
 
@@ -974,7 +962,7 @@
 
 			frappe.throw(msg, title=_("Linked with submitted documents"))
 
-	def _get_linked_submitted_documents(self, changed_fields: List[str]) -> Optional[Dict[str, str]]:
+	def _get_linked_submitted_documents(self, changed_fields: list[str]) -> dict[str, str] | None:
 		linked_doctypes = [
 			"Delivery Note Item",
 			"Sales Invoice Item",
@@ -1163,17 +1151,13 @@
 		last_purchase_receipt and last_purchase_receipt[0].posting_date or "1900-01-01"
 	)
 
-	if last_purchase_order and (
-		purchase_order_date >= purchase_receipt_date or not last_purchase_receipt
-	):
+	if last_purchase_order and (purchase_order_date >= purchase_receipt_date or not last_purchase_receipt):
 		# use purchase order
 
 		last_purchase = last_purchase_order[0]
 		purchase_date = purchase_order_date
 
-	elif last_purchase_receipt and (
-		purchase_receipt_date > purchase_order_date or not last_purchase_order
-	):
+	elif last_purchase_receipt and (purchase_receipt_date > purchase_order_date or not last_purchase_order):
 		# use purchase receipt
 		last_purchase = last_purchase_receipt[0]
 		purchase_date = purchase_receipt_date
@@ -1349,7 +1333,7 @@
 			frappe.publish_progress(count / total * 100, title=_("Updating Variants..."))
 
 
-def validate_item_default_company_links(item_defaults: List[ItemDefault]) -> None:
+def validate_item_default_company_links(item_defaults: list[ItemDefault]) -> None:
 	for item_default in item_defaults:
 		for doctype, field in [
 			["Warehouse", "default_warehouse"],
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index b237f73..a0ed1f2 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -315,7 +315,6 @@
 			self.assertEqual(value, purchase_item_details.get(key))
 
 	def test_item_default_validations(self):
-
 		with self.assertRaises(frappe.ValidationError) as ve:
 			make_item(
 				"Bad Item defaults",
@@ -469,9 +468,7 @@
 
 		self.assertFalse(frappe.db.exists("Item", old))
 
-		self.assertTrue(
-			frappe.db.get_value("Bin", {"item_code": new, "warehouse": "_Test Warehouse - _TC"})
-		)
+		self.assertTrue(frappe.db.get_value("Bin", {"item_code": new, "warehouse": "_Test Warehouse - _TC"}))
 		self.assertTrue(
 			frappe.db.get_value("Bin", {"item_code": new, "warehouse": "_Test Warehouse 1 - _TC"})
 		)
@@ -729,9 +726,7 @@
 
 	@change_settings("Stock Settings", {"sample_retention_warehouse": "_Test Warehouse - _TC"})
 	def test_retain_sample(self):
-		item = make_item(
-			"_TestRetainSample", {"has_batch_no": 1, "retain_sample": 1, "sample_quantity": 1}
-		)
+		item = make_item("_TestRetainSample", {"has_batch_no": 1, "retain_sample": 1, "sample_quantity": 1})
 
 		self.assertEqual(item.has_batch_no, 1)
 		self.assertEqual(item.retain_sample, 1)
@@ -804,7 +799,7 @@
 	def test_customer_codes_length(self):
 		"""Check if item code with special characters are allowed."""
 		item = make_item(properties={"item_code": "Test Item Code With Special Characters"})
-		for row in range(3):
+		for _row in range(3):
 			item.append("customer_items", {"ref_code": frappe.generate_hash("", 120)})
 		item.save()
 		self.assertTrue(len(item.customer_code) > 140)
@@ -845,9 +840,7 @@
 		make_property_setter("Item", None, "search_fields", "item_name", "Data", for_doctype="Doctype")
 
 		item = make_item(properties={"item_name": "Test Item", "description": "Test Description"})
-		data = item_query(
-			"Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True
-		)
+		data = item_query("Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True)
 		self.assertEqual(data[0].name, item.name)
 		self.assertEqual(data[0].item_name, item.item_name)
 		self.assertTrue("description" not in data[0])
@@ -855,9 +848,7 @@
 		make_property_setter(
 			"Item", None, "search_fields", "item_name, description", "Data", for_doctype="Doctype"
 		)
-		data = item_query(
-			"Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True
-		)
+		data = item_query("Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True)
 		self.assertEqual(data[0].name, item.name)
 		self.assertEqual(data[0].item_name, item.item_name)
 		self.assertEqual(data[0].description, item.description)
diff --git a/erpnext/stock/doctype/item_alternative/item_alternative.py b/erpnext/stock/doctype/item_alternative/item_alternative.py
index 83bee9c..a73a82f 100644
--- a/erpnext/stock/doctype/item_alternative/item_alternative.py
+++ b/erpnext/stock/doctype/item_alternative/item_alternative.py
@@ -45,9 +45,7 @@
 			"allow_alternative_item",
 		]
 		item_data = frappe.db.get_value("Item", self.item_code, fields, as_dict=1)
-		alternative_item_data = frappe.db.get_value(
-			"Item", self.alternative_item_code, fields, as_dict=1
-		)
+		alternative_item_data = frappe.db.get_value("Item", self.alternative_item_code, fields, as_dict=1)
 
 		for field in fields:
 			if item_data.get(field) != alternative_item_data.get(field):
@@ -87,14 +85,12 @@
 @frappe.validate_and_sanitize_search_inputs
 def get_alternative_items(doctype, txt, searchfield, start, page_len, filters):
 	return frappe.db.sql(
-		""" (select alternative_item_code from `tabItem Alternative`
+		f""" (select alternative_item_code from `tabItem Alternative`
 			where item_code = %(item_code)s and alternative_item_code like %(txt)s)
 		union
 			(select item_code from `tabItem Alternative`
 			where alternative_item_code = %(item_code)s and item_code like %(txt)s
-			and two_way = 1) limit {1} offset {0}
-		""".format(
-			start, page_len
-		),
+			and two_way = 1) limit {page_len} offset {start}
+		""",
 		{"item_code": filters.get("item_code"), "txt": "%" + txt + "%"},
 	)
diff --git a/erpnext/stock/doctype/item_alternative/test_item_alternative.py b/erpnext/stock/doctype/item_alternative/test_item_alternative.py
index 1996418..11e45ee 100644
--- a/erpnext/stock/doctype/item_alternative/test_item_alternative.py
+++ b/erpnext/stock/doctype/item_alternative/test_item_alternative.py
@@ -54,9 +54,7 @@
 				"fg_item_qty": 5,
 			},
 		]
-		sco = get_subcontracting_order(
-			service_items=service_items, supplier_warehouse=supplier_warehouse
-		)
+		sco = get_subcontracting_order(service_items=service_items, supplier_warehouse=supplier_warehouse)
 		rm_items = [
 			{
 				"item_code": "Test Finished Goods - A",
@@ -106,9 +104,7 @@
 			"reserved_qty_for_sub_contract",
 		)
 
-		self.assertEqual(
-			after_transfer_reserved_qty_for_sub_contract, flt(reserved_qty_for_sub_contract - 5)
-		)
+		self.assertEqual(after_transfer_reserved_qty_for_sub_contract, flt(reserved_qty_for_sub_contract - 5))
 
 		scr = make_subcontracting_receipt(sco.name)
 		scr.save()
@@ -159,9 +155,7 @@
 			"reserved_qty_for_production",
 		)
 
-		self.assertEqual(
-			reserved_qty_for_production_after_transfer, flt(reserved_qty_for_production - 5)
-		)
+		self.assertEqual(reserved_qty_for_production_after_transfer, flt(reserved_qty_for_production - 5))
 		ste1 = frappe.get_doc(make_stock_entry(pro_order.name, "Manufacture", 5))
 
 		status = False
diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py
index 7b341b2..04421d6 100644
--- a/erpnext/stock/doctype/item_attribute/item_attribute.py
+++ b/erpnext/stock/doctype/item_attribute/item_attribute.py
@@ -93,7 +93,9 @@
 		values, abbrs = [], []
 		for d in self.item_attribute_values:
 			if d.attribute_value.lower() in map(str.lower, values):
-				frappe.throw(_("Attribute value: {0} must appear only once").format(d.attribute_value.title()))
+				frappe.throw(
+					_("Attribute value: {0} must appear only once").format(d.attribute_value.title())
+				)
 			values.append(d.attribute_value)
 
 			if d.abbr.lower() in map(str.lower, abbrs):
diff --git a/erpnext/stock/doctype/item_manufacturer/item_manufacturer.py b/erpnext/stock/doctype/item_manufacturer/item_manufacturer.py
index ed004d5..715f09b 100644
--- a/erpnext/stock/doctype/item_manufacturer/item_manufacturer.py
+++ b/erpnext/stock/doctype/item_manufacturer/item_manufacturer.py
@@ -57,7 +57,9 @@
 			# if unchecked and default in Item master, clear it.
 			if default_manufacturer == self.manufacturer and default_part_no == self.manufacturer_part_no:
 				frappe.db.set_value(
-					"Item", item.name, {"default_item_manufacturer": None, "default_manufacturer_part_no": None}
+					"Item",
+					item.name,
+					{"default_item_manufacturer": None, "default_manufacturer_part_no": None},
 				)
 
 		elif self.is_default:
diff --git a/erpnext/stock/doctype/item_price/item_price.py b/erpnext/stock/doctype/item_price/item_price.py
index d64e321..ccdf1a0 100644
--- a/erpnext/stock/doctype/item_price/item_price.py
+++ b/erpnext/stock/doctype/item_price/item_price.py
@@ -68,7 +68,7 @@
 
 			if not price_list_details:
 				link = frappe.utils.get_link_to_form("Price List", self.price_list)
-				frappe.throw("The price list {0} does not exist or is disabled".format(link))
+				frappe.throw(f"The price list {link} does not exist or is disabled")
 
 			self.buying, self.selling, self.currency = price_list_details
 
@@ -85,7 +85,6 @@
 			frappe.throw(_(msg))
 
 	def check_duplicates(self):
-
 		item_price = frappe.qb.DocType("Item Price")
 
 		query = (
diff --git a/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py b/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
index a4bdc0b..3ee46e4 100644
--- a/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
+++ b/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
@@ -64,4 +64,6 @@
 	def validate(self):
 		for d in self.fields:
 			if d.field_name in self.invalid_fields_for_copy_fields_in_variants:
-				frappe.throw(_("Cannot set the field <b>{0}</b> for copying in variants").format(d.field_name))
+				frappe.throw(
+					_("Cannot set the field <b>{0}</b> for copying in variants").format(d.field_name)
+				)
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index baff540..5e5efb5 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -103,13 +103,13 @@
 		for d in self.get("purchase_receipts"):
 			docstatus = frappe.db.get_value(d.receipt_document_type, d.receipt_document, "docstatus")
 			if docstatus != 1:
-				msg = (
-					f"Row {d.idx}: {d.receipt_document_type} {frappe.bold(d.receipt_document)} must be submitted"
-				)
+				msg = f"Row {d.idx}: {d.receipt_document_type} {frappe.bold(d.receipt_document)} must be submitted"
 				frappe.throw(_(msg), title=_("Invalid Document"))
 
 			if d.receipt_document_type == "Purchase Invoice":
-				update_stock = frappe.db.get_value(d.receipt_document_type, d.receipt_document, "update_stock")
+				update_stock = frappe.db.get_value(
+					d.receipt_document_type, d.receipt_document, "update_stock"
+				)
 				if not update_stock:
 					msg = _("Row {0}: Purchase Invoice {1} has no stock impact.").format(
 						d.idx, frappe.bold(d.receipt_document)
@@ -159,7 +159,8 @@
 					)
 
 				item.applicable_charges = flt(
-					flt(item.get(based_on_field)) * (flt(self.total_taxes_and_charges) / flt(total_item_cost)),
+					flt(item.get(based_on_field))
+					* (flt(self.total_taxes_and_charges) / flt(total_item_cost)),
 					item.precision("applicable_charges"),
 				)
 				total_charges += item.applicable_charges
@@ -257,7 +258,9 @@
 		for item in self.get("items"):
 			if item.is_fixed_asset:
 				receipt_document_type = (
-					"purchase_invoice" if item.receipt_document_type == "Purchase Invoice" else "purchase_receipt"
+					"purchase_invoice"
+					if item.receipt_document_type == "Purchase Invoice"
+					else "purchase_receipt"
 				)
 				docs = frappe.db.get_all(
 					"Asset",
@@ -280,9 +283,7 @@
 							frappe.throw(
 								_(
 									"{0} <b>{1}</b> has submitted Assets. Remove Item <b>{2}</b> from table to continue."
-								).format(
-									item.receipt_document_type, item.receipt_document, item.item_code
-								)
+								).format(item.receipt_document_type, item.receipt_document, item.item_code)
 							)
 
 	def update_rate_in_serial_no_for_non_asset_items(self, receipt_document):
@@ -291,10 +292,10 @@
 				serial_nos = get_serial_nos(item.serial_no)
 				if serial_nos:
 					frappe.db.sql(
-						"update `tabSerial No` set purchase_rate=%s where name in ({0})".format(
+						"update `tabSerial No` set purchase_rate=%s where name in ({})".format(
 							", ".join(["%s"] * len(serial_nos))
 						),
-						tuple([item.valuation_rate] + serial_nos),
+						tuple([item.valuation_rate, *serial_nos]),
 					)
 
 
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
index 4058aa8..9ec2d69 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
@@ -16,9 +16,7 @@
 	make_purchase_receipt,
 )
 from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
-	get_batch_from_bundle,
 	get_serial_nos_from_bundle,
-	make_serial_batch_bundle,
 )
 from erpnext.stock.serial_batch_bundle import SerialNoValuation
 
@@ -68,9 +66,7 @@
 			as_dict=1,
 		)
 
-		self.assertEqual(
-			last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction
-		)
+		self.assertEqual(last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction)
 		self.assertEqual(last_sle_after_landed_cost.stock_value - last_sle.stock_value, 25.0)
 
 		# assert after submit
@@ -93,7 +89,6 @@
 		self.assertPurchaseReceiptLCVGLEntries(pr)
 
 	def assertPurchaseReceiptLCVGLEntries(self, pr):
-
 		gl_entries = get_gl_entries("Purchase Receipt", pr.name)
 
 		self.assertTrue(gl_entries)
@@ -176,9 +171,7 @@
 			as_dict=1,
 		)
 
-		self.assertEqual(
-			last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction
-		)
+		self.assertEqual(last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction)
 		self.assertEqual(last_sle_after_landed_cost.stock_value - last_sle.stock_value, 50.0)
 
 	def test_landed_cost_voucher_for_zero_purchase_rate(self):
@@ -235,7 +228,6 @@
 		)
 
 	def test_landed_cost_voucher_against_purchase_invoice(self):
-
 		pi = make_purchase_invoice(
 			update_stock=1,
 			posting_date=frappe.utils.nowdate(),
@@ -280,9 +272,7 @@
 			as_dict=1,
 		)
 
-		self.assertEqual(
-			last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction
-		)
+		self.assertEqual(last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction)
 
 		self.assertEqual(last_sle_after_landed_cost.stock_value - last_sle.stock_value, 50.0)
 
@@ -436,7 +426,7 @@
 			do_not_save=True,
 		)
 		pr.items[0].cost_center = "Main - TCP1"
-		for x in range(2):
+		for _x in range(2):
 			pr.append(
 				"items",
 				{
diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py
index ace84f8..b52b169 100644
--- a/erpnext/stock/doctype/material_request/material_request.py
+++ b/erpnext/stock/doctype/material_request/material_request.py
@@ -107,13 +107,13 @@
 
 				if actual_so_qty and (flt(so_items[so_no][item]) + already_indented > actual_so_qty):
 					frappe.throw(
-						_("Material Request of maximum {0} can be made for Item {1} against Sales Order {2}").format(
-							actual_so_qty - already_indented, item, so_no
-						)
+						_(
+							"Material Request of maximum {0} can be made for Item {1} against Sales Order {2}"
+						).format(actual_so_qty - already_indented, item, so_no)
 					)
 
 	def validate(self):
-		super(MaterialRequest, self).validate()
+		super().validate()
 
 		self.validate_schedule_date()
 		self.check_for_on_hold_or_closed_status("Sales Order", "sales_order")
@@ -187,12 +187,8 @@
 		self.set_status(update=True, status="Cancelled")
 
 	def check_modified_date(self):
-		mod_db = frappe.db.sql(
-			"""select modified from `tabMaterial Request` where name = %s""", self.name
-		)
-		date_diff = frappe.db.sql(
-			"""select TIMEDIFF('%s', '%s')""" % (mod_db[0][0], cstr(self.modified))
-		)
+		mod_db = frappe.db.sql("""select modified from `tabMaterial Request` where name = %s""", self.name)
+		date_diff = frappe.db.sql(f"""select TIMEDIFF('{mod_db[0][0]}', '{cstr(self.modified)}')""")
 
 		if date_diff and date_diff[0][0]:
 			frappe.throw(_("{0} {1} has been modified. Please refresh.").format(_(self.doctype), self.name))
@@ -276,7 +272,9 @@
 					d.ordered_qty = flt(mr_items_ordered_qty.get(d.name))
 
 					if mr_qty_allowance:
-						allowed_qty = flt((d.qty + (d.qty * (mr_qty_allowance / 100))), d.precision("ordered_qty"))
+						allowed_qty = flt(
+							(d.qty + (d.qty * (mr_qty_allowance / 100))), d.precision("ordered_qty")
+						)
 
 						if d.ordered_qty and d.ordered_qty > allowed_qty:
 							frappe.throw(
@@ -371,9 +369,7 @@
 
 
 def set_missing_values(source, target_doc):
-	if target_doc.doctype == "Purchase Order" and getdate(target_doc.schedule_date) < getdate(
-		nowdate()
-	):
+	if target_doc.doctype == "Purchase Order" and getdate(target_doc.schedule_date) < getdate(nowdate()):
 		target_doc.schedule_date = None
 	target_doc.run_method("set_missing_values")
 	target_doc.run_method("calculate_taxes_and_totals")
@@ -503,9 +499,7 @@
 			target_doc.schedule_date = None
 		target_doc.set(
 			"items",
-			[
-				d for d in target_doc.get("items") if d.get("item_code") in supplier_items and d.get("qty") > 0
-			],
+			[d for d in target_doc.get("items") if d.get("item_code") in supplier_items and d.get("qty") > 0],
 		)
 
 		set_missing_values(source, target_doc)
@@ -557,7 +551,7 @@
 
 	if filters.get("transaction_date"):
 		date = filters.get("transaction_date")[1]
-		conditions += "and mr.transaction_date between '{0}' and '{1}' ".format(date[0], date[1])
+		conditions += f"and mr.transaction_date between '{date[0]}' and '{date[1]}' "
 
 	supplier = filters.get("supplier")
 	supplier_items = get_items_based_on_default_supplier(supplier)
@@ -569,18 +563,18 @@
 		"""select distinct mr.name, transaction_date,company
 		from `tabMaterial Request` mr, `tabMaterial Request Item` mr_item
 		where mr.name = mr_item.parent
-			and mr_item.item_code in ({0})
+			and mr_item.item_code in ({})
 			and mr.material_request_type = 'Purchase'
 			and mr.per_ordered < 99.99
 			and mr.docstatus = 1
 			and mr.status != 'Stopped'
 			and mr.company = %s
-			{1}
+			{}
 		order by mr_item.item_code ASC
-		limit {2} offset {3} """.format(
+		limit {} offset {} """.format(
 			", ".join(["%s"] * len(supplier_items)), conditions, cint(page_len), cint(start)
 		),
-		tuple(supplier_items) + (filters.get("company"),),
+		(*tuple(supplier_items), filters.get("company")),
 		as_dict=1,
 	)
 
@@ -708,7 +702,10 @@
 				"doctype": "Stock Entry",
 				"validation": {
 					"docstatus": ["=", 1],
-					"material_request_type": ["in", ["Material Transfer", "Material Issue", "Customer Provided"]],
+					"material_request_type": [
+						"in",
+						["Material Transfer", "Material Issue", "Customer Provided"],
+					],
 				},
 			},
 			"Material Request Item": {
@@ -738,9 +735,7 @@
 	mr = frappe.get_doc("Material Request", material_request)
 	errors = []
 	work_orders = []
-	default_wip_warehouse = frappe.db.get_single_value(
-		"Manufacturing Settings", "default_wip_warehouse"
-	)
+	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")
 
 	for d in mr.items:
 		if (d.stock_qty - d.ordered_qty) > 0:
@@ -788,7 +783,9 @@
 			)
 		else:
 			msgprint(
-				_("The {0} {1} created successfully").format(frappe.bold(_("Work Order")), work_orders_list[0])
+				_("The {0} {1} created successfully").format(
+					frappe.bold(_("Work Order")), work_orders_list[0]
+				)
 			)
 
 	if errors:
diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py
index 48397a3..b383078 100644
--- a/erpnext/stock/doctype/material_request/test_material_request.py
+++ b/erpnext/stock/doctype/material_request/test_material_request.py
@@ -756,9 +756,7 @@
 		self.assertEqual(mr.per_ordered, 100)
 
 	def test_customer_provided_parts_mr(self):
-		create_item(
-			"CUST-0987", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0
-		)
+		create_item("CUST-0987", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0)
 		existing_requested_qty = self._get_requested_qty("_Test Customer", "_Test Warehouse - _TC")
 
 		mr = make_material_request(item_code="CUST-0987", material_request_type="Customer Provided")
@@ -822,7 +820,7 @@
 		)
 		comapnywise_mr_list.setdefault(mr2.company, []).append(mr2.name)
 
-		for company, mr_list in comapnywise_mr_list.items():
+		for company, _mr_list in comapnywise_mr_list.items():
 			emails = get_email_list(company)
 
 			self.assertTrue(comapnywise_users[company] in emails)
@@ -840,9 +838,7 @@
 			}
 		).insert()
 
-	in_transit_warehouse = frappe.db.exists(
-		"Warehouse", {"warehouse_type": "Transit", "company": company}
-	)
+	in_transit_warehouse = frappe.db.exists("Warehouse", {"warehouse_type": "Transit", "company": company})
 
 	if not in_transit_warehouse:
 		in_transit_warehouse = (
diff --git a/erpnext/stock/doctype/packed_item/packed_item.py b/erpnext/stock/doctype/packed_item/packed_item.py
index d81ceaf..081d9c5 100644
--- a/erpnext/stock/doctype/packed_item/packed_item.py
+++ b/erpnext/stock/doctype/packed_item/packed_item.py
@@ -69,9 +69,7 @@
 		return
 
 	parent_items_price, reset = {}, False
-	set_price_from_children = frappe.db.get_single_value(
-		"Selling Settings", "editable_bundle_item_rates"
-	)
+	set_price_from_children = frappe.db.get_single_value("Selling Settings", "editable_bundle_item_rates")
 
 	stale_packed_items_table = get_indexed_packed_items_table(doc)
 
@@ -236,9 +234,7 @@
 	bin = get_packed_item_bin_qty(packing_item.item_code, pi_row.warehouse)
 	pi_row.actual_qty = flt(bin.get("actual_qty"))
 	pi_row.projected_qty = flt(bin.get("projected_qty"))
-	pi_row.use_serial_batch_fields = frappe.db.get_single_value(
-		"Stock Settings", "use_serial_batch_fields"
-	)
+	pi_row.use_serial_batch_fields = frappe.db.get_single_value("Stock Settings", "use_serial_batch_fields")
 
 
 def update_packed_item_price_data(pi_row, item_data, doc):
@@ -293,9 +289,7 @@
 def get_cancelled_doc_packed_item_details(old_packed_items):
 	prev_doc_packed_items_map = {}
 	for items in old_packed_items:
-		prev_doc_packed_items_map.setdefault((items.item_code, items.parent_item), []).append(
-			items.as_dict()
-		)
+		prev_doc_packed_items_map.setdefault((items.item_code, items.parent_item), []).append(items.as_dict())
 	return prev_doc_packed_items_map
 
 
diff --git a/erpnext/stock/doctype/packed_item/test_packed_item.py b/erpnext/stock/doctype/packed_item/test_packed_item.py
index ad06732..3f87ced 100644
--- a/erpnext/stock/doctype/packed_item/test_packed_item.py
+++ b/erpnext/stock/doctype/packed_item/test_packed_item.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
-from typing import List, Optional, Tuple
 
 import frappe
 from frappe.tests.utils import FrappeTestCase, change_settings
@@ -15,8 +14,8 @@
 
 
 def create_product_bundle(
-	quantities: Optional[List[int]] = None, warehouse: Optional[str] = None
-) -> Tuple[str, List[str]]:
+	quantities: list[int] | None = None, warehouse: str | None = None
+) -> tuple[str, list[str]]:
 	"""Get a new product_bundle for use in tests.
 
 	Create 10x required stock if warehouse is specified.
@@ -169,9 +168,7 @@
 
 		# backdated stock entry
 		for item in self.bundle_items:
-			make_stock_entry(
-				item_code=item, to_warehouse=warehouse, qty=10, rate=200, posting_date=yesterday
-			)
+			make_stock_entry(item_code=item, to_warehouse=warehouse, qty=10, rate=200, posting_date=yesterday)
 
 		# assert correct reposting
 		gles = get_gl_entries(dn.doctype, dn.name)
@@ -182,10 +179,11 @@
 	def assertReturns(self, original, returned):
 		self.assertEqual(len(original), len(returned))
 
-		sort_function = lambda p: (p.parent_item, p.item_code, p.qty)
+		def sort_function(p):
+			return p.parent_item, p.item_code, p.qty
 
 		for sent, returned in zip(
-			sorted(original, key=sort_function), sorted(returned, key=sort_function)
+			sorted(original, key=sort_function), sorted(returned, key=sort_function), strict=False
 		):
 			self.assertEqual(sent.item_code, returned.item_code)
 			self.assertEqual(sent.parent_item, returned.parent_item)
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py
index 88acfe8..8f8e8dc 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.py
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.py
@@ -34,7 +34,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs) -> None:
-		super(PackingSlip, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		self.status_updater = [
 			{
 				"target_dt": "Delivery Note Item",
@@ -87,9 +87,7 @@
 		"""Validate if case nos overlap. If they do, recommend next case no."""
 
 		if cint(self.from_case_no) <= 0:
-			frappe.throw(
-				_("The 'From Package No.' field must neither be empty nor it's value less than 1.")
-			)
+			frappe.throw(_("The 'From Package No.' field must neither be empty nor it's value less than 1."))
 		elif not self.to_case_no:
 			self.to_case_no = self.from_case_no
 		elif cint(self.to_case_no) < cint(self.from_case_no):
@@ -212,9 +210,8 @@
 	return frappe.db.sql(
 		"""select name, item_name, description from `tabItem`
 				where name in ( select item_code FROM `tabDelivery Note Item`
-	 						where parent= %s)
-	 			and %s like "%s" %s
-	 			limit  %s offset %s """
-		% ("%s", searchfield, "%s", get_match_cond(doctype), "%s", "%s"),
+	 						where parent= {})
+	 			and {} like "{}" {}
+	 			limit  {} offset {} """.format("%s", searchfield, "%s", get_match_cond(doctype), "%s", "%s"),
 		((filters or {}).get("delivery_note"), "%%%s%%" % txt, page_len, start),
 	)
diff --git a/erpnext/stock/doctype/packing_slip/test_packing_slip.py b/erpnext/stock/doctype/packing_slip/test_packing_slip.py
index 96da23d..08c70bf 100644
--- a/erpnext/stock/doctype/packing_slip/test_packing_slip.py
+++ b/erpnext/stock/doctype/packing_slip/test_packing_slip.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 # See license.txt
 
-import unittest
 
 import frappe
 from frappe.tests.utils import FrappeTestCase
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 4eab7e8..56bdca5 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -4,7 +4,6 @@
 import json
 from collections import OrderedDict, defaultdict
 from itertools import groupby
-from typing import Dict, List
 
 import frappe
 from frappe import _
@@ -381,9 +380,7 @@
 				),
 			)
 
-			locations = get_items_with_location_and_quantity(
-				item_doc, self.item_location_map, self.docstatus
-			)
+			locations = get_items_with_location_and_quantity(item_doc, self.item_location_map, self.docstatus)
 
 			item_doc.idx = None
 			item_doc.name = None
@@ -437,12 +434,10 @@
 		item_map = OrderedDict()
 		for item in locations:
 			if not item.item_code:
-				frappe.throw("Row #{0}: Item Code is Mandatory".format(item.idx))
+				frappe.throw(f"Row #{item.idx}: Item Code is Mandatory")
 			if not cint(
 				frappe.get_cached_value("Item", item.item_code, "is_stock_item")
-			) and not frappe.db.exists(
-				"Product Bundle", {"new_item_code": item.item_code, "disabled": 0}
-			):
+			) and not frappe.db.exists("Product Bundle", {"new_item_code": item.item_code, "disabled": 0}):
 				continue
 			item_code = item.item_code
 			reference = item.sales_order_item or item.material_request_item
@@ -564,7 +559,7 @@
 
 		return picked_items
 
-	def _get_product_bundles(self) -> Dict[str, str]:
+	def _get_product_bundles(self) -> dict[str, str]:
 		# Dict[so_item_row: item_code]
 		product_bundles = {}
 		for item in self.locations:
@@ -577,13 +572,11 @@
 			)
 		return product_bundles
 
-	def _get_product_bundle_qty_map(self, bundles: List[str]) -> Dict[str, Dict[str, float]]:
+	def _get_product_bundle_qty_map(self, bundles: list[str]) -> dict[str, dict[str, float]]:
 		# bundle_item_code: Dict[component, qty]
 		product_bundle_qty_map = {}
 		for bundle_item_code in bundles:
-			bundle = frappe.get_last_doc(
-				"Product Bundle", {"new_item_code": bundle_item_code, "disabled": 0}
-			)
+			bundle = frappe.get_last_doc("Product Bundle", {"new_item_code": bundle_item_code, "disabled": 0})
 			product_bundle_qty_map[bundle_item_code] = {item.item_code: item.qty for item in bundle.items}
 		return product_bundle_qty_map
 
@@ -617,7 +610,11 @@
 	def has_reserved_stock(self):
 		if self.purpose == "Delivery":
 			for location in self.locations:
-				if location.sales_order and location.sales_order_item and flt(location.stock_reserved_qty) > 0:
+				if (
+					location.sales_order
+					and location.sales_order_item
+					and flt(location.stock_reserved_qty) > 0
+				):
 					return True
 
 		return False
@@ -629,7 +626,7 @@
 		doc.run_method("update_status")
 
 
-def get_picked_items_qty(items) -> List[Dict]:
+def get_picked_items_qty(items) -> list[dict]:
 	pi_item = frappe.qb.DocType("Pick List Item")
 	return (
 		frappe.qb.from_(pi_item)
@@ -659,17 +656,13 @@
 	locations = []
 
 	# if stock qty is zero on submitted entry, show positive remaining qty to recalculate in case of restock.
-	remaining_stock_qty = (
-		item_doc.qty if (docstatus == 1 and item_doc.stock_qty == 0) else item_doc.stock_qty
-	)
+	remaining_stock_qty = item_doc.qty if (docstatus == 1 and item_doc.stock_qty == 0) else item_doc.stock_qty
 
 	while flt(remaining_stock_qty) > 0 and available_locations:
 		item_location = available_locations.pop(0)
 		item_location = frappe._dict(item_location)
 
-		stock_qty = (
-			remaining_stock_qty if item_location.qty >= remaining_stock_qty else item_location.qty
-		)
+		stock_qty = remaining_stock_qty if item_location.qty >= remaining_stock_qty else item_location.qty
 		qty = stock_qty / (item_doc.conversion_factor or 1)
 
 		uom_must_be_whole_number = frappe.get_cached_value("UOM", item_doc.uom, "must_be_whole_number")
@@ -705,7 +698,7 @@
 			if item_location.serial_no:
 				# set remaining serial numbers
 				item_location.serial_no = item_location.serial_no[-int(qty_diff) :]
-			available_locations = [item_location] + available_locations
+			available_locations = [item_location, *available_locations]
 
 	# update available locations for the item
 	item_location_map[item_doc.item_code] = available_locations
@@ -920,9 +913,7 @@
 	rejected_warehouses = get_rejected_warehouses()
 
 	for d in data:
-		if (
-			not consider_rejected_warehouses and rejected_warehouses and d.warehouse in rejected_warehouses
-		):
+		if not consider_rejected_warehouses and rejected_warehouses and d.warehouse in rejected_warehouses:
 			continue
 
 		if d.warehouse not in warehouse_wise_batches:
@@ -1033,8 +1024,7 @@
 			"name": "so_detail",
 			"parent": "against_sales_order",
 		},
-		"condition": lambda doc: abs(doc.delivered_qty) < abs(doc.qty)
-		and doc.delivered_by_supplier != 1,
+		"condition": lambda doc: abs(doc.delivered_qty) < abs(doc.qty) and doc.delivered_by_supplier != 1,
 	}
 
 	for customer in sales_dict:
@@ -1056,7 +1046,6 @@
 
 
 def map_pl_locations(pick_list, item_mapper, delivery_note, sales_order=None):
-
 	for location in pick_list.locations:
 		if location.sales_order != sales_order or location.product_bundle_item:
 			continue
@@ -1087,9 +1076,7 @@
 	delivery_note.customer = frappe.get_value("Sales Order", sales_order, "customer")
 
 
-def add_product_bundles_to_delivery_note(
-	pick_list: "PickList", delivery_note, item_mapper
-) -> None:
+def add_product_bundles_to_delivery_note(pick_list: "PickList", delivery_note, item_mapper) -> None:
 	"""Add product bundles found in pick list to delivery note.
 
 	When mapping pick list items, the bundle item itself isn't part of the
@@ -1167,7 +1154,7 @@
 			& (wo.qty > wo.material_transferred_for_manufacturing)
 			& (wo.docstatus == 1)
 			& (wo.company == filters.get("company"))
-			& (wo.name.like("%{0}%".format(txt)))
+			& (wo.name.like(f"%{txt}%"))
 		)
 		.orderby(Case().when(Locate(txt, wo.name) > 0, Locate(txt, wo.name)).else_(99999))
 		.orderby(wo.name)
@@ -1234,9 +1221,7 @@
 	stock_entry.use_multi_level_bom = work_order.use_multi_level_bom
 	stock_entry.fg_completed_qty = pick_list.for_qty
 	if work_order.bom_no:
-		stock_entry.inspection_required = frappe.db.get_value(
-			"BOM", work_order.bom_no, "inspection_required"
-		)
+		stock_entry.inspection_required = frappe.db.get_value("BOM", work_order.bom_no, "inspection_required")
 
 	is_wip_warehouse_group = frappe.db.get_value("Warehouse", work_order.wip_warehouse, "is_group")
 	if not (is_wip_warehouse_group and work_order.skip_transfer):
diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py
index cffd0d2..0fe869b 100644
--- a/erpnext/stock/doctype/pick_list/test_pick_list.py
+++ b/erpnext/stock/doctype/pick_list/test_pick_list.py
@@ -319,7 +319,6 @@
 		pr2.cancel()
 
 	def test_pick_list_for_items_from_multiple_sales_orders(self):
-
 		item_code = make_item().name
 		try:
 			frappe.get_doc(
@@ -463,9 +462,7 @@
 
 		self.assertEqual(pick_list.locations[0].qty, delivery_note.items[0].qty)
 		self.assertEqual(pick_list.locations[1].qty, delivery_note.items[1].qty)
-		self.assertEqual(
-			sales_order.items[0].conversion_factor, delivery_note.items[0].conversion_factor
-		)
+		self.assertEqual(sales_order.items[0].conversion_factor, delivery_note.items[0].conversion_factor)
 
 		pick_list.cancel()
 		sales_order.cancel()
@@ -514,7 +511,7 @@
 			_dict(item_code="A", warehouse="X", qty=8, picked_qty=3),
 			_dict(item_code="B", warehouse="Y", qty=6, picked_qty=4),
 		]
-		for expected_item, created_item in zip(expected_items, pl.locations):
+		for expected_item, created_item in zip(expected_items, pl.locations, strict=False):
 			_compare_dicts(expected_item, created_item)
 
 	def test_multiple_dn_creation(self):
@@ -624,9 +621,7 @@
 		pick_list_1.set_item_locations()
 		pick_list_1.submit()
 		create_delivery_note(pick_list_1.name)
-		for dn in frappe.get_all(
-			"Delivery Note", filters={"pick_list": pick_list_1.name}, fields={"name"}
-		):
+		for dn in frappe.get_all("Delivery Note", filters={"pick_list": pick_list_1.name}, fields={"name"}):
 			for dn_item in frappe.get_doc("Delivery Note", dn.name).get("items"):
 				if dn_item.item_code == "_Test Item":
 					self.assertEqual(dn_item.qty, 1)
@@ -728,7 +723,9 @@
 			self.assertTrue(loc.serial_and_batch_bundle)
 
 			data = frappe.get_all(
-				"Serial and Batch Entry", fields=["serial_no"], filters={"parent": loc.serial_and_batch_bundle}
+				"Serial and Batch Entry",
+				fields=["serial_no"],
+				filters={"parent": loc.serial_and_batch_bundle},
 			)
 
 			picked_serial_nos = [d.serial_no for d in data]
@@ -760,7 +757,7 @@
 
 		quantities = [5, 2]
 		bundle, components = create_product_bundle(quantities, warehouse=warehouse)
-		bundle_items = dict(zip(components, quantities))
+		bundle_items = dict(zip(components, quantities, strict=False))
 
 		so = make_sales_order(item_code=bundle, qty=3, rate=42)
 
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index e87e20d..0eb42b1 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -135,7 +135,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(PurchaseReceipt, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		self.status_updater = [
 			{
 				"target_dt": "Purchase Order Item",
@@ -228,7 +228,7 @@
 
 	def validate(self):
 		self.validate_posting_time()
-		super(PurchaseReceipt, self).validate()
+		super().validate()
 
 		if self._action != "submit":
 			self.set_status()
@@ -258,15 +258,15 @@
 				# Improves UX by not giving messages of "Assets Created" before throwing error of not finding arbnb account
 				self.get_company_default("asset_received_but_not_billed")
 				get_asset_account(
-					"capital_work_in_progress_account", asset_category=item.asset_category, company=self.company
+					"capital_work_in_progress_account",
+					asset_category=item.asset_category,
+					company=self.company,
 				)
 				break
 
 	def validate_provisional_expense_account(self):
 		provisional_accounting_for_non_stock_items = cint(
-			frappe.db.get_value(
-				"Company", self.company, "enable_provisional_accounting_for_non_stock_items"
-			)
+			frappe.db.get_value("Company", self.company, "enable_provisional_accounting_for_non_stock_items")
 		)
 
 		if not provisional_accounting_for_non_stock_items:
@@ -278,7 +278,7 @@
 				item.provisional_expense_account = default_provisional_account
 
 	def validate_with_previous_doc(self):
-		super(PurchaseReceipt, self).validate_with_previous_doc(
+		super().validate_with_previous_doc(
 			{
 				"Purchase Order": {
 					"ref_dn_field": "purchase_order",
@@ -339,24 +339,20 @@
 		return qty and flt(qty[0][0]) or 0.0
 
 	def get_po_qty_and_warehouse(self, po_detail):
-		po_qty, po_warehouse = frappe.db.get_value(
-			"Purchase Order Item", po_detail, ["qty", "warehouse"]
-		)
+		po_qty, po_warehouse = frappe.db.get_value("Purchase Order Item", po_detail, ["qty", "warehouse"])
 		return po_qty, po_warehouse
 
 	# Check for Closed status
 	def check_on_hold_or_closed_status(self):
 		check_list = []
 		for d in self.get("items"):
-			if (
-				d.meta.get_field("purchase_order") and d.purchase_order and d.purchase_order not in check_list
-			):
+			if d.meta.get_field("purchase_order") and d.purchase_order and d.purchase_order not in check_list:
 				check_list.append(d.purchase_order)
 				check_on_hold_or_closed_status("Purchase Order", d.purchase_order)
 
 	# on submit
 	def on_submit(self):
-		super(PurchaseReceipt, self).on_submit()
+		super().on_submit()
 
 		# Check for Approving Authority
 		frappe.get_doc("Authorization Control").validate_approving_authority(
@@ -390,7 +386,7 @@
 			frappe.throw(_("Purchase Invoice {0} is already submitted").format(self.submit_rv[0][0]))
 
 	def on_cancel(self):
-		super(PurchaseReceipt, self).on_cancel()
+		super().on_cancel()
 
 		self.check_on_hold_or_closed_status()
 		# Check if Purchase Invoice has been submitted against current Purchase Order
@@ -437,9 +433,7 @@
 		)
 
 		provisional_accounting_for_non_stock_items = cint(
-			frappe.db.get_value(
-				"Company", self.company, "enable_provisional_accounting_for_non_stock_items"
-			)
+			frappe.db.get_value("Company", self.company, "enable_provisional_accounting_for_non_stock_items")
 		)
 
 		exchange_rate_map, net_rate_map = get_purchase_document_details(self)
@@ -508,7 +502,6 @@
 						and self.conversion_rate != exchange_rate_map[item.purchase_invoice]
 						and item.net_rate == net_rate_map[item.purchase_invoice_item]
 					):
-
 						discrepancy_caused_by_exchange_rate_difference = (item.qty * item.net_rate) * (
 							exchange_rate_map[item.purchase_invoice] - self.conversion_rate
 						)
@@ -691,10 +684,12 @@
 				elif warehouse_account.get(d.warehouse):
 					stock_value_diff = get_stock_value_difference(self.name, d.name, d.warehouse)
 					stock_asset_account_name = warehouse_account[d.warehouse]["account"]
-					supplier_warehouse_account = warehouse_account.get(self.supplier_warehouse, {}).get("account")
-					supplier_warehouse_account_currency = warehouse_account.get(self.supplier_warehouse, {}).get(
-						"account_currency"
+					supplier_warehouse_account = warehouse_account.get(self.supplier_warehouse, {}).get(
+						"account"
 					)
+					supplier_warehouse_account_currency = warehouse_account.get(
+						self.supplier_warehouse, {}
+					).get("account_currency")
 
 					# If PR is sub-contracted and fg item rate is zero
 					# in that case if account for source and target warehouse are same,
@@ -911,7 +906,7 @@
 				so_items_details_map.setdefault(item.sales_order, []).append(item_details)
 
 		if so_items_details_map:
-			if get_datetime("{} {}".format(self.posting_date, self.posting_time)) > get_datetime():
+			if get_datetime(f"{self.posting_date} {self.posting_time}") > get_datetime():
 				return frappe.msgprint(
 					_("Cannot create Stock Reservation Entries for future dated Purchase Receipts.")
 				)
@@ -1172,9 +1167,7 @@
 			frappe.throw(_("All items have already been Invoiced/Returned"))
 
 		doc = frappe.get_doc(target)
-		doc.payment_terms_template = get_payment_terms_template(
-			source.supplier, "Supplier", source.company
-		)
+		doc.payment_terms_template = get_payment_terms_template(source.supplier, "Supplier", source.company)
 		doc.run_method("onload")
 		doc.run_method("set_missing_values")
 
@@ -1186,9 +1179,7 @@
 
 	def update_item(source_doc, target_doc, source_parent):
 		target_doc.qty, returned_qty = get_pending_qty(source_doc)
-		if frappe.db.get_single_value(
-			"Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice"
-		):
+		if frappe.db.get_single_value("Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice"):
 			target_doc.rejected_qty = 0
 		target_doc.stock_qty = flt(target_doc.qty) * flt(
 			target_doc.conversion_factor, target_doc.precision("conversion_factor")
@@ -1197,9 +1188,7 @@
 
 	def get_pending_qty(item_row):
 		qty = item_row.qty
-		if frappe.db.get_single_value(
-			"Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice"
-		):
+		if frappe.db.get_single_value("Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice"):
 			qty = item_row.received_qty
 		pending_qty = qty - invoiced_qty_map.get(item_row.name, 0)
 		returned_qty = flt(returned_qty_map.get(item_row.name, 0))
@@ -1384,15 +1373,11 @@
 					if total_item_cost > 0:
 						item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][
 							account.expense_account
-						]["amount"] += (
-							account.amount * item.get(based_on_field) / total_item_cost
-						)
+						]["amount"] += account.amount * item.get(based_on_field) / total_item_cost
 
 						item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][
 							account.expense_account
-						]["base_amount"] += (
-							account.base_amount * item.get(based_on_field) / total_item_cost
-						)
+						]["base_amount"] += account.base_amount * item.get(based_on_field) / total_item_cost
 					else:
 						item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][
 							account.expense_account
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 5cf2080..705b0f9 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -63,7 +63,6 @@
 		pr.delete()
 
 	def test_reverse_purchase_receipt_sle(self):
-
 		pr = make_purchase_receipt(qty=0.5, item_code="_Test Item Home Desktop 200")
 
 		sl_entry = frappe.db.get_all(
@@ -150,9 +149,7 @@
 		pi.delete()  # draft PI
 		pr.cancel()
 		frappe.db.set_value("Supplier", "_Test Supplier", "payment_terms", old_template_in_supplier)
-		frappe.get_doc(
-			"Payment Terms Template", "_Test Payment Terms Template For Purchase Invoice"
-		).delete()
+		frappe.get_doc("Payment Terms Template", "_Test Payment Terms Template For Purchase Invoice").delete()
 
 	def test_purchase_receipt_no_gl_entry(self):
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
@@ -220,7 +217,6 @@
 
 	def test_duplicate_serial_nos(self):
 		from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
-		from erpnext.stock.serial_batch_bundle import SerialBatchCreation
 
 		item = frappe.db.exists("Item", {"item_name": "Test Serialized Item 123"})
 		if not item:
@@ -243,7 +239,7 @@
 
 		serial_nos = get_serial_nos_from_bundle(bundle_id)
 
-		self.assertEquals(get_serial_nos_from_bundle(pr.items[0].serial_and_batch_bundle), serial_nos)
+		self.assertEqual(get_serial_nos_from_bundle(pr.items[0].serial_and_batch_bundle), serial_nos)
 
 		bundle_id = make_serial_batch_bundle(
 			frappe._dict(
@@ -266,7 +262,7 @@
 		# Then made delivery note to remove the serial nos from stock
 		dn = create_delivery_note(item_code=item.name, qty=2, rate=1500, serial_no=serial_nos)
 		dn.load_from_db()
-		self.assertEquals(get_serial_nos_from_bundle(dn.items[0].serial_and_batch_bundle), serial_nos)
+		self.assertEqual(get_serial_nos_from_bundle(dn.items[0].serial_and_batch_bundle), serial_nos)
 
 		posting_date = add_days(today(), -3)
 
@@ -393,13 +389,12 @@
 				frappe.db.get_value("Serial No", serial_no, "warehouse"), pr.get("items")[0].warehouse
 			)
 
-		rejected_serial_nos = get_serial_nos_from_bundle(
-			pr.get("items")[0].rejected_serial_and_batch_bundle
-		)
+		rejected_serial_nos = get_serial_nos_from_bundle(pr.get("items")[0].rejected_serial_and_batch_bundle)
 		self.assertEqual(len(rejected_serial_nos), 2)
 		for serial_no in rejected_serial_nos:
 			self.assertEqual(
-				frappe.db.get_value("Serial No", serial_no, "warehouse"), pr.get("items")[0].rejected_warehouse
+				frappe.db.get_value("Serial No", serial_no, "warehouse"),
+				pr.get("items")[0].rejected_warehouse,
 			)
 
 		pr.cancel()
@@ -614,8 +609,6 @@
 			for field, value in field_values.items():
 				self.assertEqual(cstr(serial_no.get(field)), value)
 
-		from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
-
 		pr = make_purchase_receipt(item_code="_Test Serialized Item With Series", qty=1)
 
 		serial_no = get_serial_nos_from_bundle(pr.get("items")[0].serial_and_batch_bundle)[0]
@@ -733,7 +726,6 @@
 		po.cancel()
 
 	def test_serial_no_against_purchase_receipt(self):
-
 		item_code = "Test Manual Created Serial No"
 		if not frappe.db.exists("Item", item_code):
 			make_item(item_code, dict(has_serial_no=1))
@@ -884,7 +876,7 @@
 			"Stock Received But Not Billed - TCP1": {"cost_center": cost_center},
 			stock_in_hand_account: {"cost_center": cost_center},
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual(expected_values[gle.account]["cost_center"], gle.cost_center)
 
 		pr.cancel()
@@ -909,7 +901,7 @@
 			"Stock Received But Not Billed - TCP1": {"cost_center": cost_center},
 			stock_in_hand_account: {"cost_center": cost_center},
 		}
-		for i, gle in enumerate(gl_entries):
+		for _i, gle in enumerate(gl_entries):
 			self.assertEqual(expected_values[gle.account]["cost_center"], gle.cost_center)
 
 		pr.cancel()
@@ -1190,9 +1182,7 @@
 		pr.submit()
 
 		# Get exchnage gain and loss account
-		exchange_gain_loss_account = frappe.db.get_value(
-			"Company", pr.company, "exchange_gain_loss_account"
-		)
+		exchange_gain_loss_account = frappe.db.get_value("Company", pr.company, "exchange_gain_loss_account")
 
 		# fetching the latest GL Entry with exchange gain and loss account account
 		amount = frappe.db.get_value(
@@ -1249,9 +1239,7 @@
 		account = "Stock Received But Not Billed - TCP1"
 
 		make_item(item_code)
-		se = make_stock_entry(
-			item_code=item_code, from_warehouse=warehouse, qty=50, do_not_save=True, rate=0
-		)
+		se = make_stock_entry(item_code=item_code, from_warehouse=warehouse, qty=50, do_not_save=True, rate=0)
 		se.items[0].allow_zero_valuation_rate = 1
 		se.save()
 		se.submit()
@@ -1697,7 +1685,6 @@
 		)
 
 		# Step 4: Create Internal Purchase Receipt
-		from erpnext.controllers.status_updater import OverAllowanceError
 		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
 
 		pr = make_inter_company_purchase_receipt(dn.name)
@@ -1847,7 +1834,6 @@
 		)
 
 		# Step 4: Create Internal Purchase Receipt
-		from erpnext.controllers.status_updater import OverAllowanceError
 		from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt
 
 		pr = make_inter_company_purchase_receipt(dn.name)
@@ -2200,9 +2186,9 @@
 		gl_entries = get_gl_entries(pr_return.doctype, pr_return.name)
 
 		# Test - 1: SLE Stock Value Difference should be equal to Qty * Average Rate
-		average_rate = (
-			(se.items[0].qty * se.items[0].basic_rate) + (pr.items[0].qty * pr.items[0].rate)
-		) / (se.items[0].qty + pr.items[0].qty)
+		average_rate = ((se.items[0].qty * se.items[0].basic_rate) + (pr.items[0].qty * pr.items[0].rate)) / (
+			se.items[0].qty + pr.items[0].qty
+		)
 		expected_stock_value_difference = pr_return.items[0].qty * average_rate
 		self.assertEqual(
 			flt(sl_entries[0].stock_value_difference, 2), flt(expected_stock_value_difference, 2)
@@ -2344,7 +2330,7 @@
 			do_not_save=1,
 		)
 
-		for i in range(9):
+		for _i in range(9):
 			pr.append(
 				"items",
 				{
@@ -2384,7 +2370,7 @@
 			do_not_save=1,
 		)
 
-		for i in range(9):
+		for _i in range(9):
 			pr.append(
 				"items",
 				{
@@ -2678,7 +2664,9 @@
 				self.assertEqual(row.rate, 250.0)
 				serial_nos = get_serial_nos_from_bundle(row.serial_and_batch_bundle)
 				for sn in serial_nos:
-					serial_no_details = frappe.db.get_value("Serial No", sn, ["status", "warehouse"], as_dict=1)
+					serial_no_details = frappe.db.get_value(
+						"Serial No", sn, ["status", "warehouse"], as_dict=1
+					)
 					self.assertTrue(serial_no_details.status == "Active")
 					self.assertEqual(serial_no_details.warehouse, "Work In Progress - TCP1")
 
@@ -2815,7 +2803,9 @@
 				self.assertEqual(row.rate, 250.0)
 				serial_nos = get_serial_nos_from_bundle(row.serial_and_batch_bundle)
 				for sn in serial_nos:
-					serial_no_details = frappe.db.get_value("Serial No", sn, ["status", "warehouse"], as_dict=1)
+					serial_no_details = frappe.db.get_value(
+						"Serial No", sn, ["status", "warehouse"], as_dict=1
+					)
 					self.assertTrue(serial_no_details.status == "Active")
 					self.assertEqual(serial_no_details.warehouse, "Work In Progress - TCP1")
 
@@ -2890,7 +2880,6 @@
 
 
 def get_taxes(**args):
-
 	args = frappe._dict(args)
 
 	return [
@@ -3035,14 +3024,13 @@
 			"rejected_warehouse": args.rejected_warehouse or "_Test Rejected Warehouse - _TC"
 			if rejected_qty != 0
 			else "",
-			"rate": args.rate if args.rate != None else 50,
+			"rate": args.rate if args.rate is not None else 50,
 			"conversion_factor": args.conversion_factor or 1.0,
 			"stock_qty": flt(qty) * (flt(args.conversion_factor) or 1.0),
 			"serial_and_batch_bundle": bundle_id,
 			"stock_uom": args.stock_uom or "_Test UOM",
 			"uom": uom,
-			"cost_center": args.cost_center
-			or frappe.get_cached_value("Company", pr.company, "cost_center"),
+			"cost_center": args.cost_center or frappe.get_cached_value("Company", pr.company, "cost_center"),
 			"asset_location": args.location or "Test Location",
 			"use_serial_batch_fields": args.use_serial_batch_fields or 0,
 			"serial_no": args.serial_no if args.use_serial_batch_fields else "",
diff --git a/erpnext/stock/doctype/putaway_rule/putaway_rule.py b/erpnext/stock/doctype/putaway_rule/putaway_rule.py
index 7ed6923..923c34e 100644
--- a/erpnext/stock/doctype/putaway_rule/putaway_rule.py
+++ b/erpnext/stock/doctype/putaway_rule/putaway_rule.py
@@ -128,9 +128,7 @@
 			updated_table = add_row(item, pending_qty, source_warehouse or item.warehouse, updated_table)
 			continue
 
-		at_capacity, rules = get_ordered_putaway_rules(
-			item_code, company, source_warehouse=source_warehouse
-		)
+		at_capacity, rules = get_ordered_putaway_rules(item_code, company, source_warehouse=source_warehouse)
 
 		if not rules:
 			warehouse = source_warehouse or item.get("warehouse")
@@ -221,7 +219,7 @@
 	new_sorted = sorted(new, key=sort_key)
 
 	# Once sorted by all relevant keys both tables should align if they are same.
-	for old_item, new_item in zip(old_sorted, new_sorted):
+	for old_item, new_item in zip(old_sorted, new_sorted, strict=False):
 		for key in compare_keys:
 			if old_item.get(key) != new_item.get(key):
 				return True
@@ -270,9 +268,7 @@
 
 	if item.doctype == "Stock Entry Detail":
 		new_updated_table_row.t_warehouse = warehouse
-		new_updated_table_row.transfer_qty = flt(to_allocate) * flt(
-			new_updated_table_row.conversion_factor
-		)
+		new_updated_table_row.transfer_qty = flt(to_allocate) * flt(new_updated_table_row.conversion_factor)
 	else:
 		new_updated_table_row.stock_qty = flt(to_allocate) * flt(new_updated_table_row.conversion_factor)
 		new_updated_table_row.warehouse = warehouse
@@ -294,23 +290,19 @@
 
 	for entry in items_not_accomodated:
 		item_link = frappe.utils.get_link_to_form("Item", entry[0])
-		formatted_item_rows += """
-			<td>{0}</td>
-			<td>{1}</td>
-		</tr>""".format(
-			item_link, frappe.bold(entry[1])
-		)
+		formatted_item_rows += f"""
+			<td>{item_link}</td>
+			<td>{frappe.bold(entry[1])}</td>
+		</tr>"""
 
 	msg += """
 		<table class="table">
 			<thead>
-				<td>{0}</td>
-				<td>{1}</td>
+				<td>{}</td>
+				<td>{}</td>
 			</thead>
-			{2}
+			{}
 		</table>
-	""".format(
-		_("Item"), _("Unassigned Qty"), formatted_item_rows
-	)
+	""".format(_("Item"), _("Unassigned Qty"), formatted_item_rows)
 
 	frappe.msgprint(msg, title=_("Insufficient Capacity"), is_minimizable=True, wide=True)
diff --git a/erpnext/stock/doctype/putaway_rule/test_putaway_rule.py b/erpnext/stock/doctype/putaway_rule/test_putaway_rule.py
index f5bad51..9f7fdec 100644
--- a/erpnext/stock/doctype/putaway_rule/test_putaway_rule.py
+++ b/erpnext/stock/doctype/putaway_rule/test_putaway_rule.py
@@ -10,7 +10,6 @@
 from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
 	get_batch_from_bundle,
 	get_serial_nos_from_bundle,
-	make_serial_batch_bundle,
 )
 from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
 from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
@@ -51,9 +50,7 @@
 
 	def test_putaway_rules_priority(self):
 		"""Test if rule is applied by priority, irrespective of free space."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg")
 		rule_2 = create_putaway_rule(
 			item_code="_Rice", warehouse=self.warehouse_2, capacity=300, uom="Kg", priority=2
 		)
@@ -74,17 +71,11 @@
 	def test_putaway_rules_with_same_priority(self):
 		"""Test if rule with more free space is applied,
 		among two rules with same priority and capacity."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=500, uom="Kg"
-		)
-		rule_2 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_2, capacity=500, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=500, uom="Kg")
+		rule_2 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_2, capacity=500, uom="Kg")
 
 		# out of 500 kg capacity, occupy 100 kg in warehouse_1
-		stock_receipt = make_stock_entry(
-			item_code="_Rice", target=self.warehouse_1, qty=100, basic_rate=50
-		)
+		stock_receipt = make_stock_entry(item_code="_Rice", target=self.warehouse_1, qty=100, basic_rate=50)
 
 		pr = make_purchase_receipt(item_code="_Rice", qty=700, apply_putaway_rule=1, do_not_submit=1)
 		self.assertEqual(len(pr.items), 2)
@@ -102,12 +93,8 @@
 
 	def test_putaway_rules_with_insufficient_capacity(self):
 		"""Test if qty exceeding capacity, is handled."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=100, uom="Kg"
-		)
-		rule_2 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_2, capacity=200, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=100, uom="Kg")
+		rule_2 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_2, capacity=200, uom="Kg")
 
 		pr = make_purchase_receipt(item_code="_Rice", qty=350, apply_putaway_rule=1, do_not_submit=1)
 		self.assertEqual(len(pr.items), 2)
@@ -128,19 +115,13 @@
 			item.append("uoms", {"uom": "Bag", "conversion_factor": 1000})
 			item.save()
 
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=3, uom="Bag"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=3, uom="Bag")
 		self.assertEqual(rule_1.stock_capacity, 3000)
-		rule_2 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_2, capacity=4, uom="Bag"
-		)
+		rule_2 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_2, capacity=4, uom="Bag")
 		self.assertEqual(rule_2.stock_capacity, 4000)
 
 		# populate 'Rack 1' with 1 Bag, making the free space 2 Bags
-		stock_receipt = make_stock_entry(
-			item_code="_Rice", target=self.warehouse_1, qty=1000, basic_rate=50
-		)
+		stock_receipt = make_stock_entry(item_code="_Rice", target=self.warehouse_1, qty=1000, basic_rate=50)
 
 		pr = make_purchase_receipt(
 			item_code="_Rice",
@@ -172,9 +153,7 @@
 		frappe.db.set_value("UOM", "Bag", "must_be_whole_number", 1)
 
 		# Putaway Rule in different UOM
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=1, uom="Bag"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=1, uom="Bag")
 		self.assertEqual(rule_1.stock_capacity, 1000)
 		# Putaway Rule in Stock UOM
 		rule_2 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_2, capacity=500)
@@ -204,9 +183,7 @@
 
 	def test_putaway_rules_with_reoccurring_item(self):
 		"""Test rules on same item entered multiple times with different rate."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg")
 		# total capacity is 200 Kg
 
 		pr = make_purchase_receipt(item_code="_Rice", qty=100, apply_putaway_rule=1, do_not_submit=1)
@@ -242,9 +219,7 @@
 
 	def test_validate_over_receipt_in_warehouse(self):
 		"""Test if overreceipt is blocked in the presence of putaway rules."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg")
 
 		pr = make_purchase_receipt(item_code="_Rice", qty=300, apply_putaway_rule=1, do_not_submit=1)
 		self.assertEqual(len(pr.items), 1)
@@ -296,9 +271,7 @@
 
 	def test_putaway_rule_on_stock_entry_material_transfer_reoccuring_item(self):
 		"""Test if reoccuring item is correctly considered."""
-		rule_1 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_1, capacity=300, uom="Kg"
-		)
+		rule_1 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_1, capacity=300, uom="Kg")
 		rule_2 = create_putaway_rule(
 			item_code="_Rice", warehouse=self.warehouse_2, capacity=600, uom="Kg", priority=2
 		)
@@ -440,9 +413,7 @@
 		rule_1 = create_putaway_rule(
 			item_code="_Rice", warehouse=self.warehouse_1, capacity=200, uom="Kg"
 		)  # more capacity
-		rule_2 = create_putaway_rule(
-			item_code="_Rice", warehouse=self.warehouse_2, capacity=100, uom="Kg"
-		)
+		rule_2 = create_putaway_rule(item_code="_Rice", warehouse=self.warehouse_2, capacity=100, uom="Kg")
 
 		stock_entry = make_stock_entry(
 			item_code="_Rice",
@@ -492,9 +463,7 @@
 	putaway.capacity = args.capacity or 1
 	putaway.stock_uom = frappe.db.get_value("Item", putaway.item_code, "stock_uom")
 	putaway.uom = args.uom or putaway.stock_uom
-	putaway.conversion_factor = get_conversion_factor(putaway.item_code, putaway.uom)[
-		"conversion_factor"
-	]
+	putaway.conversion_factor = get_conversion_factor(putaway.item_code, putaway.uom)["conversion_factor"]
 
 	if not args.do_not_save:
 		putaway.save()
diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
index 8816341..536a88f 100644
--- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py
@@ -125,13 +125,11 @@
 		if self.reference_type == "Job Card":
 			if self.reference_name:
 				frappe.db.sql(
-					"""
-					UPDATE `tab{doctype}`
+					f"""
+					UPDATE `tab{self.reference_type}`
 					SET quality_inspection = %s, modified = %s
 					WHERE name = %s and production_item = %s
-				""".format(
-						doctype=self.reference_type
-					),
+				""",
 					(quality_inspection, self.modified, self.reference_name, self.item_code),
 				)
 
@@ -153,9 +151,9 @@
 					args.append(self.name)
 
 				frappe.db.sql(
-					"""
+					f"""
 					UPDATE
-						`tab{child_doc}` t1, `tab{parent_doc}` t2
+						`tab{doctype}` t1, `tab{self.reference_type}` t2
 					SET
 						t1.quality_inspection = %s, t2.modified = %s
 					WHERE
@@ -163,9 +161,7 @@
 						and t1.item_code = %s
 						and t1.parent = t2.name
 						{conditions}
-				""".format(
-						parent_doc=self.reference_type, child_doc=doctype, conditions=conditions
-					),
+				""",
 					args,
 				)
 
@@ -203,7 +199,9 @@
 			reading_value = reading.get("reading_" + str(i))
 			if reading_value is not None and reading_value.strip():
 				result = (
-					flt(reading.get("min_value")) <= parse_float(reading_value) <= flt(reading.get("max_value"))
+					flt(reading.get("min_value"))
+					<= parse_float(reading_value)
+					<= flt(reading.get("max_value"))
 				)
 				if not result:
 					return False
@@ -225,9 +223,9 @@
 		except NameError as e:
 			field = frappe.bold(e.args[0].split()[1])
 			frappe.throw(
-				_("Row #{0}: {1} is not a valid reading field. Please refer to the field description.").format(
-					reading.idx, field
-				),
+				_(
+					"Row #{0}: {1} is not a valid reading field. Please refer to the field description."
+				).format(reading.idx, field),
 				title=_("Invalid Formula"),
 			)
 		except Exception:
@@ -296,40 +294,26 @@
 			qi_condition = ""
 
 		return frappe.db.sql(
-			"""
+			f"""
 				SELECT item_code
-				FROM `tab{doc}`
+				FROM `tab{from_doctype}`
 				WHERE parent=%(parent)s and docstatus < 2 and item_code like %(txt)s
 				{qi_condition} {cond} {mcond}
-				ORDER BY item_code limit {page_len} offset {start}
-			""".format(
-				doc=from_doctype,
-				cond=cond,
-				mcond=mcond,
-				start=cint(start),
-				page_len=cint(page_len),
-				qi_condition=qi_condition,
-			),
+				ORDER BY item_code limit {cint(page_len)} offset {cint(start)}
+			""",
 			{"parent": filters.get("parent"), "txt": "%%%s%%" % txt},
 		)
 
 	elif filters.get("reference_name"):
 		return frappe.db.sql(
-			"""
+			f"""
 				SELECT production_item
-				FROM `tab{doc}`
+				FROM `tab{from_doctype}`
 				WHERE name = %(reference_name)s and docstatus < 2 and production_item like %(txt)s
 				{qi_condition} {cond} {mcond}
 				ORDER BY production_item
-				limit {page_len} offset {start}
-			""".format(
-				doc=from_doctype,
-				cond=cond,
-				mcond=mcond,
-				start=cint(start),
-				page_len=cint(page_len),
-				qi_condition=qi_condition,
-			),
+				limit {cint(page_len)} offset {cint(start)}
+			""",
 			{"reference_name": filters.get("reference_name"), "txt": "%%%s%%" % txt},
 		)
 
diff --git a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
index c423ca8..f59d7c3 100644
--- a/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
+++ b/erpnext/stock/doctype/quality_inspection/test_quality_inspection.py
@@ -159,9 +159,7 @@
 			do_not_submit=True,
 		)
 
-		readings = [
-			{"specification": "Iron Content", "min_value": 0.1, "max_value": 0.9, "reading_1": "1.0"}
-		]
+		readings = [{"specification": "Iron Content", "min_value": 0.1, "max_value": 0.9, "reading_1": "1.0"}]
 
 		qa = create_quality_inspection(
 			reference_type="Stock Entry", reference_name=se.name, readings=readings, status="Rejected"
diff --git a/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py
index 34fb68c..7b7bffe 100644
--- a/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py
+++ b/erpnext/stock/doctype/quick_stock_balance/quick_stock_balance.py
@@ -35,17 +35,13 @@
 def get_stock_item_details(warehouse, date, item=None, barcode=None):
 	out = {}
 	if barcode:
-		out["item"] = frappe.db.get_value(
-			"Item Barcode", filters={"barcode": barcode}, fieldname=["parent"]
-		)
+		out["item"] = frappe.db.get_value("Item Barcode", filters={"barcode": barcode}, fieldname=["parent"])
 		if not out["item"]:
 			frappe.throw(_("Invalid Barcode. There is no Item attached to this barcode."))
 	else:
 		out["item"] = item
 
-	barcodes = frappe.db.get_values(
-		"Item Barcode", filters={"parent": out["item"]}, fieldname=["barcode"]
-	)
+	barcodes = frappe.db.get_values("Item Barcode", filters={"parent": out["item"]}, fieldname=["barcode"])
 
 	out["barcodes"] = [x[0] for x in barcodes]
 	out["qty"] = get_stock_balance(out["item"], warehouse, date)
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index 4ad3237..73778e3 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -144,15 +144,12 @@
 		if not acc_settings.acc_frozen_upto:
 			return
 		if getdate(self.posting_date) <= getdate(acc_settings.acc_frozen_upto):
-			if (
+			if acc_settings.frozen_accounts_modifier and frappe.session.user in get_users_with_role(
 				acc_settings.frozen_accounts_modifier
-				and frappe.session.user in get_users_with_role(acc_settings.frozen_accounts_modifier)
 			):
 				frappe.msgprint(_("Caution: This might alter frozen accounts."))
 				return
-			frappe.throw(
-				_("You cannot repost item valuation before {}").format(acc_settings.acc_frozen_upto)
-			)
+			frappe.throw(_("You cannot repost item valuation before {}").format(acc_settings.acc_frozen_upto))
 
 	def reset_field_values(self):
 		if self.based_on == "Transaction":
diff --git a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
index 950b436..7aa2fc3 100644
--- a/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/test_repost_item_valuation.py
@@ -175,7 +175,6 @@
 		riv3.set_status("Skipped")
 
 	def test_stock_freeze_validation(self):
-
 		today = nowdate()
 
 		riv = frappe.get_doc(
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
index 58971e8..1ae34d0 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py
@@ -4,7 +4,6 @@
 import collections
 import csv
 from collections import Counter, defaultdict
-from typing import Dict, List
 
 import frappe
 from frappe import _, _dict, bold
@@ -149,9 +148,7 @@
 			serial_no_warehouse[data.serial_no] = data.warehouse
 
 		for serial_no in serial_nos:
-			if (
-				not serial_no_warehouse.get(serial_no) or serial_no_warehouse.get(serial_no) != self.warehouse
-			):
+			if not serial_no_warehouse.get(serial_no) or serial_no_warehouse.get(serial_no) != self.warehouse:
 				self.throw_error_message(
 					f"Serial No {bold(serial_no)} is not present in the warehouse {bold(self.warehouse)}.",
 					SerialNoWarehouseError,
@@ -229,9 +226,7 @@
 	def get_serial_nos(self):
 		return [d.serial_no for d in self.entries if d.serial_no]
 
-	def set_incoming_rate_for_outward_transaction(
-		self, row=None, save=False, allow_negative_stock=False
-	):
+	def set_incoming_rate_for_outward_transaction(self, row=None, save=False, allow_negative_stock=False):
 		sle = self.get_sle_for_outward_transaction()
 
 		if self.has_serial_no:
@@ -352,14 +347,10 @@
 		if not self.voucher_detail_no or self.voucher_detail_no != row.name:
 			values_to_set["voucher_detail_no"] = row.name
 
-		if parent.get("posting_date") and (
-			not self.posting_date or self.posting_date != parent.posting_date
-		):
+		if parent.get("posting_date") and (not self.posting_date or self.posting_date != parent.posting_date):
 			values_to_set["posting_date"] = parent.posting_date or today()
 
-		if parent.get("posting_time") and (
-			not self.posting_time or self.posting_time != parent.posting_time
-		):
+		if parent.get("posting_time") and (not self.posting_time or self.posting_time != parent.posting_time):
 			values_to_set["posting_time"] = parent.posting_time
 
 		if parent.doctype in [
@@ -441,9 +432,9 @@
 		parent = frappe.qb.DocType("Serial and Batch Bundle")
 		child = frappe.qb.DocType("Serial and Batch Entry")
 
-		timestamp_condition = CombineDatetime(
-			parent.posting_date, parent.posting_time
-		) > CombineDatetime(self.posting_date, self.posting_time)
+		timestamp_condition = CombineDatetime(parent.posting_date, parent.posting_time) > CombineDatetime(
+			self.posting_date, self.posting_time
+		)
 
 		future_entries = (
 			frappe.qb.from_(parent)
@@ -615,7 +606,6 @@
 				)
 
 	def validate_incorrect_serial_nos(self, serial_nos):
-
 		if self.voucher_type == "Stock Entry" and self.voucher_no:
 			if frappe.get_cached_value("Stock Entry", self.voucher_no, "purpose") == "Repack":
 				return
@@ -942,7 +932,7 @@
 	serial_nos = []
 	batch_nos = []
 
-	with open(file_path, "r") as f:
+	with open(file_path) as f:
 		reader = csv.reader(f)
 		serial_nos, batch_nos = parse_csv_file_to_get_serial_batch(reader)
 
@@ -1217,10 +1207,7 @@
 def create_serial_batch_no_ledgers(
 	entries, child_row, parent_doc, warehouse=None, do_not_save=False
 ) -> object:
-
-	warehouse = warehouse or (
-		child_row.rejected_warehouse if child_row.is_rejected else child_row.warehouse
-	)
+	warehouse = warehouse or (child_row.rejected_warehouse if child_row.is_rejected else child_row.warehouse)
 
 	type_of_transaction = get_type_of_transaction(parent_doc, child_row)
 	if parent_doc.get("doctype") == "Stock Entry":
@@ -1706,9 +1693,7 @@
 	reserved_batches_details = frappe._dict()
 	if data:
 		reserved_batches_details = frappe._dict(
-			{
-				(d.batch_no, d.warehouse): frappe._dict({"warehouse": d.warehouse, "qty": d.qty}) for d in data
-			}
+			{(d.batch_no, d.warehouse): frappe._dict({"warehouse": d.warehouse, "qty": d.qty}) for d in data}
 		)
 
 	return reserved_batches_details
@@ -1856,7 +1841,7 @@
 
 
 # For work order and subcontracting
-def get_voucher_wise_serial_batch_from_bundle(**kwargs) -> Dict[str, Dict]:
+def get_voucher_wise_serial_batch_from_bundle(**kwargs) -> dict[str, dict]:
 	data = get_ledgers_from_serial_batch_bundle(**kwargs)
 	if not data:
 		return {}
@@ -1984,7 +1969,7 @@
 	return [row.serial_no for row in data if row.serial_no]
 
 
-def get_ledgers_from_serial_batch_bundle(**kwargs) -> List[frappe._dict]:
+def get_ledgers_from_serial_batch_bundle(**kwargs) -> list[frappe._dict]:
 	bundle_table = frappe.qb.DocType("Serial and Batch Bundle")
 	serial_batch_table = frappe.qb.DocType("Serial and Batch Entry")
 
@@ -2045,7 +2030,7 @@
 			stock_ledger_entry.serial_no,
 			stock_ledger_entry.serial_and_batch_bundle,
 		)
-		.where((stock_ledger_entry.is_cancelled == 0))
+		.where(stock_ledger_entry.is_cancelled == 0)
 	)
 
 	if kwargs.get("posting_date"):
diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py
index 826ac03..5f75b40 100644
--- a/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py
+++ b/erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py
@@ -650,7 +650,7 @@
 
 	batches = get_batch_nos(bundle)
 
-	return list(batches.keys())[0]
+	return next(iter(batches.keys()))
 
 
 def get_serial_nos_from_bundle(bundle):
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 5f4f393..4c693d8 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -3,7 +3,6 @@
 
 
 import json
-from typing import List, Optional, Union
 
 import frappe
 from frappe import ValidationError, _
@@ -47,9 +46,7 @@
 		item_group: DF.Link | None
 		item_name: DF.Data | None
 		location: DF.Link | None
-		maintenance_status: DF.Literal[
-			"", "Under Warranty", "Out of Warranty", "Under AMC", "Out of AMC"
-		]
+		maintenance_status: DF.Literal["", "Under Warranty", "Out of Warranty", "Under AMC", "Out of AMC"]
 		purchase_document_no: DF.Data | None
 		purchase_rate: DF.Float
 		serial_no: DF.Data
@@ -61,7 +58,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(SerialNo, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		self.via_stock_ledger = False
 
 	def validate(self):
@@ -121,9 +118,9 @@
 			)
 
 
-def get_available_serial_nos(serial_no_series, qty) -> List[str]:
+def get_available_serial_nos(serial_no_series, qty) -> list[str]:
 	serial_nos = []
-	for i in range(cint(qty)):
+	for _i in range(cint(qty)):
 		serial_nos.append(get_new_serial_number(serial_no_series))
 
 	return serial_nos
@@ -138,13 +135,11 @@
 
 def get_items_html(serial_nos, item_code):
 	body = ", ".join(serial_nos)
-	return """<details><summary>
-		<b>{0}:</b> {1} Serial Numbers <span class="caret"></span>
+	return f"""<details><summary>
+		<b>{item_code}:</b> {len(serial_nos)} Serial Numbers <span class="caret"></span>
 	</summary>
-	<div class="small">{2}</div></details>
-	""".format(
-		item_code, len(serial_nos), body
-	)
+	<div class="small">{body}</div></details>
+	"""
 
 
 def get_serial_nos(serial_no):
@@ -177,11 +172,9 @@
 def get_delivery_note_serial_no(item_code, qty, delivery_note):
 	serial_nos = ""
 	dn_serial_nos = frappe.db.sql_list(
-		""" select name from `tabSerial No`
+		f""" select name from `tabSerial No`
 		where item_code = %(item_code)s and delivery_document_no = %(delivery_note)s
-		and sales_invoice is null limit {0}""".format(
-			cint(qty)
-		),
+		and sales_invoice is null limit {cint(qty)}""",
 		{"item_code": item_code, "delivery_note": delivery_note},
 	)
 
@@ -196,12 +189,11 @@
 	qty: int,
 	item_code: str,
 	warehouse: str,
-	posting_date: Optional[str] = None,
-	batch_nos: Optional[Union[str, List[str]]] = None,
-	for_doctype: Optional[str] = None,
+	posting_date: str | None = None,
+	batch_nos: str | list[str] | None = None,
+	for_doctype: str | None = None,
 	exclude_sr_nos=None,
-) -> List[str]:
-
+) -> list[str]:
 	filters = frappe._dict({"item_code": item_code, "warehouse": warehouse})
 
 	if exclude_sr_nos is None:
diff --git a/erpnext/stock/doctype/serial_no/test_serial_no.py b/erpnext/stock/doctype/serial_no/test_serial_no.py
index 5a5c403..79291af 100644
--- a/erpnext/stock/doctype/serial_no/test_serial_no.py
+++ b/erpnext/stock/doctype/serial_no/test_serial_no.py
@@ -6,9 +6,8 @@
 
 
 import frappe
-from frappe import _, _dict
+from frappe import _dict
 from frappe.tests.utils import FrappeTestCase
-from frappe.utils import today
 
 from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
 from erpnext.stock.doctype.item.test_item import make_item
@@ -16,10 +15,8 @@
 from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
 	get_batch_from_bundle,
 	get_serial_nos_from_bundle,
-	make_serial_batch_bundle,
 )
 from erpnext.stock.doctype.serial_no.serial_no import *
-from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
 from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
 from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
@@ -53,9 +50,7 @@
 		se = make_serialized_item(target_warehouse="_Test Warehouse - _TC")
 		serial_nos = get_serial_nos_from_bundle(se.get("items")[0].serial_and_batch_bundle)
 
-		dn = create_delivery_note(
-			item_code="_Test Serialized Item With Series", qty=1, serial_no=[serial_nos[0]]
-		)
+		create_delivery_note(item_code="_Test Serialized Item With Series", qty=1, serial_no=[serial_nos[0]])
 
 		serial_no = frappe.get_doc("Serial No", serial_nos[0])
 
@@ -63,7 +58,7 @@
 		self.assertEqual(serial_no.warehouse, None)
 
 		wh = create_warehouse("_Test Warehouse", company="_Test Company 1")
-		pr = make_purchase_receipt(
+		make_purchase_receipt(
 			item_code="_Test Serialized Item With Series",
 			qty=1,
 			serial_no=[serial_nos[0]],
@@ -118,7 +113,7 @@
 		self.assertRaises(frappe.ValidationError, dn.cancel)
 
 		# deliver from second company
-		dn_2 = create_delivery_note(
+		create_delivery_note(
 			item_code="_Test Serialized Item With Series",
 			qty=1,
 			serial_no=[serial_nos[0]],
@@ -201,16 +196,14 @@
 					{"doctype": "Serial No", "item_code": item_code, "serial_no": serial_no}
 				).insert()
 
-		in1 = make_stock_entry(
+		make_stock_entry(
 			item_code=item_code, to_warehouse=warehouse, qty=1, rate=42, serial_no=[serial_nos[0]]
 		)
-		in2 = make_stock_entry(
+		make_stock_entry(
 			item_code=item_code, to_warehouse=warehouse, qty=1, rate=113, serial_no=[serial_nos[1]]
 		)
 
-		out = create_delivery_note(
-			item_code=item_code, qty=1, serial_no=[serial_nos[0]], do_not_submit=True
-		)
+		out = create_delivery_note(item_code=item_code, qty=1, serial_no=[serial_nos[0]], do_not_submit=True)
 
 		bundle = out.items[0].serial_and_batch_bundle
 		doc = frappe.get_doc("Serial and Batch Bundle", bundle)
diff --git a/erpnext/stock/doctype/shipment/test_shipment.py b/erpnext/stock/doctype/shipment/test_shipment.py
index 726dff4..4d4eadc 100644
--- a/erpnext/stock/doctype/shipment/test_shipment.py
+++ b/erpnext/stock/doctype/shipment/test_shipment.py
@@ -76,9 +76,7 @@
 	shipment.description_of_content = "unit test entry"
 	for delivery_note in delivery_notes:
 		shipment.append("shipment_delivery_note", {"delivery_note": delivery_note.name})
-	shipment.append(
-		"shipment_parcel", {"length": 5, "width": 5, "height": 5, "weight": 5, "count": 5}
-	)
+	shipment.append("shipment_parcel", {"length": 5, "width": 5, "height": 5, "weight": 5, "count": 5})
 	shipment.insert()
 	return shipment
 
@@ -96,9 +94,7 @@
 
 def get_shipment_customer_address(customer_name):
 	address_title = customer_name + " address 123"
-	customer_address = frappe.get_all(
-		"Address", fields=["name"], filters={"address_title": address_title}
-	)
+	customer_address = frappe.get_all("Address", fields=["name"], filters={"address_title": address_title})
 	if len(customer_address):
 		return customer_address[0]
 	else:
@@ -160,9 +156,7 @@
 	customer.is_primary_contact = 1
 	customer.is_billing_contact = 1
 	customer.append("email_ids", {"email_id": "randomme@email.com", "is_primary": 1})
-	customer.append(
-		"phone_nos", {"phone": "123123123", "is_primary_phone": 1, "is_primary_mobile_no": 1}
-	)
+	customer.append("phone_nos", {"phone": "123123123", "is_primary_phone": 1, "is_primary_mobile_no": 1})
 	customer.status = "Passive"
 	customer.insert()
 	return customer
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index d2dab8a..9bb607c 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -4,7 +4,6 @@
 
 import json
 from collections import defaultdict
-from typing import List
 
 import frappe
 from frappe import _
@@ -147,7 +146,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(StockEntry, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		if self.purchase_order:
 			self.subcontract_data = frappe._dict(
 				{
@@ -174,9 +173,7 @@
 	def before_validate(self):
 		from erpnext.stock.doctype.putaway_rule.putaway_rule import apply_putaway_rule
 
-		apply_rule = self.apply_putaway_rule and (
-			self.purpose in ["Material Transfer", "Material Receipt"]
-		)
+		apply_rule = self.apply_putaway_rule and (self.purpose in ["Material Transfer", "Material Receipt"])
 
 		if self.get("items") and apply_rule:
 			apply_putaway_rule(self.doctype, self.get("items"), self.company, purpose=self.purpose)
@@ -345,7 +342,11 @@
 		if self.purpose == "Send to Warehouse":
 			for d in frappe.get_all(
 				"Stock Entry",
-				filters={"docstatus": 0, "outgoing_stock_entry": self.name, "purpose": "Receive at Warehouse"},
+				filters={
+					"docstatus": 0,
+					"outgoing_stock_entry": self.name,
+					"purpose": "Receive at Warehouse",
+				},
 			):
 				frappe.delete_doc("Stock Entry", d.name)
 
@@ -487,7 +488,7 @@
 			return
 
 		precision = frappe.get_precision("Stock Entry Detail", "qty")
-		fg_item = list(fg_qty.keys())[0]
+		fg_item = next(iter(fg_qty.keys()))
 		fg_item_qty = flt(fg_qty[fg_item], precision)
 		fg_completed_qty = flt(self.fg_completed_qty, precision)
 
@@ -670,14 +671,13 @@
 			production_item, qty = frappe.db.get_value(
 				"Work Order", self.work_order, ["production_item", "qty"]
 			)
-			args = other_ste + [production_item]
+			args = [*other_ste, production_item]
 			fg_qty_already_entered = frappe.db.sql(
 				"""select sum(transfer_qty)
 				from `tabStock Entry Detail`
-				where parent in (%s)
-					and item_code = %s
-					and ifnull(s_warehouse,'')='' """
-				% (", ".join(["%s" * len(other_ste)]), "%s"),
+				where parent in ({})
+					and item_code = {}
+					and ifnull(s_warehouse,'')='' """.format(", ".join(["%s" * len(other_ste)]), "%s"),
 				args,
 			)[0][0]
 			if fg_qty_already_entered and fg_qty_already_entered >= qty:
@@ -758,9 +758,7 @@
 		Set rate for outgoing, scrapped and finished items
 		"""
 		# Set rate for outgoing items
-		outgoing_items_cost = self.set_rate_for_outgoing_items(
-			reset_outgoing_rate, raise_error_if_no_rate
-		)
+		outgoing_items_cost = self.set_rate_for_outgoing_items(reset_outgoing_rate, raise_error_if_no_rate)
 		finished_item_qty = sum(d.transfer_qty for d in self.items if d.is_finished_item)
 
 		items = []
@@ -867,7 +865,6 @@
 
 		if settings.material_consumption:
 			if settings.get_rm_cost_from_consumption_entry and self.work_order:
-
 				# Validate only if Material Consumption Entry exists for the Work Order.
 				if frappe.db.exists(
 					"Stock Entry",
@@ -879,7 +876,9 @@
 				):
 					for item in self.items:
 						if not item.is_finished_item and not item.is_scrap_item:
-							label = frappe.get_meta(settings.doctype).get_label("get_rm_cost_from_consumption_entry")
+							label = frappe.get_meta(settings.doctype).get_label(
+								"get_rm_cost_from_consumption_entry"
+							)
 							frappe.throw(
 								_(
 									"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials."
@@ -892,7 +891,8 @@
 							)
 
 					if frappe.db.exists(
-						"Stock Entry", {"docstatus": 1, "work_order": self.work_order, "purpose": "Manufacture"}
+						"Stock Entry",
+						{"docstatus": 1, "work_order": self.work_order, "purpose": "Manufacture"},
 					):
 						frappe.throw(
 							_("Only one {0} entry can be created against the Work Order {1}").format(
@@ -1060,13 +1060,17 @@
 				item_code = se_item.original_item or se_item.item_code
 				precision = cint(frappe.db.get_default("float_precision")) or 3
 				required_qty = sum(
-					[flt(d.required_qty) for d in subcontract_order.supplied_items if d.rm_item_code == item_code]
+					[
+						flt(d.required_qty)
+						for d in subcontract_order.supplied_items
+						if d.rm_item_code == item_code
+					]
 				)
 
 				total_allowed = required_qty + (required_qty * (qty_allowance / 100))
 
 				if not required_qty:
-					bom_no = frappe.db.get_value(
+					frappe.db.get_value(
 						f"{self.subcontract_data.order_doctype} Item",
 						{
 							"parent": self.get(self.subcontract_data.order_field),
@@ -1112,7 +1116,10 @@
 						& (se.docstatus == 1)
 						& (se_detail.item_code == se_item.item_code)
 						& (
-							((se.purchase_order == self.purchase_order) & (se_detail.po_detail == se_item.po_detail))
+							(
+								(se.purchase_order == self.purchase_order)
+								& (se_detail.po_detail == se_item.po_detail)
+							)
 							if self.subcontract_data.order_doctype == "Purchase Order"
 							else (
 								(se.subcontracting_order == self.subcontracting_order)
@@ -1165,7 +1172,9 @@
 					else:
 						if not se_item.allow_alternative_item:
 							frappe.throw(
-								_("Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3}").format(
+								_(
+									"Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3}"
+								).format(
 									se_item.idx,
 									se_item.item_code,
 									self.subcontract_data.order_doctype,
@@ -1342,12 +1351,18 @@
 		for d in self.get("items"):
 			if cstr(d.s_warehouse):
 				sle = self.get_sl_entries(
-					d, {"warehouse": cstr(d.s_warehouse), "actual_qty": -flt(d.transfer_qty), "incoming_rate": 0}
+					d,
+					{
+						"warehouse": cstr(d.s_warehouse),
+						"actual_qty": -flt(d.transfer_qty),
+						"incoming_rate": 0,
+					},
 				)
 				if cstr(d.t_warehouse):
 					sle.dependant_sle_voucher_detail_no = d.name
 				elif finished_item_row and (
-					finished_item_row.item_code != d.item_code or finished_item_row.t_warehouse != d.s_warehouse
+					finished_item_row.item_code != d.item_code
+					or finished_item_row.t_warehouse != d.s_warehouse
 				):
 					sle.dependant_sle_voucher_detail_no = finished_item_row.name
 
@@ -1419,7 +1434,7 @@
 				sl_entries.append(sle)
 
 	def get_gl_entries(self, warehouse_account):
-		gl_entries = super(StockEntry, self).get_gl_entries(warehouse_account)
+		gl_entries = super().get_gl_entries(warehouse_account)
 
 		if self.purpose in ("Repack", "Manufacture"):
 			total_basic_amount = sum(flt(t.basic_amount) for t in self.get("items") if t.is_finished_item)
@@ -1452,9 +1467,9 @@
 					flt(t.amount * multiply_based_on) / divide_based_on
 				)
 
-				item_account_wise_additional_cost[(d.item_code, d.name)][t.expense_account]["base_amount"] += (
-					flt(t.base_amount * multiply_based_on) / divide_based_on
-				)
+				item_account_wise_additional_cost[(d.item_code, d.name)][t.expense_account][
+					"base_amount"
+				] += flt(t.base_amount * multiply_based_on) / divide_based_on
 
 		if item_account_wise_additional_cost:
 			for d in self.get("items"):
@@ -1486,7 +1501,9 @@
 								"cost_center": d.cost_center,
 								"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
 								"credit": -1
-								* amount["base_amount"],  # put it as negative credit instead of debit purposefully
+								* amount[
+									"base_amount"
+								],  # put it as negative credit instead of debit purposefully
 							},
 							item=d,
 						)
@@ -1607,7 +1624,10 @@
 		):
 			subcontract_items = frappe.get_all(
 				self.subcontract_data.order_supplied_items_field,
-				{"parent": self.get(self.subcontract_data.order_field), "rm_item_code": args.get("item_code")},
+				{
+					"parent": self.get(self.subcontract_data.order_field),
+					"rm_item_code": args.get("item_code"),
+				},
 				"main_item_code",
 			)
 
@@ -1655,7 +1675,6 @@
 		)
 
 		if self.bom_no:
-
 			backflush_based_on = frappe.db.get_single_value(
 				"Manufacturing Settings", "backflush_raw_materials_based_on"
 			)
@@ -1669,7 +1688,6 @@
 				"Material Transfer for Manufacture",
 				"Material Consumption for Manufacture",
 			]:
-
 				if self.work_order and self.purpose == "Material Transfer for Manufacture":
 					item_dict = self.get_pending_raw_materials(backflush_based_on)
 					if self.to_warehouse and self.pro_doc:
@@ -1679,7 +1697,10 @@
 
 				elif (
 					self.work_order
-					and (self.purpose == "Manufacture" or self.purpose == "Material Consumption for Manufacture")
+					and (
+						self.purpose == "Manufacture"
+						or self.purpose == "Material Consumption for Manufacture"
+					)
 					and not self.pro_doc.skip_transfer
 					and self.flags.backflush_based_on == "Material Transferred for Manufacture"
 				):
@@ -1687,7 +1708,10 @@
 
 				elif (
 					self.work_order
-					and (self.purpose == "Manufacture" or self.purpose == "Material Consumption for Manufacture")
+					and (
+						self.purpose == "Manufacture"
+						or self.purpose == "Material Consumption for Manufacture"
+					)
 					and self.flags.backflush_based_on == "BOM"
 					and frappe.db.get_single_value("Manufacturing Settings", "material_consumption") == 1
 				):
@@ -1700,7 +1724,10 @@
 					item_dict = self.get_bom_raw_materials(self.fg_completed_qty)
 
 					# Get Subcontract Order Supplied Items Details
-					if self.get(self.subcontract_data.order_field) and self.purpose == "Send to Subcontractor":
+					if (
+						self.get(self.subcontract_data.order_field)
+						and self.purpose == "Send to Subcontractor"
+					):
 						# Get Subcontract Order Supplied Items Details
 						parent = frappe.qb.DocType(self.subcontract_data.order_doctype)
 						child = frappe.qb.DocType(self.subcontract_data.order_supplied_items_field)
@@ -1719,9 +1746,14 @@
 						if self.pro_doc and cint(self.pro_doc.from_wip_warehouse):
 							item["from_warehouse"] = self.pro_doc.wip_warehouse
 						# Get Reserve Warehouse from Subcontract Order
-						if self.get(self.subcontract_data.order_field) and self.purpose == "Send to Subcontractor":
+						if (
+							self.get(self.subcontract_data.order_field)
+							and self.purpose == "Send to Subcontractor"
+						):
 							item["from_warehouse"] = item_wh.get(item.item_code)
-						item["to_warehouse"] = self.to_warehouse if self.purpose == "Send to Subcontractor" else ""
+						item["to_warehouse"] = (
+							self.to_warehouse if self.purpose == "Send to Subcontractor" else ""
+						)
 
 					self.add_to_stock_entry_detail(item_dict)
 
@@ -1911,9 +1943,7 @@
 		from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict
 
 		if (
-			frappe.db.get_single_value(
-				"Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies"
-			)
+			frappe.db.get_single_value("Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies")
 			and self.work_order
 			and frappe.get_cached_value("Work Order", self.work_order, "use_multi_level_bom")
 		):
@@ -2070,7 +2100,7 @@
 		)
 
 		precision = frappe.get_precision("Stock Entry Detail", "qty")
-		for key, row in available_materials.items():
+		for _key, row in available_materials.items():
 			remaining_qty_to_produce = flt(wo_data.trans_qty) - flt(wo_data.produced_qty)
 			if remaining_qty_to_produce <= 0 and not self.is_return:
 				continue
@@ -2244,9 +2274,7 @@
 				continue
 
 			transfer_pending = flt(d.required_qty) > flt(d.transferred_qty)
-			can_transfer = transfer_pending or (
-				backflush_based_on == "Material Transferred for Manufacture"
-			)
+			can_transfer = transfer_pending or (backflush_based_on == "Material Transferred for Manufacture")
 
 			if not can_transfer:
 				continue
@@ -2261,7 +2289,9 @@
 					)
 					item_row["job_card_item"] = job_card_item or None
 
-				if d.source_warehouse and not frappe.db.get_value("Warehouse", d.source_warehouse, "is_group"):
+				if d.source_warehouse and not frappe.db.get_value(
+					"Warehouse", d.source_warehouse, "is_group"
+				):
 					item_row["from_warehouse"] = d.source_warehouse
 
 				item_row["to_warehouse"] = wip_warehouse
@@ -2318,9 +2348,9 @@
 				if item_row.get(field):
 					se_child.set(field, item_row.get(field))
 
-			if se_child.s_warehouse == None:
+			if se_child.s_warehouse is None:
 				se_child.s_warehouse = self.from_warehouse
-			if se_child.t_warehouse == None:
+			if se_child.t_warehouse is None:
 				se_child.t_warehouse = self.to_warehouse
 
 			# in stock uom
@@ -2376,15 +2406,20 @@
 						expiry_date = frappe.db.get_value("Batch", item.batch_no, "expiry_date")
 						if expiry_date:
 							if getdate(self.posting_date) > getdate(expiry_date):
-								frappe.throw(_("Batch {0} of Item {1} has expired.").format(item.batch_no, item.item_code))
+								frappe.throw(
+									_("Batch {0} of Item {1} has expired.").format(
+										item.batch_no, item.item_code
+									)
+								)
 					else:
-						frappe.throw(_("Batch {0} of Item {1} is disabled.").format(item.batch_no, item.item_code))
+						frappe.throw(
+							_("Batch {0} of Item {1} is disabled.").format(item.batch_no, item.item_code)
+						)
 
 	def update_subcontract_order_supplied_items(self):
 		if self.get(self.subcontract_data.order_field) and (
 			self.purpose in ["Send to Subcontractor", "Material Transfer"] or self.is_return
 		):
-
 			# Get Subcontract Order Supplied Items Details
 			order_supplied_items = frappe.db.get_all(
 				self.subcontract_data.order_supplied_items_field,
@@ -2449,8 +2484,8 @@
 
 			cond = ""
 			for data, transferred_qty in stock_entries.items():
-				cond += """ WHEN (parent = %s and name = %s) THEN %s
-					""" % (
+				cond += """ WHEN (parent = {} and name = {}) THEN {}
+					""".format(
 					frappe.db.escape(data[0]),
 					frappe.db.escape(data[1]),
 					transferred_qty,
@@ -2506,7 +2541,9 @@
 			material_request = item.material_request or None
 			if self.purpose == "Material Transfer" and material_request not in material_requests:
 				if self.outgoing_stock_entry and parent_se:
-					material_request = frappe.get_value("Stock Entry Detail", item.ste_detail, "material_request")
+					material_request = frappe.get_value(
+						"Stock Entry Detail", item.ste_detail, "material_request"
+					)
 
 			if material_request and material_request not in material_requests:
 				material_requests.append(material_request)
@@ -2543,7 +2580,7 @@
 					d.serial_and_batch_bundle = id
 					d.use_serial_batch_fields = 0
 
-	def get_available_serial_nos(self) -> List[str]:
+	def get_available_serial_nos(self) -> list[str]:
 		serial_nos = []
 		data = frappe.get_all(
 			"Serial No",
@@ -2738,9 +2775,7 @@
 			)
 		)
 	):
-		operating_cost_per_unit += flt(work_order.corrective_operation_cost) / flt(
-			work_order.produced_qty
-		)
+		operating_cost_per_unit += flt(work_order.corrective_operation_cost) / flt(work_order.produced_qty)
 
 	return operating_cost_per_unit
 
@@ -2753,24 +2788,20 @@
 	if subcontract_order:
 		cond = f"and ste.purpose = 'Send to Subcontractor' and ste.{subcontract_order_field} = '{subcontract_order}'"
 	elif work_order:
-		cond = "and ste.purpose = 'Material Transfer for Manufacture' and ste.work_order = '{0}'".format(
-			work_order
-		)
+		cond = f"and ste.purpose = 'Material Transfer for Manufacture' and ste.work_order = '{work_order}'"
 
 	if not cond:
 		return {}
 
 	used_alternative_items = {}
 	data = frappe.db.sql(
-		""" select sted.original_item, sted.uom, sted.conversion_factor,
+		f""" select sted.original_item, sted.uom, sted.conversion_factor,
 			sted.item_code, sted.item_name, sted.conversion_factor,sted.stock_uom, sted.description
 		from
 			`tabStock Entry` ste, `tabStock Entry Detail` sted
 		where
 			sted.parent = ste.name and ste.docstatus = 1 and sted.original_item !=  sted.item_code
-			{0} """.format(
-			cond
-		),
+			{cond} """,
 		as_dict=1,
 	)
 
@@ -2808,9 +2839,7 @@
 	conversion_factor = get_conversion_factor(item_code, uom).get("conversion_factor")
 
 	if not conversion_factor:
-		frappe.msgprint(
-			_("UOM conversion factor required for UOM: {0} in Item: {1}").format(uom, item_code)
-		)
+		frappe.msgprint(_("UOM conversion factor required for UOM: {0} in Item: {1}").format(uom, item_code))
 		ret = {"uom": ""}
 	else:
 		ret = {
@@ -2920,9 +2949,7 @@
 		else:
 			supplied_item.supplied_qty += row.transfer_qty
 
-		supplied_item.total_supplied_qty = flt(supplied_item.supplied_qty) - flt(
-			supplied_item.returned_qty
-		)
+		supplied_item.total_supplied_qty = flt(supplied_item.supplied_qty) - flt(supplied_item.returned_qty)
 
 	return supplied_item_details
 
@@ -3034,7 +3061,11 @@
 			& (stock_entry_detail.s_warehouse.isnotnull())
 			& (
 				stock_entry.purpose.isin(
-					["Manufacture", "Material Consumption for Manufacture", "Material Transfer for Manufacture"]
+					[
+						"Manufacture",
+						"Material Consumption for Manufacture",
+						"Material Transfer for Manufacture",
+					]
 				)
 			)
 		)
@@ -3086,7 +3117,6 @@
 		doc.has_batch_no = 1
 		batchwise_serial_nos = get_batchwise_serial_nos(child.item_code, row)
 		for batch_no, qty in row.batches_to_be_consume.items():
-
 			while qty > 0:
 				qty -= 1
 				doc.append(
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
index 271cbbc..e5f4e73 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_utils.py
@@ -2,7 +2,7 @@
 # See license.txt
 
 
-from typing import TYPE_CHECKING, Optional, overload
+from typing import TYPE_CHECKING, overload
 
 import frappe
 from frappe.utils import cint, flt
@@ -18,15 +18,15 @@
 	*,
 	item_code: str,
 	qty: float,
-	company: Optional[str] = None,
-	from_warehouse: Optional[str] = None,
-	to_warehouse: Optional[str] = None,
-	rate: Optional[float] = None,
-	serial_no: Optional[str] = None,
-	batch_no: Optional[str] = None,
-	posting_date: Optional[str] = None,
-	posting_time: Optional[str] = None,
-	purpose: Optional[str] = None,
+	company: str | None = None,
+	from_warehouse: str | None = None,
+	to_warehouse: str | None = None,
+	rate: float | None = None,
+	serial_no: str | None = None,
+	batch_no: str | None = None,
+	posting_date: str | None = None,
+	posting_time: str | None = None,
+	purpose: str | None = None,
 	do_not_save: bool = False,
 	do_not_submit: bool = False,
 	inspection_required: bool = False,
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 01a43b3..c4ead57 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -5,7 +5,7 @@
 import frappe
 from frappe.permissions import add_user_permission, remove_user_permission
 from frappe.tests.utils import FrappeTestCase, change_settings
-from frappe.utils import add_days, add_to_date, flt, nowdate, nowtime, today
+from frappe.utils import add_days, flt, nowdate, nowtime, today
 
 from erpnext.accounts.doctype.account.test_account import get_inventory_account
 from erpnext.controllers.accounts_controller import InvalidQtyError
@@ -20,7 +20,7 @@
 	get_serial_nos_from_bundle,
 	make_serial_batch_bundle,
 )
-from erpnext.stock.doctype.serial_no.serial_no import *  # noqa
+from erpnext.stock.doctype.serial_no.serial_no import *
 from erpnext.stock.doctype.stock_entry.stock_entry import FinishedGoodError, make_stock_in_entry
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
 from erpnext.stock.doctype.stock_ledger_entry.stock_ledger_entry import StockFreezeError
@@ -38,7 +38,7 @@
 	condition, values = "", []
 	for key, value in args.items():
 		condition += " and " if condition else " where "
-		condition += "`{0}`=%s".format(key)
+		condition += f"`{key}`=%s"
 		values.append(value)
 
 	return frappe.db.sql(
@@ -151,8 +151,7 @@
 		)
 
 		projected_qty = (
-			frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, "projected_qty")
-			or 0
+			frappe.db.get_value("Bin", {"item_code": item_code, "warehouse": warehouse}, "projected_qty") or 0
 		)
 
 		frappe.db.set_single_value("Stock Settings", "auto_indent", 1)
@@ -693,14 +692,10 @@
 		se.set_stock_entry_type()
 		se.insert()
 		se.submit()
-		self.assertTrue(
-			frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse 1 - _TC"
-		)
+		self.assertTrue(frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse 1 - _TC")
 
 		se.cancel()
-		self.assertTrue(
-			frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse - _TC"
-		)
+		self.assertTrue(frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse - _TC")
 		frappe.flags.use_serial_and_batch_fields = False
 
 	def test_serial_cancel(self):
@@ -732,9 +727,7 @@
 		else:
 			item = frappe.get_doc("Item", {"item_name": "Batched and Serialised Item"})
 
-		se = make_stock_entry(
-			item_code=item.item_code, target="_Test Warehouse - _TC", qty=1, basic_rate=100
-		)
+		se = make_stock_entry(item_code=item.item_code, target="_Test Warehouse - _TC", qty=1, basic_rate=100)
 		batch_no = get_batch_from_bundle(se.items[0].serial_and_batch_bundle)
 		serial_no = get_serial_nos_from_bundle(se.items[0].serial_and_batch_bundle)[0]
 		batch_qty = get_batch_qty(batch_no, "_Test Warehouse - _TC", item.item_code)
@@ -750,7 +743,7 @@
 		self.assertEqual(frappe.db.get_value("Serial No", serial_no, "warehouse"), None)
 
 	def test_warehouse_company_validation(self):
-		company = frappe.db.get_value("Warehouse", "_Test Warehouse 2 - _TC1", "company")
+		frappe.db.get_value("Warehouse", "_Test Warehouse 2 - _TC1", "company")
 		frappe.get_doc("User", "test2@example.com").add_roles(
 			"Sales User", "Sales Manager", "Stock User", "Stock Manager"
 		)
@@ -856,12 +849,8 @@
 		for d in stock_entry.get("items"):
 			if d.item_code != "_Test FG Item 2":
 				rm_cost += flt(d.amount)
-		fg_cost = list(filter(lambda x: x.item_code == "_Test FG Item 2", stock_entry.get("items")))[
-			0
-		].amount
-		self.assertEqual(
-			fg_cost, flt(rm_cost + bom_operation_cost + work_order.additional_operating_cost, 2)
-		)
+		fg_cost = next(filter(lambda x: x.item_code == "_Test FG Item 2", stock_entry.get("items"))).amount
+		self.assertEqual(fg_cost, flt(rm_cost + bom_operation_cost + work_order.additional_operating_cost, 2))
 
 	@change_settings("Manufacturing Settings", {"material_consumption": 1})
 	def test_work_order_manufacture_with_material_consumption(self):
@@ -904,8 +893,8 @@
 		for d in s.get("items"):
 			if d.s_warehouse:
 				rm_cost += d.amount
-		fg_cost = list(filter(lambda x: x.item_code == "_Test FG Item", s.get("items")))[0].amount
-		scrap_cost = list(filter(lambda x: x.is_scrap_item, s.get("items")))[0].amount
+		fg_cost = next(filter(lambda x: x.item_code == "_Test FG Item", s.get("items"))).amount
+		scrap_cost = next(filter(lambda x: x.is_scrap_item, s.get("items"))).amount
 		self.assertEqual(fg_cost, flt(rm_cost - scrap_cost, 2))
 
 		# When Stock Entry has only FG + Scrap
@@ -919,13 +908,11 @@
 				rm_cost += d.amount
 		self.assertEqual(rm_cost, 0)
 		expected_fg_cost = s.get_basic_rate_for_manufactured_item(1)
-		fg_cost = list(filter(lambda x: x.item_code == "_Test FG Item", s.get("items")))[0].amount
+		fg_cost = next(filter(lambda x: x.item_code == "_Test FG Item", s.get("items"))).amount
 		self.assertEqual(flt(fg_cost, 2), flt(expected_fg_cost, 2))
 
 	def test_variant_work_order(self):
-		bom_no = frappe.db.get_value(
-			"BOM", {"item": "_Test Variant Item", "is_default": 1, "docstatus": 1}
-		)
+		bom_no = frappe.db.get_value("BOM", {"item": "_Test Variant Item", "is_default": 1, "docstatus": 1})
 
 		make_item_variant()  # make variant of _Test Variant Item if absent
 
@@ -1061,9 +1048,7 @@
 		self.assertRaises(frappe.ValidationError, repack.submit)
 
 	def test_customer_provided_parts_se(self):
-		create_item(
-			"CUST-0987", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0
-		)
+		create_item("CUST-0987", is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0)
 		se = make_stock_entry(
 			item_code="CUST-0987", purpose="Material Receipt", qty=4, to_warehouse="_Test Warehouse - _TC"
 		)
@@ -1178,9 +1163,7 @@
 		self.check_gl_entries(
 			"Stock Entry",
 			se.name,
-			sorted(
-				[["Stock Adjustment - TCP1", 100.0, 0.0], ["Miscellaneous Expenses - TCP1", 0.0, 100.0]]
-			),
+			sorted([["Stock Adjustment - TCP1", 100.0, 0.0], ["Miscellaneous Expenses - TCP1", 0.0, 100.0]]),
 		)
 
 	def test_conversion_factor_change(self):
@@ -1344,7 +1327,7 @@
 		)
 		batch_nos.append(get_batch_from_bundle(se2.items[0].serial_and_batch_bundle))
 
-		with self.assertRaises(frappe.ValidationError) as nse:
+		with self.assertRaises(frappe.ValidationError):
 			make_stock_entry(
 				item_code=item_code,
 				qty=1,
@@ -1604,15 +1587,12 @@
 		self.assertRaises(BatchExpiredError, se.save)
 
 	def test_negative_stock_reco(self):
-		from erpnext.controllers.stock_controller import BatchExpiredError
-		from erpnext.stock.doctype.batch.test_batch import make_new_batch
-
 		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 0)
 
 		item_code = "Test Negative Item - 001"
-		item_doc = create_item(item_code=item_code, is_stock_item=1, valuation_rate=10)
+		create_item(item_code=item_code, is_stock_item=1, valuation_rate=10)
 
-		se1 = make_stock_entry(
+		make_stock_entry(
 			item_code=item_code,
 			posting_date=add_days(today(), -3),
 			posting_time="00:00:00",
@@ -1621,7 +1601,7 @@
 			to_warehouse="_Test Warehouse - _TC",
 		)
 
-		se2 = make_stock_entry(
+		make_stock_entry(
 			item_code=item_code,
 			posting_date=today(),
 			posting_time="00:00:00",
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index b49fe22..a3166a8 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -232,9 +232,7 @@
 			if not self.serial_and_batch_bundle:
 				self.throw_error_message(f"Serial No / Batch No are mandatory for Item {self.item_code}")
 
-		if (
-			self.serial_and_batch_bundle and not item_detail.has_serial_no and not item_detail.has_batch_no
-		):
+		if self.serial_and_batch_bundle and not item_detail.has_serial_no and not item_detail.has_batch_no:
 			self.throw_error_message(f"Serial No and Batch No are not allowed for Item {self.item_code}")
 
 	def throw_error_message(self, message, exception=frappe.ValidationError):
@@ -262,7 +260,9 @@
 			)
 			if older_than_x_days_ago and stock_settings.stock_auth_role not in frappe.get_roles():
 				frappe.throw(
-					_("Not allowed to update stock transactions older than {0}").format(stock_frozen_upto_days),
+					_("Not allowed to update stock transactions older than {0}").format(
+						stock_frozen_upto_days
+					),
 					StockFreezeError,
 				)
 
@@ -280,7 +280,9 @@
 			expiry_date = frappe.db.get_value("Batch", self.batch_no, "expiry_date")
 			if expiry_date:
 				if getdate(self.posting_date) > getdate(expiry_date):
-					frappe.throw(_("Batch {0} of Item {1} has expired.").format(self.batch_no, self.item_code))
+					frappe.throw(
+						_("Batch {0} of Item {1} has expired.").format(self.batch_no, self.item_code)
+					)
 
 	def validate_and_set_fiscal_year(self):
 		if not self.fiscal_year:
@@ -313,7 +315,7 @@
 					(self.item_code, self.warehouse),
 				)[0][0]
 
-				cur_doc_posting_datetime = "%s %s" % (
+				cur_doc_posting_datetime = "{} {}".format(
 					self.posting_date,
 					self.get("posting_time") or "00:00:00",
 				)
@@ -322,7 +324,9 @@
 					last_transaction_time
 				):
 					msg = _("Last Stock Transaction for item {0} under warehouse {1} was on {2}.").format(
-						frappe.bold(self.item_code), frappe.bold(self.warehouse), frappe.bold(last_transaction_time)
+						frappe.bold(self.item_code),
+						frappe.bold(self.warehouse),
+						frappe.bold(last_transaction_time),
 					)
 
 					msg += "<br><br>" + _(
diff --git a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
index 40a2d5a..6c12b36 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py
@@ -8,7 +8,6 @@
 import frappe
 from frappe.core.page.permission_manager.permission_manager import reset
 from frappe.custom.doctype.property_setter.property_setter import make_property_setter
-from frappe.query_builder.functions import CombineDatetime
 from frappe.tests.utils import FrappeTestCase, change_settings
 from frappe.utils import add_days, add_to_date, flt, today
 
@@ -20,8 +19,6 @@
 )
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
 from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
-	get_batch_from_bundle,
-	get_serial_nos_from_bundle,
 	make_serial_batch_bundle,
 )
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
@@ -40,8 +37,7 @@
 
 		# delete SLE and BINs for all items
 		frappe.db.sql(
-			"delete from `tabStock Ledger Entry` where item_code in (%s)"
-			% (", ".join(["%s"] * len(items))),
+			"delete from `tabStock Ledger Entry` where item_code in (%s)" % (", ".join(["%s"] * len(items))),
 			items,
 		)
 		frappe.db.sql(
@@ -127,7 +123,7 @@
 		self.assertEqual(finished_item_sle.get("valuation_rate"), 540)
 
 		# Reconciliation for _Test Item for Reposting at Stores on 12-04-2020: Qty = 50, Rate = 150
-		sr = create_stock_reconciliation(
+		create_stock_reconciliation(
 			item_code="_Test Item for Reposting",
 			warehouse="Stores - _TC",
 			qty=50,
@@ -491,7 +487,7 @@
 		expected_incoming_rates = expected_abs_svd = [75.0, 125.0, 75.0, 125.0]
 
 		self.assertEqual(expected_abs_svd, svd_list, "Incorrect 'Stock Value Difference' values")
-		for dn, incoming_rate in zip(dns, expected_incoming_rates):
+		for dn, _incoming_rate in zip(dns, expected_incoming_rates, strict=False):
 			self.assertTrue(
 				dn.items[0].incoming_rate in expected_abs_svd,
 				"Incorrect 'Incoming Rate' values fetched for DN items",
@@ -567,9 +563,7 @@
 			],
 		)
 
-		reciept = make_stock_entry(
-			item_code=item_code, target=source, batch_no=batches[0], qty=5, rate=10
-		)
+		reciept = make_stock_entry(item_code=item_code, target=source, batch_no=batches[0], qty=5, rate=10)
 		self.assertSLEs(
 			reciept,
 			[
@@ -691,9 +685,7 @@
 			],
 		)
 
-		consume_today = make_stock_entry(
-			item_code=item_code, source=warehouse, batch_no=batches[0], qty=1
-		)
+		consume_today = make_stock_entry(item_code=item_code, source=warehouse, batch_no=batches[0], qty=1)
 		self.assertSLEs(
 			consume_today,
 			[
@@ -726,8 +718,8 @@
 		item, warehouses, batches = setup_item_valuation_test()
 
 		def check_sle_details_against_expected(sle_details, expected_sle_details, detail, columns):
-			for i, (sle_vals, ex_sle_vals) in enumerate(zip(sle_details, expected_sle_details)):
-				for col, sle_val, ex_sle_val in zip(columns, sle_vals, ex_sle_vals):
+			for i, (sle_vals, ex_sle_vals) in enumerate(zip(sle_details, expected_sle_details, strict=False)):
+				for col, sle_val, ex_sle_val in zip(columns, sle_vals, ex_sle_vals, strict=False):
 					if col == "stock_queue":
 						sle_val = get_stock_value_from_q(sle_val)
 						ex_sle_val = get_stock_value_from_q(ex_sle_val)
@@ -757,9 +749,7 @@
 		se_entry_list_mi = [
 			(item, warehouses[0], None, batches[1], 1, None, "2021-01-29"),
 		]
-		ses = create_stock_entry_entries_for_batchwise_item_valuation_test(
-			se_entry_list_mi, "Material Issue"
-		)
+		ses = create_stock_entry_entries_for_batchwise_item_valuation_test(se_entry_list_mi, "Material Issue")
 		sle_details = fetch_sle_details_for_doc_list(ses, columns=columns, as_dict=0)
 		expected_sle_details = [(-100.0, 50.0, -1.0, 1.0, "[]")]
 		details_list.append((sle_details, expected_sle_details, "Material Issue Entries", columns))
@@ -949,9 +939,7 @@
 
 		rates = [10 * i for i in range(1, 5)]
 
-		receipt = make_stock_entry(
-			item_code=rm.name, target=warehouse, qty=10, do_not_save=True, rate=10
-		)
+		receipt = make_stock_entry(item_code=rm.name, target=warehouse, qty=10, do_not_save=True, rate=10)
 		for rate in rates[1:]:
 			row = frappe.copy_doc(receipt.items[0], ignore_no_copy=False)
 			row.basic_rate = rate
@@ -981,9 +969,7 @@
 		repack.submit()
 
 		# same exact queue should be transferred
-		self.assertSLEs(
-			repack, [{"incoming_rate": sum(rates) * 10}], sle_filters={"item_code": packed.name}
-		)
+		self.assertSLEs(repack, [{"incoming_rate": sum(rates) * 10}], sle_filters={"item_code": packed.name})
 
 	def test_negative_fifo_valuation(self):
 		"""
@@ -993,7 +979,7 @@
 		item = make_item(properties={"allow_negative_stock": 1}).name
 		warehouse = "_Test Warehouse - _TC"
 
-		receipt = make_stock_entry(item_code=item, target=warehouse, qty=10, rate=10)
+		make_stock_entry(item_code=item, target=warehouse, qty=10, rate=10)
 		consume1 = make_stock_entry(item_code=item, source=warehouse, qty=15)
 
 		self.assertSLEs(consume1, [{"stock_value": -5 * 10, "stock_queue": [[-5, 10]]}])
@@ -1033,27 +1019,21 @@
 		self.assertEqual(50, _get_stock_credit(depdendent_consumption))
 
 		# backdated receipt - should trigger GL repost of all previous stock entries
-		bd_receipt = make_stock_entry(
-			item_code=item, to_warehouse=A, qty=5, rate=20, posting_date=_day(-1)
-		)
+		bd_receipt = make_stock_entry(item_code=item, to_warehouse=A, qty=5, rate=20, posting_date=_day(-1))
 		self.assertEqual(100, _get_stock_credit(depdendent_consumption))
 
 		# cancelling receipt should reset it back
 		bd_receipt.cancel()
 		self.assertEqual(50, _get_stock_credit(depdendent_consumption))
 
-		bd_receipt2 = make_stock_entry(
-			item_code=item, to_warehouse=A, qty=2, rate=20, posting_date=_day(-2)
-		)
+		bd_receipt2 = make_stock_entry(item_code=item, to_warehouse=A, qty=2, rate=20, posting_date=_day(-2))
 		# total as per FIFO -> 2 * 20 + 3 * 10 = 70
 		self.assertEqual(70, _get_stock_credit(depdendent_consumption))
 
 		# transfer WIP material to final destination and consume it all
 		depdendent_consumption.cancel()
 		make_stock_entry(item_code=item, from_warehouse=B, to_warehouse=C, qty=5, posting_date=_day(3))
-		final_consumption = make_stock_entry(
-			item_code=item, from_warehouse=C, qty=5, posting_date=_day(4)
-		)
+		final_consumption = make_stock_entry(item_code=item, from_warehouse=C, qty=5, posting_date=_day(4))
 		# exact amount gets consumed
 		self.assertEqual(70, _get_stock_credit(final_consumption))
 
@@ -1120,11 +1100,10 @@
 		self.assertEqual([1], ordered_qty_after_transaction())
 
 	def test_timestamp_clash(self):
-
 		item = make_item().name
 		warehouse = "_Test Warehouse - _TC"
 
-		reciept = make_stock_entry(
+		make_stock_entry(
 			item_code=item,
 			to_warehouse=warehouse,
 			qty=100,
@@ -1133,7 +1112,7 @@
 			posting_time="01:00:00",
 		)
 
-		consumption = make_stock_entry(
+		make_stock_entry(
 			item_code=item,
 			from_warehouse=warehouse,
 			qty=50,
@@ -1152,11 +1131,10 @@
 
 		try:
 			backdated_receipt.cancel()
-		except Exception as e:
+		except Exception:
 			self.fail("Double processing of qty for clashing timestamp.")
 
 	def test_previous_sle_with_clashed_timestamp(self):
-
 		item = make_item().name
 		warehouse = "_Test Warehouse - _TC"
 
@@ -1197,7 +1175,6 @@
 		self.assertEqual(sle[0].actual_qty, 5)
 
 	def test_backdated_sle_with_same_timestamp(self):
-
 		item = make_item().name
 		warehouse = "_Test Warehouse - _TC"
 
@@ -1440,12 +1417,13 @@
 
 
 def setup_item_valuation_test(
-	valuation_method="FIFO", suffix=None, use_batchwise_valuation=1, batches_list=["X", "Y"]
+	valuation_method="FIFO", suffix=None, use_batchwise_valuation=1, batches_list=None
 ):
-	from erpnext.stock.doctype.batch.batch import make_batch
 	from erpnext.stock.doctype.item.test_item import make_item
 	from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
 
+	if batches_list is None:
+		batches_list = ["X", "Y"]
 	if not suffix:
 		suffix = get_unique_suffix()
 
@@ -1459,7 +1437,7 @@
 	for i, batch_id in enumerate(batches):
 		if not frappe.db.exists("Batch", batch_id):
 			ubw = use_batchwise_valuation
-			if isinstance(use_batchwise_valuation, (list, tuple)):
+			if isinstance(use_batchwise_valuation, list | tuple):
 				ubw = use_batchwise_valuation[i]
 			batch = frappe.get_doc(
 				frappe._dict(
@@ -1490,9 +1468,7 @@
 
 	dns = []
 	for item, warehouse, batch_no, qty, rate in dn_entry_list:
-		so = make_sales_order(
-			rate=rate, qty=qty, item=item, warehouse=warehouse, against_blanket_order=0
-		)
+		so = make_sales_order(rate=rate, qty=qty, item=item, warehouse=warehouse, against_blanket_order=0)
 
 		dn = make_delivery_note(so.name)
 
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 0311481..0421f0f 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
-from typing import Optional
 
 import frappe
 from frappe import _, bold, msgprint
@@ -58,7 +57,7 @@
 	# end: auto-generated types
 
 	def __init__(self, *args, **kwargs):
-		super(StockReconciliation, self).__init__(*args, **kwargs)
+		super().__init__(*args, **kwargs)
 		self.head_row = ["Item Code", "Warehouse", "Quantity", "Valuation Rate"]
 
 	def validate(self):
@@ -142,7 +141,9 @@
 						"type_of_transaction": "Outward",
 						"company": self.company,
 						"is_rejected": 0,
-						"serial_nos": get_serial_nos(row.current_serial_no) if row.current_serial_no else None,
+						"serial_nos": get_serial_nos(row.current_serial_no)
+						if row.current_serial_no
+						else None,
 						"batches": frappe._dict({row.batch_no: row.current_qty}) if row.batch_no else None,
 						"batch_no": row.batch_no,
 						"do_not_submit": True,
@@ -327,7 +328,9 @@
 			if not item.batch_no and not item.serial_no:
 				for dimension in get_inventory_dimensions():
 					if item.get(dimension.get("fieldname")):
-						inventory_dimensions_dict[dimension.get("fieldname")] = item.get(dimension.get("fieldname"))
+						inventory_dimensions_dict[dimension.get("fieldname")] = item.get(
+							dimension.get("fieldname")
+						)
 
 			item_dict = get_stock_balance_for(
 				item.item_code,
@@ -432,11 +435,17 @@
 
 			# do not allow negative valuation
 			if flt(row.valuation_rate) < 0:
-				self.validation_messages.append(_get_msg(row_num, _("Negative Valuation Rate is not allowed")))
+				self.validation_messages.append(
+					_get_msg(row_num, _("Negative Valuation Rate is not allowed"))
+				)
 
 			if row.qty and row.valuation_rate in ["", None]:
 				row.valuation_rate = get_stock_balance(
-					row.item_code, row.warehouse, self.posting_date, self.posting_time, with_valuation_rate=True
+					row.item_code,
+					row.warehouse,
+					self.posting_date,
+					self.posting_time,
+					with_valuation_rate=True,
 				)[1]
 				if not row.valuation_rate:
 					# try if there is a buying price list in default currency
@@ -508,7 +517,7 @@
 			else:
 				items_html = ""
 				for d in data:
-					items_html += "<li>{0} units of Item {1} in Warehouse {2}</li>".format(
+					items_html += "<li>{} units of Item {} in Warehouse {}</li>".format(
 						bold(d[2]), bold(d[0]), bold(d[1])
 					)
 
@@ -528,7 +537,6 @@
 
 		sl_entries = []
 		for row in self.items:
-
 			if not row.qty and not row.valuation_rate and not row.current_qty:
 				self.make_adjustment_entry(row, sl_entries)
 				continue
@@ -578,9 +586,7 @@
 				sl_entries.append(self.get_sle_for_items(row))
 
 		if sl_entries:
-			allow_negative_stock = cint(
-				frappe.db.get_single_value("Stock Settings", "allow_negative_stock")
-			)
+			allow_negative_stock = cint(frappe.db.get_single_value("Stock Settings", "allow_negative_stock"))
 			self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock)
 
 	def make_adjustment_entry(self, row, sl_entries):
@@ -688,9 +694,7 @@
 				data.valuation_rate = flt(row.valuation_rate)
 				data.stock_value_difference = -1 * flt(row.amount_difference)
 
-		elif (
-			self.docstatus == 1 and has_dimensions and (not row.batch_no or not row.serial_and_batch_bundle)
-		):
+		elif self.docstatus == 1 and has_dimensions and (not row.batch_no or not row.serial_and_batch_bundle):
 			data.actual_qty = row.qty
 			data.qty_after_transaction = 0.0
 			data.incoming_rate = flt(row.valuation_rate)
@@ -711,9 +715,7 @@
 				sl_entries = self.merge_similar_item_serial_nos(sl_entries)
 
 			sl_entries.reverse()
-			allow_negative_stock = cint(
-				frappe.db.get_single_value("Stock Settings", "allow_negative_stock")
-			)
+			allow_negative_stock = cint(frappe.db.get_single_value("Stock Settings", "allow_negative_stock"))
 			self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock)
 
 	def merge_similar_item_serial_nos(self, sl_entries):
@@ -750,9 +752,7 @@
 		if not self.cost_center:
 			msgprint(_("Please enter Cost Center"), raise_exception=1)
 
-		return super(StockReconciliation, self).get_gl_entries(
-			warehouse_account, self.expense_account, self.cost_center
-		)
+		return super().get_gl_entries(warehouse_account, self.expense_account, self.cost_center)
 
 	def validate_expense_account(self):
 		if not cint(erpnext.is_perpetual_inventory_enabled(self.company)):
@@ -851,7 +851,12 @@
 				val_rate = item_dict.get("rate")
 			elif row.batch_no:
 				current_qty = get_batch_qty_for_stock_reco(
-					row.item_code, row.warehouse, row.batch_no, self.posting_date, self.posting_time, self.name
+					row.item_code,
+					row.warehouse,
+					row.batch_no,
+					self.posting_date,
+					self.posting_time,
+					self.name,
 				)
 
 			precesion = row.precision("current_qty")
@@ -986,9 +991,7 @@
 		return current_qty
 
 
-def get_batch_qty_for_stock_reco(
-	item_code, warehouse, batch_no, posting_date, posting_time, voucher_no
-):
+def get_batch_qty_for_stock_reco(item_code, warehouse, batch_no, posting_date, posting_time, voucher_no):
 	ledger = frappe.qb.DocType("Stock Ledger Entry")
 
 	query = (
@@ -1018,9 +1021,7 @@
 
 
 @frappe.whitelist()
-def get_items(
-	warehouse, posting_date, posting_time, company, item_code=None, ignore_empty_stock=False
-):
+def get_items(warehouse, posting_date, posting_time, company, item_code=None, ignore_empty_stock=False):
 	ignore_empty_stock = cint(ignore_empty_stock)
 	items = [frappe._dict({"item_code": item_code, "warehouse": warehouse})]
 
@@ -1175,15 +1176,13 @@
 	warehouse: str,
 	posting_date,
 	posting_time,
-	batch_no: Optional[str] = None,
+	batch_no: str | None = None,
 	with_valuation_rate: bool = True,
 	inventory_dimensions_dict=None,
 ):
 	frappe.has_permission("Stock Reconciliation", "write", throw=True)
 
-	item_dict = frappe.get_cached_value(
-		"Item", item_code, ["has_serial_no", "has_batch_no"], as_dict=1
-	)
+	item_dict = frappe.get_cached_value("Item", item_code, ["has_serial_no", "has_batch_no"], as_dict=1)
 
 	if not item_dict:
 		# In cases of data upload to Items table
@@ -1222,9 +1221,7 @@
 		qty, rate = data
 
 	if item_dict.get("has_batch_no"):
-		qty = (
-			get_batch_qty(batch_no, warehouse, posting_date=posting_date, posting_time=posting_time) or 0
-		)
+		qty = get_batch_qty(batch_no, warehouse, posting_date=posting_date, posting_time=posting_time) or 0
 
 	return {
 		"qty": qty,
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index 479a74a..0ffcdd5 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -7,7 +7,7 @@
 
 import frappe
 from frappe.tests.utils import FrappeTestCase, change_settings
-from frappe.utils import add_days, cstr, flt, nowdate, nowtime, random_string
+from frappe.utils import add_days, cstr, flt, nowdate, nowtime
 
 from erpnext.accounts.utils import get_stock_and_account_balance
 from erpnext.stock.doctype.item.test_item import create_item
@@ -17,7 +17,6 @@
 	get_serial_nos_from_bundle,
 	make_serial_batch_bundle,
 )
-from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
 from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import (
 	EmptyStockReconciliationItemsError,
 	get_items,
@@ -106,7 +105,8 @@
 				# no gl entries
 				self.assertTrue(
 					frappe.db.get_value(
-						"Stock Ledger Entry", {"voucher_type": "Stock Reconciliation", "voucher_no": stock_reco.name}
+						"Stock Ledger Entry",
+						{"voucher_type": "Stock Reconciliation", "voucher_no": stock_reco.name},
 					)
 				)
 
@@ -152,7 +152,6 @@
 
 	def test_stock_reco_for_serialized_item(self):
 		to_delete_records = []
-		to_delete_serial_nos = []
 
 		# Add new serial nos
 		serial_item_code = "Stock-Reco-Serial-Item-1"
@@ -344,9 +343,7 @@
 
 	def test_customer_provided_items(self):
 		item_code = "Stock-Reco-customer-Item-100"
-		create_item(
-			item_code, is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0
-		)
+		create_item(item_code, is_customer_provided_item=1, customer="_Test Customer", is_purchase_item=0)
 
 		sr = create_stock_reconciliation(item_code=item_code, qty=10, rate=420)
 
@@ -529,18 +526,18 @@
 		item_code = self.make_item().name
 		warehouse = "_Test Warehouse - _TC"
 
-		sr = create_stock_reconciliation(
+		create_stock_reconciliation(
 			item_code=item_code, warehouse=warehouse, qty=10, rate=100, posting_date=add_days(nowdate(), 10)
 		)
 
-		dn = create_delivery_note(
+		create_delivery_note(
 			item_code=item_code, warehouse=warehouse, qty=5, rate=120, posting_date=add_days(nowdate(), 12)
 		)
 		old_bin_qty = frappe.db.get_value(
 			"Bin", {"item_code": item_code, "warehouse": warehouse}, "actual_qty"
 		)
 
-		sr2 = create_stock_reconciliation(
+		create_stock_reconciliation(
 			item_code=item_code, warehouse=warehouse, qty=11, rate=100, posting_date=add_days(nowdate(), 11)
 		)
 		new_bin_qty = frappe.db.get_value(
@@ -760,8 +757,6 @@
 		self.assertEqual(flt(sle[0].actual_qty), flt(-100.0))
 
 	def test_backdated_stock_reco_entry_with_batch(self):
-		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
-
 		item_code = self.make_item(
 			"Test New Batch Item ABCVSD",
 			{
@@ -813,7 +808,7 @@
 		)
 
 		stock_reco1.reload()
-		new_batch_no = get_batch_from_bundle(stock_reco1.items[0].serial_and_batch_bundle)
+		get_batch_from_bundle(stock_reco1.items[0].serial_and_batch_bundle)
 
 		self.assertEqual(len(sles), 2)
 
@@ -828,7 +823,7 @@
 		warehouse = "_Test Warehouse - _TC"
 
 		# Stock Value => 100 * 100 = 10000
-		se = make_stock_entry(
+		make_stock_entry(
 			item_code=item_code,
 			target=warehouse,
 			qty=100,
@@ -988,9 +983,7 @@
 				self.assertEqual(d.actual_qty, 5.0)
 				self.assertAlmostEqual(d.stock_value_difference, 500.0)
 
-		active_serial_no = frappe.get_all(
-			"Serial No", filters={"status": "Active", "item_code": item_code}
-		)
+		active_serial_no = frappe.get_all("Serial No", filters={"status": "Active", "item_code": item_code})
 		self.assertEqual(len(active_serial_no), 5)
 
 
@@ -1083,9 +1076,7 @@
 			)
 		)
 		if frappe.get_all("Stock Ledger Entry", {"company": sr.company})
-		else frappe.get_cached_value(
-			"Account", {"account_type": "Temporary", "company": sr.company}, "name"
-		)
+		else frappe.get_cached_value("Account", {"account_type": "Temporary", "company": sr.company}, "name")
 	)
 	sr.cost_center = (
 		args.cost_center
diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
index 26fe8e1..91a7375 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
@@ -153,7 +153,7 @@
 		if self.reservation_based_on == "Qty":
 			self.validate_with_allowed_qty(self.reserved_qty)
 
-	def auto_reserve_serial_and_batch(self, based_on: str = None) -> None:
+	def auto_reserve_serial_and_batch(self, based_on: str | None = None) -> None:
 		"""Auto pick Serial and Batch Nos to reserve when `Reservation Based On` is `Serial and Batch`."""
 
 		if (
@@ -272,9 +272,7 @@
 					if cint(frappe.db.get_value("Batch", entry.batch_no, "disabled")):
 						msg = _(
 							"Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}."
-						).format(
-							entry.idx, frappe.bold(self.item_code), frappe.bold(entry.batch_no)
-						)
+						).format(entry.idx, frappe.bold(self.item_code), frappe.bold(entry.batch_no))
 						frappe.throw(msg)
 
 					available_qty_to_reserve = get_available_qty_to_reserve(
@@ -360,9 +358,7 @@
 	) -> None:
 		"""Updates total reserved qty in the Pick List."""
 
-		if (
-			self.from_voucher_type == "Pick List" and self.from_voucher_no and self.from_voucher_detail_no
-		):
+		if self.from_voucher_type == "Pick List" and self.from_voucher_no and self.from_voucher_detail_no:
 			sre = frappe.qb.DocType("Stock Reservation Entry")
 			reserved_qty = (
 				frappe.qb.from_(sre)
@@ -390,7 +386,7 @@
 		bin_doc = frappe.get_cached_doc("Bin", bin_name)
 		bin_doc.update_reserved_stock()
 
-	def update_status(self, status: str = None, update_modified: bool = True) -> None:
+	def update_status(self, status: str | None = None, update_modified: bool = True) -> None:
 		"""Updates status based on Voucher Qty, Reserved Qty and Delivered Qty."""
 
 		if not status:
@@ -448,9 +444,7 @@
 			)
 			voucher_delivered_qty = flt(delivered_qty) * flt(conversion_factor)
 
-		allowed_qty = min(
-			self.available_qty, (self.voucher_qty - voucher_delivered_qty - total_reserved_qty)
-		)
+		allowed_qty = min(self.available_qty, (self.voucher_qty - voucher_delivered_qty - total_reserved_qty))
 
 		if self.get("_action") != "submit" and self.voucher_type == "Sales Order" and allowed_qty <= 0:
 			msg = _("Item {0} is already reserved/delivered against Sales Order {1}.").format(
@@ -466,16 +460,16 @@
 		if qty_to_be_reserved > allowed_qty:
 			actual_qty = get_stock_balance(self.item_code, self.warehouse)
 			msg = """
-				Cannot reserve more than Allowed Qty {0} {1} for Item {2} against {3} {4}.<br /><br />
+				Cannot reserve more than Allowed Qty {} {} for Item {} against {} {}.<br /><br />
 				The <b>Allowed Qty</b> is calculated as follows:<br />
 				<ul>
-					<li>Actual Qty [Available Qty at Warehouse] = {5}</li>
-					<li>Reserved Stock [Ignore current SRE] = {6}</li>
-					<li>Available Qty To Reserve [Actual Qty - Reserved Stock] = {7}</li>
-					<li>Voucher Qty [Voucher Item Qty] = {8}</li>
-					<li>Delivered Qty [Qty delivered against the Voucher Item] = {9}</li>
-					<li>Total Reserved Qty [Qty reserved against the Voucher Item] = {10}</li>
-					<li>Allowed Qty [Minimum of (Available Qty To Reserve, (Voucher Qty - Delivered Qty - Total Reserved Qty))] = {11}</li>
+					<li>Actual Qty [Available Qty at Warehouse] = {}</li>
+					<li>Reserved Stock [Ignore current SRE] = {}</li>
+					<li>Available Qty To Reserve [Actual Qty - Reserved Stock] = {}</li>
+					<li>Voucher Qty [Voucher Item Qty] = {}</li>
+					<li>Delivered Qty [Qty delivered against the Voucher Item] = {}</li>
+					<li>Total Reserved Qty [Qty reserved against the Voucher Item] = {}</li>
+					<li>Allowed Qty [Minimum of (Available Qty To Reserve, (Voucher Qty - Delivered Qty - Total Reserved Qty))] = {}</li>
 				</ul>
 			""".format(
 				frappe.bold(allowed_qty),
@@ -511,14 +505,12 @@
 	allowed_voucher_types = ["Sales Order"]
 
 	if voucher.doctype not in allowed_voucher_types:
-		msg = _("Stock Reservation can only be created against {0}.").format(
-			", ".join(allowed_voucher_types)
-		)
+		msg = _("Stock Reservation can only be created against {0}.").format(", ".join(allowed_voucher_types))
 		frappe.throw(msg)
 
 
 def get_available_qty_to_reserve(
-	item_code: str, warehouse: str, batch_no: str = None, ignore_sre=None
+	item_code: str, warehouse: str, batch_no: str | None = None, ignore_sre=None
 ) -> float:
 	"""Returns `Available Qty to Reserve (Actual Qty - Reserved Qty)` for Item, Warehouse and Batch combination."""
 
@@ -611,7 +603,7 @@
 	return available_serial_nos_list
 
 
-def get_sre_reserved_qty_for_item_and_warehouse(item_code: str, warehouse: str = None) -> float:
+def get_sre_reserved_qty_for_item_and_warehouse(item_code: str, warehouse: str | None = None) -> float:
 	"""Returns current `Reserved Qty` for Item and Warehouse combination."""
 
 	sre = frappe.qb.DocType("Stock Reservation Entry")
@@ -635,7 +627,7 @@
 
 
 def get_sre_reserved_qty_for_items_and_warehouses(
-	item_code_list: list, warehouse_list: list = None
+	item_code_list: list, warehouse_list: list | None = None
 ) -> dict:
 	"""Returns a dict like {("item_code", "warehouse"): "reserved_qty", ... }."""
 
@@ -689,7 +681,7 @@
 
 
 def get_sre_reserved_warehouses_for_voucher(
-	voucher_type: str, voucher_no: str, voucher_detail_no: str = None
+	voucher_type: str, voucher_no: str, voucher_detail_no: str | None = None
 ) -> list:
 	"""Returns a list of warehouses where the stock is reserved for the provided voucher."""
 
@@ -744,7 +736,7 @@
 
 
 def get_sre_reserved_serial_nos_details(
-	item_code: str, warehouse: str, serial_nos: list = None
+	item_code: str, warehouse: str, serial_nos: list | None = None
 ) -> dict:
 	"""Returns a dict of `Serial No` reserved in Stock Reservation Entry. The dict is like {serial_no: sre_name, ...}"""
 
@@ -772,9 +764,7 @@
 	return frappe._dict(query.run())
 
 
-def get_sre_reserved_batch_nos_details(
-	item_code: str, warehouse: str, batch_nos: list = None
-) -> dict:
+def get_sre_reserved_batch_nos_details(item_code: str, warehouse: str, batch_nos: list | None = None) -> dict:
 	"""Returns a dict of `Batch Qty` reserved in Stock Reservation Entry. The dict is like {batch_no: qty, ...}"""
 
 	sre = frappe.qb.DocType("Stock Reservation Entry")
@@ -849,9 +839,7 @@
 			sb_entry.batch_no,
 			(sb_entry.qty - sb_entry.delivered_qty).as_("qty"),
 		)
-		.where(
-			(sre.docstatus == 1) & (sre.name == sre_name) & (sre.status.notin(["Delivered", "Cancelled"]))
-		)
+		.where((sre.docstatus == 1) & (sre.name == sre_name) & (sre.status.notin(["Delivered", "Cancelled"])))
 		.where(sb_entry.qty > sb_entry.delivered_qty)
 		.orderby(sb_entry.creation)
 	).run(as_dict=True)
@@ -880,7 +868,7 @@
 		return bundle.name
 
 
-def has_reserved_stock(voucher_type: str, voucher_no: str, voucher_detail_no: str = None) -> bool:
+def has_reserved_stock(voucher_type: str, voucher_no: str, voucher_detail_no: str | None = None) -> bool:
 	"""Returns True if there is any Stock Reservation Entry for the given voucher."""
 
 	if get_stock_reservation_entries_for_voucher(
@@ -893,7 +881,7 @@
 
 def create_stock_reservation_entries_for_so_items(
 	sales_order: object,
-	items_details: list[dict] = None,
+	items_details: list[dict] | None = None,
 	from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
 	notify=True,
 ) -> None:
@@ -914,9 +902,7 @@
 
 	validate_stock_reservation_settings(sales_order)
 
-	allow_partial_reservation = frappe.db.get_single_value(
-		"Stock Settings", "allow_partial_reservation"
-	)
+	allow_partial_reservation = frappe.db.get_single_value("Stock Settings", "allow_partial_reservation")
 
 	items = []
 	if items_details:
@@ -1041,7 +1027,9 @@
 			# Skip the item if `Partial Reservation` is disabled in the Stock Settings.
 			if not allow_partial_reservation:
 				if qty_to_be_reserved == flt(item.get("qty_to_reserve")):
-					msg = _("Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.")
+					msg = _(
+						"Enable Allow Partial Reservation in the Stock Settings to reserve partial stock."
+					)
 					frappe.msgprint(msg, title=_("Partial Stock Reservation"), indicator="yellow")
 
 				continue
@@ -1099,13 +1087,13 @@
 
 
 def cancel_stock_reservation_entries(
-	voucher_type: str = None,
-	voucher_no: str = None,
-	voucher_detail_no: str = None,
+	voucher_type: str | None = None,
+	voucher_no: str | None = None,
+	voucher_detail_no: str | None = None,
 	from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
-	from_voucher_no: str = None,
-	from_voucher_detail_no: str = None,
-	sre_list: list = None,
+	from_voucher_no: str | None = None,
+	from_voucher_detail_no: str | None = None,
+	sre_list: list | None = None,
 	notify: bool = True,
 ) -> None:
 	"""Cancel Stock Reservation Entries."""
@@ -1151,8 +1139,8 @@
 def get_stock_reservation_entries_for_voucher(
 	voucher_type: str,
 	voucher_no: str,
-	voucher_detail_no: str = None,
-	fields: list[str] = None,
+	voucher_detail_no: str | None = None,
+	fields: list[str] | None = None,
 	ignore_status: bool = False,
 ) -> list[dict]:
 	"""Returns list of Stock Reservation Entries against a Voucher."""
@@ -1171,9 +1159,7 @@
 	sre = frappe.qb.DocType("Stock Reservation Entry")
 	query = (
 		frappe.qb.from_(sre)
-		.where(
-			(sre.docstatus == 1) & (sre.voucher_type == voucher_type) & (sre.voucher_no == voucher_no)
-		)
+		.where((sre.docstatus == 1) & (sre.voucher_type == voucher_type) & (sre.voucher_no == voucher_no))
 		.orderby(sre.creation)
 	)
 
diff --git a/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
index dd023e2..ddbf0b2 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
@@ -25,9 +25,7 @@
 	def setUp(self) -> None:
 		self.warehouse = "_Test Warehouse - _TC"
 		self.sr_item = make_item(properties={"is_stock_item": 1, "valuation_rate": 100})
-		create_material_receipt(
-			items={self.sr_item.name: self.sr_item}, warehouse=self.warehouse, qty=100
-		)
+		create_material_receipt(items={self.sr_item.name: self.sr_item}, warehouse=self.warehouse, qty=100)
 
 	@change_settings("Stock Settings", {"allow_negative_stock": 0})
 	def test_validate_stock_reservation_settings(self) -> None:
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py
index d975c29..7fcda1d 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.py
@@ -112,9 +112,9 @@
 		for field in warehouse_fields:
 			if frappe.db.get_value("Warehouse", self.get(field), "is_group"):
 				frappe.throw(
-					_("Group Warehouses cannot be used in transactions. Please change the value of {0}").format(
-						frappe.bold(self.meta.get_field(field).label)
-					),
+					_(
+						"Group Warehouses cannot be used in transactions. Please change the value of {0}"
+					).format(frappe.bold(self.meta.get_field(field).label)),
 					title=_("Incorrect Warehouse"),
 				)
 
@@ -160,7 +160,6 @@
 
 		# Change in value of `Allow Negative Stock`
 		if self.has_value_changed("allow_negative_stock"):
-
 			# Disable -> Enable: Don't allow if `Stock Reservation` is enabled
 			if self.allow_negative_stock and self.enable_stock_reservation:
 				frappe.throw(
@@ -171,10 +170,8 @@
 
 		# Change in value of `Enable Stock Reservation`
 		if self.has_value_changed("enable_stock_reservation"):
-
 			# Disable -> Enable
 			if self.enable_stock_reservation:
-
 				# Don't allow if `Allow Negative Stock` is enabled
 				if self.allow_negative_stock:
 					frappe.throw(
@@ -190,7 +187,10 @@
 					precision = frappe.db.get_single_value("System Settings", "float_precision") or 3
 					bin = frappe.qb.DocType("Bin")
 					bin_with_negative_stock = (
-						frappe.qb.from_(bin).select(bin.name).where(Round(bin.actual_qty, precision) < 0).limit(1)
+						frappe.qb.from_(bin)
+						.select(bin.name)
+						.where(Round(bin.actual_qty, precision) < 0)
+						.limit(1)
 					).run()
 
 					if bin_with_negative_stock:
diff --git a/erpnext/stock/doctype/stock_settings/test_stock_settings.py b/erpnext/stock/doctype/stock_settings/test_stock_settings.py
index cda739e..4b5ae43 100644
--- a/erpnext/stock/doctype/stock_settings/test_stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/test_stock_settings.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
 # See license.txt
 
-import unittest
 
 import frappe
 from frappe.tests.utils import FrappeTestCase
diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py
index 5a7228a..02d64ca 100644
--- a/erpnext/stock/doctype/warehouse/test_warehouse.py
+++ b/erpnext/stock/doctype/warehouse/test_warehouse.py
@@ -58,7 +58,7 @@
 			warehouse_ids.append(warehouse_id)
 
 		item_names = [f"_Test Item {i} for Unlinking" for i in range(2)]
-		for item, warehouse in zip(item_names, warehouse_ids):
+		for item, warehouse in zip(item_names, warehouse_ids, strict=False):
 			create_item(item, warehouse=warehouse, company=company)
 
 		# Delete warehouses
@@ -78,7 +78,6 @@
 				)
 
 	def test_group_non_group_conversion(self):
-
 		warehouse = frappe.get_doc("Warehouse", create_warehouse("TestGroupConversion"))
 
 		convert_to_group_or_ledger(warehouse.name)
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 07b354a..00ed00b 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -55,9 +55,7 @@
 
 	def onload(self):
 		"""load account name for General Ledger Report"""
-		if self.company and cint(
-			frappe.db.get_value("Company", self.company, "enable_perpetual_inventory")
-		):
+		if self.company and cint(frappe.db.get_value("Company", self.company, "enable_perpetual_inventory")):
 			account = self.account or get_warehouse_account(self)
 
 			if account:
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index d09282d..ee2f9cb 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -156,19 +156,14 @@
 
 
 def update_bin_details(args, out, doc):
-	if (
-		args.get("doctype") == "Material Request"
-		and args.get("material_request_type") == "Material Transfer"
-	):
+	if args.get("doctype") == "Material Request" and args.get("material_request_type") == "Material Transfer":
 		out.update(get_bin_details(args.item_code, args.get("from_warehouse")))
 
 	elif out.get("warehouse"):
 		company = args.company if (doc and doc.get("doctype") == "Purchase Order") else None
 
 		# calculate company_total_stock only for po
-		bin_details = get_bin_details(
-			args.item_code, out.warehouse, company, include_child_warehouses=True
-		)
+		bin_details = get_bin_details(args.item_code, out.warehouse, company, include_child_warehouses=True)
 
 		out.update(bin_details)
 
@@ -274,9 +269,7 @@
 	if not item:
 		item = frappe.get_doc("Item", args.get("item_code"))
 
-	if (
-		item.variant_of and not item.taxes and frappe.db.exists("Item Tax", {"parent": item.variant_of})
-	):
+	if item.variant_of and not item.taxes and frappe.db.exists("Item Tax", {"parent": item.variant_of}):
 		item.update_template_tables()
 
 	item_defaults = get_item_defaults(item.name, args.company)
@@ -321,9 +314,7 @@
 	# Set stock UOM in args, so that it can be used while fetching item price
 	args.stock_uom = item.stock_uom
 
-	if args.get("batch_no") and item.name != frappe.get_cached_value(
-		"Batch", args.get("batch_no"), "item"
-	):
+	if args.get("batch_no") and item.name != frappe.get_cached_value("Batch", args.get("batch_no"), "item"):
 		args["batch_no"] = ""
 
 	out = frappe._dict(
@@ -344,9 +335,7 @@
 			"provisional_expense_account": get_provisional_account(
 				args, item_defaults, item_group_defaults, brand_defaults
 			),
-			"cost_center": get_default_cost_center(
-				args, item_defaults, item_group_defaults, brand_defaults
-			),
+			"cost_center": get_default_cost_center(args, item_defaults, item_group_defaults, brand_defaults),
 			"has_serial_no": item.has_serial_no,
 			"has_batch_no": item.has_batch_no,
 			"batch_no": args.get("batch_no"),
@@ -372,9 +361,7 @@
 			if args.get("doctype") in ["Sales Order", "Sales Invoice"]
 			else 0,
 			"is_fixed_asset": item.is_fixed_asset,
-			"last_purchase_rate": item.last_purchase_rate
-			if args.get("doctype") in ["Purchase Order"]
-			else 0,
+			"last_purchase_rate": item.last_purchase_rate if args.get("doctype") in ["Purchase Order"] else 0,
 			"transaction_date": args.get("transaction_date"),
 			"against_blanket_order": args.get("against_blanket_order"),
 			"bom_no": item.get("default_bom"),
@@ -510,9 +497,7 @@
 
 	itemwise_barcode = {}
 	for item in items_list:
-		barcodes = frappe.db.get_all(
-			"Item Barcode", filters={"parent": item.item_code}, fields="barcode"
-		)
+		barcodes = frappe.db.get_all("Item Barcode", filters={"parent": item.item_code}, fields="barcode")
 
 		for barcode in barcodes:
 			if item.item_code not in itemwise_barcode:
@@ -532,13 +517,13 @@
 	if item_rates is None:
 		item_rates = {}
 
-	if isinstance(item_codes, (str,)):
+	if isinstance(item_codes, str):
 		item_codes = json.loads(item_codes)
 
-	if isinstance(item_rates, (str,)):
+	if isinstance(item_rates, str):
 		item_rates = json.loads(item_rates)
 
-	if isinstance(item_tax_templates, (str,)):
+	if isinstance(item_tax_templates, str):
 		item_tax_templates = json.loads(item_tax_templates)
 
 	for item_code in item_codes:
@@ -606,9 +591,7 @@
 				taxes_with_no_validity.append(tax)
 
 	if taxes_with_validity:
-		taxes = sorted(
-			taxes_with_validity, key=lambda i: i.valid_from or tax.maximum_net_rate, reverse=True
-		)
+		taxes = sorted(taxes_with_validity, key=lambda i: i.valid_from or tax.maximum_net_rate, reverse=True)
 	else:
 		taxes = taxes_with_no_validity
 
@@ -761,7 +744,7 @@
 
 	elif not cost_center and args.get("item_code") and company:
 		for method in ["get_item_defaults", "get_item_group_defaults", "get_brand_defaults"]:
-			path = "erpnext.stock.get_item_details.{0}".format(method)
+			path = f"erpnext.stock.get_item_details.{method}"
 			data = frappe.get_attr(path)(args.get("item_code"), company)
 
 			if data and (data.selling_cost_center or data.buying_cost_center):
@@ -776,11 +759,7 @@
 	if not cost_center and args.get("cost_center"):
 		cost_center = args.get("cost_center")
 
-	if (
-		company
-		and cost_center
-		and frappe.get_cached_value("Cost Center", cost_center, "company") != company
-	):
+	if company and cost_center and frappe.get_cached_value("Cost Center", cost_center, "company") != company:
 		return None
 
 	if not cost_center and company:
@@ -790,11 +769,7 @@
 
 
 def get_default_supplier(args, item, item_group, brand):
-	return (
-		item.get("default_supplier")
-		or item_group.get("default_supplier")
-		or brand.get("default_supplier")
-	)
+	return item.get("default_supplier") or item_group.get("default_supplier") or brand.get("default_supplier")
 
 
 def get_price_list_rate(args, item_doc, out=None):
@@ -829,9 +804,7 @@
 			if not price_list_rate:
 				return out
 
-		out.price_list_rate = (
-			flt(price_list_rate) * flt(args.plc_conversion_rate) / flt(args.conversion_rate)
-		)
+		out.price_list_rate = flt(price_list_rate) * flt(args.plc_conversion_rate) / flt(args.conversion_rate)
 
 		if frappe.db.get_single_value("Buying Settings", "disable_last_purchase_rate"):
 			return out
@@ -846,9 +819,7 @@
 
 def insert_item_price(args):
 	"""Insert Item Price if Price List and Price List Rate are specified and currency is the same"""
-	if frappe.db.get_value(
-		"Price List", args.price_list, "currency", cache=True
-	) == args.currency and cint(
+	if frappe.db.get_value("Price List", args.price_list, "currency", cache=True) == args.currency and cint(
 		frappe.db.get_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing")
 	):
 		if frappe.has_permission("Item Price", "write"):
@@ -870,7 +841,9 @@
 				):
 					frappe.db.set_value("Item Price", item_price.name, "price_list_rate", price_list_rate)
 					frappe.msgprint(
-						_("Item Price updated for {0} in Price List {1}").format(args.item_code, args.price_list),
+						_("Item Price updated for {0} in Price List {1}").format(
+							args.item_code, args.price_list
+						),
 						alert=True,
 					)
 			else:
@@ -1011,11 +984,7 @@
 	if not args.conversion_rate and args.currency == company_currency:
 		args.conversion_rate = 1.0
 
-	if (
-		not args.ignore_conversion_rate
-		and args.conversion_rate == 1
-		and args.currency != company_currency
-	):
+	if not args.ignore_conversion_rate and args.conversion_rate == 1 and args.currency != company_currency:
 		args.conversion_rate = (
 			get_exchange_rate(args.currency, company_currency, args.transaction_date, "for_buying") or 1.0
 		)
@@ -1050,7 +1019,9 @@
 			if meta.get_field("plc_conversion_rate"):
 				args.plc_conversion_rate = flt(
 					args.plc_conversion_rate,
-					get_field_precision(meta.get_field("plc_conversion_rate"), frappe._dict({"fields": args})),
+					get_field_precision(
+						meta.get_field("plc_conversion_rate"), frappe._dict({"fields": args})
+					),
 				)
 
 
@@ -1288,9 +1259,7 @@
 	company_currency = get_company_currency(args.company)
 
 	if (not plc_conversion_rate) or (
-		price_list_currency
-		and args.price_list_currency
-		and price_list_currency != args.price_list_currency
+		price_list_currency and args.price_list_currency and price_list_currency != args.price_list_currency
 	):
 		# cksgb 19/09/2016: added args.transaction_date as posting_date argument for get_exchange_rate
 		plc_conversion_rate = (
@@ -1312,9 +1281,7 @@
 @frappe.whitelist()
 def get_default_bom(item_code=None):
 	def _get_bom(item):
-		bom = frappe.get_all(
-			"BOM", dict(item=item, is_active=True, is_default=True, docstatus=1), limit=1
-		)
+		bom = frappe.get_all("BOM", dict(item=item, is_active=True, is_default=True, docstatus=1), limit=1)
 		return bom[0].name if bom else None
 
 	if not item_code:
@@ -1354,7 +1321,7 @@
 		pi_item = frappe.qb.DocType("Purchase Invoice Item")
 		valuation_rate = (
 			frappe.qb.from_(pi_item)
-			.select((Sum(pi_item.base_net_amount) / Sum(pi_item.qty * pi_item.conversion_factor)))
+			.select(Sum(pi_item.base_net_amount) / Sum(pi_item.qty * pi_item.conversion_factor))
 			.where((pi_item.docstatus == 1) & (pi_item.item_code == item_code))
 		).run()
 
diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py
index 59f8b20..a24e852 100644
--- a/erpnext/stock/reorder_item.py
+++ b/erpnext/stock/reorder_item.py
@@ -58,9 +58,7 @@
 				item_warehouse_projected_qty.get(kwargs.item_code, {}).get(kwargs.warehouse_group)
 			)
 		else:
-			projected_qty = flt(
-				item_warehouse_projected_qty.get(kwargs.item_code, {}).get(kwargs.warehouse)
-			)
+			projected_qty = flt(item_warehouse_projected_qty.get(kwargs.item_code, {}).get(kwargs.warehouse))
 
 		if (reorder_level or reorder_qty) and projected_qty <= reorder_level:
 			deficiency = reorder_level - projected_qty
@@ -188,13 +186,12 @@
 
 	for item_code, warehouse, projected_qty in frappe.db.sql(
 		"""select item_code, warehouse, projected_qty
-		from tabBin where item_code in ({0})
+		from tabBin where item_code in ({})
 			and (warehouse != '' and warehouse is not null)""".format(
 			", ".join(["%s"] * len(items_to_consider))
 		),
 		items_to_consider,
 	):
-
 		if item_code not in item_warehouse_projected_qty:
 			item_warehouse_projected_qty.setdefault(item_code, {})
 
@@ -242,7 +239,9 @@
 					{
 						"company": company,
 						"transaction_date": nowdate(),
-						"material_request_type": "Material Transfer" if request_type == "Transfer" else request_type,
+						"material_request_type": "Material Transfer"
+						if request_type == "Transfer"
+						else request_type,
 					}
 				)
 
@@ -257,7 +256,9 @@
 						if uom != item.stock_uom:
 							conversion_factor = (
 								frappe.db.get_value(
-									"UOM Conversion Detail", {"parent": item.name, "uom": uom}, "conversion_factor"
+									"UOM Conversion Detail",
+									{"parent": item.name, "uom": uom},
+									"conversion_factor",
 								)
 								or 1.0
 							)
@@ -323,9 +324,7 @@
 
 		msg = frappe.render_template("templates/emails/reorder_item.html", {"mr_list": mr_list})
 
-		frappe.sendmail(
-			recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg
-		)
+		frappe.sendmail(recipients=email_list, subject=_("Auto Material Requests Generated"), message=msg)
 
 
 def get_email_list(company):
@@ -378,7 +377,7 @@
 	for exception in exceptions_list:
 		try:
 			exception = json.loads(exception)
-			error_message = """<div class='small text-muted'>{0}</div><br>""".format(
+			error_message = """<div class='small text-muted'>{}</div><br>""".format(
 				_(exception.get("message"))
 			)
 			content += error_message
diff --git a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py
index 5661e8b..3820b3e 100644
--- a/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py
+++ b/erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py
@@ -28,15 +28,15 @@
 
 
 def get_columns():
-	return (
-		[_("Item") + ":Link/Item:150"]
-		+ [_("Item Name") + "::150"]
-		+ [_("Batch") + ":Link/Batch:150"]
-		+ [_("Stock UOM") + ":Link/UOM:100"]
-		+ [_("Quantity") + ":Float:100"]
-		+ [_("Expires On") + ":Date:100"]
-		+ [_("Expiry (In Days)") + ":Int:130"]
-	)
+	return [
+		_("Item") + ":Link/Item:150",
+		_("Item Name") + "::150",
+		_("Batch") + ":Link/Batch:150",
+		_("Stock UOM") + ":Link/UOM:100",
+		_("Quantity") + ":Float:100",
+		_("Expires On") + ":Date:100",
+		_("Expiry (In Days)") + ":Int:130",
+	]
 
 
 def get_data(filters):
@@ -76,9 +76,7 @@
 		.where(
 			(batch.disabled == 0)
 			& (batch.batch_qty > 0)
-			& (
-				(Date(batch.creation) >= filters["from_date"]) & (Date(batch.creation) <= filters["to_date"])
-			)
+			& ((Date(batch.creation) >= filters["from_date"]) & (Date(batch.creation) <= filters["to_date"]))
 		)
 		.orderby(batch.creation)
 	)
diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
index 7f2608e..fe0cefd 100644
--- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
+++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py
@@ -70,18 +70,18 @@
 def get_columns(filters):
 	"""return columns based on filters"""
 
-	columns = (
-		[_("Item") + ":Link/Item:100"]
-		+ [_("Item Name") + "::150"]
-		+ [_("Description") + "::150"]
-		+ [_("Warehouse") + ":Link/Warehouse:100"]
-		+ [_("Batch") + ":Link/Batch:100"]
-		+ [_("Opening Qty") + ":Float:90"]
-		+ [_("In Qty") + ":Float:80"]
-		+ [_("Out Qty") + ":Float:80"]
-		+ [_("Balance Qty") + ":Float:90"]
-		+ [_("UOM") + "::90"]
-	)
+	columns = [
+		_("Item") + ":Link/Item:100",
+		_("Item Name") + "::150",
+		_("Description") + "::150",
+		_("Warehouse") + ":Link/Warehouse:100",
+		_("Batch") + ":Link/Batch:100",
+		_("Opening Qty") + ":Float:90",
+		_("In Qty") + ":Float:80",
+		_("Out Qty") + ":Float:80",
+		_("Balance Qty") + ":Float:90",
+		_("UOM") + "::90",
+	]
 
 	return columns
 
@@ -195,9 +195,7 @@
 
 def get_item_details(filters):
 	item_map = {}
-	for d in (frappe.qb.from_("Item").select("name", "item_name", "description", "stock_uom")).run(
-		as_dict=1
-	):
+	for d in (frappe.qb.from_("Item").select("name", "item_name", "description", "stock_uom")).run(as_dict=1):
 		item_map.setdefault(d.name, d)
 
 	return item_map
diff --git a/erpnext/stock/report/cogs_by_item_group/cogs_by_item_group.py b/erpnext/stock/report/cogs_by_item_group/cogs_by_item_group.py
index 4642a53..b3c8e93 100644
--- a/erpnext/stock/report/cogs_by_item_group/cogs_by_item_group.py
+++ b/erpnext/stock/report/cogs_by_item_group/cogs_by_item_group.py
@@ -3,7 +3,7 @@
 
 import datetime
 from collections import OrderedDict
-from typing import Dict, List, Tuple, Union
+from typing import Union
 
 import frappe
 from frappe import _
@@ -13,15 +13,15 @@
 
 Filters = frappe._dict
 Row = frappe._dict
-Data = List[Row]
-Columns = List[Dict[str, str]]
+Data = list[Row]
+Columns = list[dict[str, str]]
 DateTime = Union[datetime.date, datetime.datetime]
-FilteredEntries = List[Dict[str, Union[str, float, DateTime, None]]]
-ItemGroupsDict = Dict[Tuple[int, int], Dict[str, Union[str, int]]]
-SVDList = List[frappe._dict]
+FilteredEntries = list[dict[str, str | float | DateTime | None]]
+ItemGroupsDict = dict[tuple[int, int], dict[str, str | int]]
+SVDList = list[frappe._dict]
 
 
-def execute(filters: Filters) -> Tuple[Columns, Data]:
+def execute(filters: Filters) -> tuple[Columns, Data]:
 	update_filters_with_account(filters)
 	validate_filters(filters)
 	columns = get_columns()
@@ -158,7 +158,7 @@
 		item.item_group = ig_map[item.get("item_code")]
 
 
-def get_item_groups_map(svd_list: SVDList) -> Dict[str, str]:
+def get_item_groups_map(svd_list: SVDList) -> dict[str, str]:
 	item_codes = set(i["item_code"] for i in svd_list)
 	ig_list = frappe.get_list(
 		"Item", fields=["item_code", "item_group"], filters=[("item_code", "in", item_codes)]
@@ -168,9 +168,7 @@
 
 def get_item_groups_dict() -> ItemGroupsDict:
 	item_groups_list = frappe.get_all("Item Group", fields=("name", "is_group", "lft", "rgt"))
-	return {
-		(i["lft"], i["rgt"]): {"name": i["name"], "is_group": i["is_group"]} for i in item_groups_list
-	}
+	return {(i["lft"], i["rgt"]): {"name": i["name"], "is_group": i["is_group"]} for i in item_groups_list}
 
 
 def update_leveled_dict(leveled_dict: OrderedDict) -> None:
diff --git a/erpnext/stock/report/delayed_item_report/delayed_item_report.py b/erpnext/stock/report/delayed_item_report/delayed_item_report.py
index 546a834..0bfb4da 100644
--- a/erpnext/stock/report/delayed_item_report/delayed_item_report.py
+++ b/erpnext/stock/report/delayed_item_report/delayed_item_report.py
@@ -13,7 +13,7 @@
 	return data, columns
 
 
-class DelayedItemReport(object):
+class DelayedItemReport:
 	def __init__(self, filters=None):
 		self.filters = frappe._dict(filters or {})
 
diff --git a/erpnext/stock/report/delayed_order_report/delayed_order_report.py b/erpnext/stock/report/delayed_order_report/delayed_order_report.py
index 197218d..24be939 100644
--- a/erpnext/stock/report/delayed_order_report/delayed_order_report.py
+++ b/erpnext/stock/report/delayed_order_report/delayed_order_report.py
@@ -20,7 +20,7 @@
 		return self.get_columns(), self.get_data(consolidated=True) or []
 
 	def get_data(self, consolidated=False):
-		data = super(DelayedOrderReport, self).get_data(consolidated) or []
+		data = super().get_data(consolidated) or []
 
 		so_list = []
 		result = []
diff --git a/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py b/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py
index 9e14033..404a58b 100644
--- a/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py
+++ b/erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py
@@ -40,19 +40,18 @@
 
 
 def get_stock_ledger_entries(filters):
-
 	sle_filters = {"is_cancelled": 0}
 
 	if filters.warehouse:
 		children = get_descendants_of("Warehouse", filters.warehouse)
-		sle_filters["warehouse"] = ("in", children + [filters.warehouse])
+		sle_filters["warehouse"] = ("in", [*children, filters.warehouse])
 
 	if filters.item_code:
 		sle_filters["item_code"] = filters.item_code
 	elif filters.get("item_group"):
 		item_group = filters.get("item_group")
 		children = get_descendants_of("Item Group", item_group)
-		item_group_filter = {"item_group": ("in", children + [item_group])}
+		item_group_filter = {"item_group": ("in", [*children, item_group])}
 		sle_filters["item_code"] = (
 			"in",
 			frappe.get_all("Item", filters=item_group_filter, pluck="name", order_by=None),
diff --git a/erpnext/stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py b/erpnext/stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py
index b68db35..163e7ab 100644
--- a/erpnext/stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py
+++ b/erpnext/stock/report/incorrect_balance_qty_after_transaction/incorrect_balance_qty_after_transaction.py
@@ -27,7 +27,7 @@
 
 def validate_data(itewise_balance_qty):
 	res = []
-	for key, data in itewise_balance_qty.items():
+	for _key, data in itewise_balance_qty.items():
 		row = get_incorrect_data(data)
 		if row:
 			res.append(row)
diff --git a/erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py b/erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py
index 39d84a7..4d740bd 100644
--- a/erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py
+++ b/erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py
@@ -43,11 +43,9 @@
 def get_incorrect_serial_nos(serial_nos_data):
 	result = []
 
-	total_value = frappe._dict(
-		{"qty": 0, "valuation_rate": 0, "serial_no": frappe.bold(_("Balance"))}
-	)
+	total_value = frappe._dict({"qty": 0, "valuation_rate": 0, "serial_no": frappe.bold(_("Balance"))})
 
-	for serial_no, data in serial_nos_data.items():
+	for _serial_no, data in serial_nos_data.items():
 		total_dict = frappe._dict({"qty": 0, "valuation_rate": 0, "serial_no": frappe.bold(_("Total"))})
 
 		if check_incorrect_serial_data(data, total_dict):
diff --git a/erpnext/stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py b/erpnext/stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py
index da958a8..7be8831 100644
--- a/erpnext/stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py
+++ b/erpnext/stock/report/incorrect_stock_value_report/incorrect_stock_value_report.py
@@ -16,9 +16,7 @@
 def execute(filters=None):
 	if not erpnext.is_perpetual_inventory_enabled(filters.company):
 		frappe.throw(
-			_("Perpetual inventory required for the company {0} to view this report.").format(
-				filters.company
-			)
+			_("Perpetual inventory required for the company {0} to view this report.").format(filters.company)
 		)
 
 	data = get_data(filters)
@@ -83,9 +81,7 @@
 
 	closing_date = add_days(from_date, -1)
 	for key, stock_data in voucher_wise_dict.items():
-		prev_stock_value = get_stock_value_on(
-			posting_date=closing_date, item_code=key[0], warehouses=key[1]
-		)
+		prev_stock_value = get_stock_value_on(posting_date=closing_date, item_code=key[0], warehouses=key[1])
 		for data in stock_data:
 			expected_stock_value = prev_stock_value + data.stock_value_difference
 			if abs(data.stock_value - expected_stock_value) > 0.1:
diff --git a/erpnext/stock/report/item_prices/item_prices.py b/erpnext/stock/report/item_prices/item_prices.py
index a53a9f2..5c5b84f 100644
--- a/erpnext/stock/report/item_prices/item_prices.py
+++ b/erpnext/stock/report/item_prices/item_prices.py
@@ -111,9 +111,7 @@
 	).run(as_dict=True)
 
 	for d in price_list:
-		d.update(
-			{"price": "{0} {1} - {2}".format(d.currency, round(d.price_list_rate, 2), d.price_list)}
-		)
+		d.update({"price": f"{d.currency} {round(d.price_list_rate, 2)} - {d.price_list}"})
 		d.pop("currency")
 		d.pop("price_list_rate")
 		d.pop("price_list")
diff --git a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py
index c4358b8..dffe948 100644
--- a/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py
+++ b/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py
@@ -24,9 +24,7 @@
 
 	data = []
 	for item in items:
-		total_outgoing = flt(consumed_item_map.get(item.name, 0)) + flt(
-			delivered_item_map.get(item.name, 0)
-		)
+		total_outgoing = flt(consumed_item_map.get(item.name, 0)) + flt(delivered_item_map.get(item.name, 0))
 		avg_daily_outgoing = flt(total_outgoing / diff, float_precision)
 		reorder_level = (avg_daily_outgoing * flt(item.lead_time_days)) + flt(item.safety_stock)
 
diff --git a/erpnext/stock/report/reserved_stock/reserved_stock.py b/erpnext/stock/report/reserved_stock/reserved_stock.py
index 21ce203..7963851 100644
--- a/erpnext/stock/report/reserved_stock/reserved_stock.py
+++ b/erpnext/stock/report/reserved_stock/reserved_stock.py
@@ -73,10 +73,10 @@
 		"project",
 	]:
 		if value := filters.get(field):
-			query = query.where((sre[field] == value))
+			query = query.where(sre[field] == value)
 
 	if value := filters.get("stock_reservation_entry"):
-		query = query.where((sre.name == value))
+		query = query.where(sre.name == value)
 
 	data = query.run(as_list=True)
 
diff --git a/erpnext/stock/report/reserved_stock/test_reserved_stock.py b/erpnext/stock/report/reserved_stock/test_reserved_stock.py
index 6ef89f9..16906fb 100644
--- a/erpnext/stock/report/reserved_stock/test_reserved_stock.py
+++ b/erpnext/stock/report/reserved_stock/test_reserved_stock.py
@@ -2,7 +2,6 @@
 # See license.txt
 from random import randint
 
-import frappe
 from frappe.tests.utils import FrappeTestCase, change_settings
 from frappe.utils.data import today
 
diff --git a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py
index 3ea5e82..7bd8d70 100644
--- a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py
+++ b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py
@@ -146,9 +146,7 @@
 		)
 
 	if not item_details or item_details.get("has_serial_no"):
-		columns.append(
-			{"label": _("Serial No"), "fieldname": "serial_no", "fieldtype": "Data", "width": 120}
-		)
+		columns.append({"label": _("Serial No"), "fieldname": "serial_no", "fieldtype": "Data", "width": 120})
 
 	if not item_details or item_details.get("has_batch_no"):
 		columns.extend(
@@ -184,7 +182,7 @@
 
 	query_filters = {"options": ["in", [d.parent for d in child_doctypes]]}
 	if txt:
-		query_filters["parent"] = ["like", "%{}%".format(txt)]
+		query_filters["parent"] = ["like", f"%{txt}%"]
 
 	return frappe.get_all("DocField", filters=query_filters, fields=["distinct parent"], as_list=True)
 
diff --git a/erpnext/stock/report/serial_no_ledger/serial_no_ledger.py b/erpnext/stock/report/serial_no_ledger/serial_no_ledger.py
index 3f5216b..f229f73 100644
--- a/erpnext/stock/report/serial_no_ledger/serial_no_ledger.py
+++ b/erpnext/stock/report/serial_no_ledger/serial_no_ledger.py
@@ -84,9 +84,7 @@
 		return []
 
 	data = []
-	serial_bundle_ids = [
-		d.serial_and_batch_bundle for d in stock_ledgers if d.serial_and_batch_bundle
-	]
+	serial_bundle_ids = [d.serial_and_batch_bundle for d in stock_ledgers if d.serial_and_batch_bundle]
 
 	bundle_wise_serial_nos = get_serial_nos(filters, serial_bundle_ids)
 
diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py
index 02ac8c6..efa736c 100644
--- a/erpnext/stock/report/stock_ageing/stock_ageing.py
+++ b/erpnext/stock/report/stock_ageing/stock_ageing.py
@@ -2,8 +2,8 @@
 # License: GNU General Public License v3. See license.txt
 
 
+from collections.abc import Iterator
 from operator import itemgetter
-from typing import Dict, Iterator, List, Tuple, Union
 
 import frappe
 from frappe import _
@@ -14,7 +14,7 @@
 Filters = frappe._dict
 
 
-def execute(filters: Filters = None) -> Tuple:
+def execute(filters: Filters = None) -> tuple:
 	to_date = filters["to_date"]
 	columns = get_columns(filters)
 
@@ -26,14 +26,14 @@
 	return columns, data, None, chart_data
 
 
-def format_report_data(filters: Filters, item_details: Dict, to_date: str) -> List[Dict]:
+def format_report_data(filters: Filters, item_details: dict, to_date: str) -> list[dict]:
 	"Returns ordered, formatted data with ranges."
 	_func = itemgetter(1)
 	data = []
 
 	precision = cint(frappe.db.get_single_value("System Settings", "float_precision", cache=True))
 
-	for item, item_dict in item_details.items():
+	for _item, item_dict in item_details.items():
 		if not flt(item_dict.get("total_qty"), precision):
 			continue
 
@@ -74,12 +74,12 @@
 	return data
 
 
-def get_average_age(fifo_queue: List, to_date: str) -> float:
+def get_average_age(fifo_queue: list, to_date: str) -> float:
 	batch_age = age_qty = total_qty = 0.0
 	for batch in fifo_queue:
 		batch_age = date_diff(to_date, batch[1])
 
-		if isinstance(batch[0], (int, float)):
+		if isinstance(batch[0], int | float):
 			age_qty += batch_age * batch[0]
 			total_qty += batch[0]
 		else:
@@ -89,8 +89,7 @@
 	return flt(age_qty / total_qty, 2) if total_qty else 0.0
 
 
-def get_range_age(filters: Filters, fifo_queue: List, to_date: str, item_dict: Dict) -> Tuple:
-
+def get_range_age(filters: Filters, fifo_queue: list, to_date: str, item_dict: dict) -> tuple:
 	precision = cint(frappe.db.get_single_value("System Settings", "float_precision", cache=True))
 
 	range1 = range2 = range3 = above_range3 = 0.0
@@ -111,7 +110,7 @@
 	return range1, range2, range3, above_range3
 
 
-def get_columns(filters: Filters) -> List[Dict]:
+def get_columns(filters: Filters) -> list[dict]:
 	range_columns = []
 	setup_ageing_columns(filters, range_columns)
 	columns = [
@@ -169,7 +168,7 @@
 	return columns
 
 
-def get_chart_data(data: List, filters: Filters) -> Dict:
+def get_chart_data(data: list, filters: Filters) -> dict:
 	if not data:
 		return []
 
@@ -193,7 +192,7 @@
 	}
 
 
-def setup_ageing_columns(filters: Filters, range_columns: List):
+def setup_ageing_columns(filters: Filters, range_columns: list):
 	ranges = [
 		f"0 - {filters['range1']}",
 		f"{cint(filters['range1']) + 1} - {cint(filters['range2'])}",
@@ -205,23 +204,21 @@
 		add_column(range_columns, label=_("Age ({0})").format(label), fieldname=fieldname)
 
 
-def add_column(
-	range_columns: List, label: str, fieldname: str, fieldtype: str = "Float", width: int = 140
-):
+def add_column(range_columns: list, label: str, fieldname: str, fieldtype: str = "Float", width: int = 140):
 	range_columns.append(dict(label=label, fieldname=fieldname, fieldtype=fieldtype, width=width))
 
 
 class FIFOSlots:
 	"Returns FIFO computed slots of inwarded stock as per date."
 
-	def __init__(self, filters: Dict = None, sle: List = None):
+	def __init__(self, filters: dict | None = None, sle: list | None = None):
 		self.item_details = {}
 		self.transferred_item_details = {}
 		self.serial_no_batch_purchase_details = {}
 		self.filters = filters
 		self.sle = sle
 
-	def generate(self) -> Dict:
+	def generate(self) -> dict:
 		"""
 		Returns dict of the foll.g structure:
 		Key = Item A / (Item A, Warehouse A)
@@ -264,7 +261,7 @@
 
 		return self.item_details
 
-	def __init_key_stores(self, row: Dict) -> Tuple:
+	def __init_key_stores(self, row: dict) -> tuple:
 		"Initialise keys and FIFO Queue."
 
 		key = (row.name, row.warehouse)
@@ -276,9 +273,7 @@
 
 		return key, fifo_queue, transferred_item_key
 
-	def __compute_incoming_stock(
-		self, row: Dict, fifo_queue: List, transfer_key: Tuple, serial_nos: List
-	):
+	def __compute_incoming_stock(self, row: dict, fifo_queue: list, transfer_key: tuple, serial_nos: list):
 		"Update FIFO Queue on inward stock."
 
 		transfer_data = self.transferred_item_details.get(transfer_key)
@@ -304,9 +299,7 @@
 					self.serial_no_batch_purchase_details.setdefault(serial_no, row.posting_date)
 					fifo_queue.append([serial_no, row.posting_date])
 
-	def __compute_outgoing_stock(
-		self, row: Dict, fifo_queue: List, transfer_key: Tuple, serial_nos: List
-	):
+	def __compute_outgoing_stock(self, row: dict, fifo_queue: list, transfer_key: tuple, serial_nos: list):
 		"Update FIFO Queue on outward stock."
 		if serial_nos:
 			fifo_queue[:] = [serial_no for serial_no in fifo_queue if serial_no[0] not in serial_nos]
@@ -332,7 +325,7 @@
 				self.transferred_item_details[transfer_key].append([qty_to_pop, slot[1]])
 				qty_to_pop = 0
 
-	def __adjust_incoming_transfer_qty(self, transfer_data: Dict, fifo_queue: List, row: Dict):
+	def __adjust_incoming_transfer_qty(self, transfer_data: dict, fifo_queue: list, row: dict):
 		"Add previously removed stock back to FIFO Queue."
 		transfer_qty_to_pop = flt(row.actual_qty)
 
@@ -359,7 +352,7 @@
 				add_to_fifo_queue([transfer_qty_to_pop, transfer_data[0][1]])
 				transfer_qty_to_pop = 0
 
-	def __update_balances(self, row: Dict, key: Union[Tuple, str]):
+	def __update_balances(self, row: dict, key: tuple | str):
 		self.item_details[key]["qty_after_transaction"] = row.qty_after_transaction
 
 		if "total_qty" not in self.item_details[key]:
@@ -369,7 +362,7 @@
 
 		self.item_details[key]["has_serial_no"] = row.has_serial_no
 
-	def __aggregate_details_by_item(self, wh_wise_data: Dict) -> Dict:
+	def __aggregate_details_by_item(self, wh_wise_data: dict) -> dict:
 		"Aggregate Item-Wh wise data into single Item entry."
 		item_aggregated_data = {}
 		for key, row in wh_wise_data.items():
@@ -377,7 +370,12 @@
 			if not item_aggregated_data.get(item):
 				item_aggregated_data.setdefault(
 					item,
-					{"details": frappe._dict(), "fifo_queue": [], "qty_after_transaction": 0.0, "total_qty": 0.0},
+					{
+						"details": frappe._dict(),
+						"fifo_queue": [],
+						"qty_after_transaction": 0.0,
+						"total_qty": 0.0,
+					},
 				)
 			item_row = item_aggregated_data.get(item)
 			item_row["details"].update(row["details"])
@@ -388,7 +386,7 @@
 
 		return item_aggregated_data
 
-	def __get_stock_ledger_entries(self) -> Iterator[Dict]:
+	def __get_stock_ledger_entries(self) -> Iterator[dict]:
 		sle = frappe.qb.DocType("Stock Ledger Entry")
 		item = self.__get_item_query()  # used as derived table in sle query
 
diff --git a/erpnext/stock/report/stock_analytics/stock_analytics.py b/erpnext/stock/report/stock_analytics/stock_analytics.py
index ab48181..920c315 100644
--- a/erpnext/stock/report/stock_analytics/stock_analytics.py
+++ b/erpnext/stock/report/stock_analytics/stock_analytics.py
@@ -1,7 +1,6 @@
 # Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 import datetime
-from typing import List
 
 import frappe
 from frappe import _, scrub
@@ -48,12 +47,10 @@
 
 	ranges = get_period_date_ranges(filters)
 
-	for dummy, end_date in ranges:
+	for _dummy, end_date in ranges:
 		period = get_period(end_date, filters)
 
-		columns.append(
-			{"label": _(period), "fieldname": scrub(period), "fieldtype": "Float", "width": 120}
-		)
+		columns.append({"label": _(period), "fieldname": scrub(period), "fieldtype": "Float", "width": 120})
 
 	return columns
 
@@ -67,7 +64,7 @@
 	increment = {"Monthly": 1, "Quarterly": 3, "Half-Yearly": 6, "Yearly": 12}.get(filters.range, 1)
 
 	periodic_daterange = []
-	for dummy in range(1, 53, increment):
+	for _dummy in range(1, 53, increment):
 		if filters.range == "Weekly":
 			period_end_date = from_date + relativedelta(days=6)
 		else:
@@ -116,9 +113,7 @@
 	elif filters.range == "Monthly":
 		period = _(str(months[posting_date.month - 1])) + " " + str(posting_date.year)
 	elif filters.range == "Quarterly":
-		period = _("Quarter {0} {1}").format(
-			str(((posting_date.month - 1) // 3) + 1), str(posting_date.year)
-		)
+		period = _("Quarter {0} {1}").format(str(((posting_date.month - 1) // 3) + 1), str(posting_date.year))
 	else:
 		year = get_fiscal_year(posting_date, company=filters.company)
 		period = str(year[2])
@@ -188,15 +183,13 @@
 		periodic_data.setdefault(d.item_code, {}).setdefault(period, {}).setdefault(d.warehouse, 0.0)
 
 		periodic_data[d.item_code]["balance"][d.warehouse] += value
-		periodic_data[d.item_code][period][d.warehouse] = periodic_data[d.item_code]["balance"][
-			d.warehouse
-		]
+		periodic_data[d.item_code][period][d.warehouse] = periodic_data[d.item_code]["balance"][d.warehouse]
 
 	return periodic_data
 
 
 def fill_intermediate_periods(
-	periodic_data, item_code: str, current_period: str, all_periods: List[str]
+	periodic_data, item_code: str, current_period: str, all_periods: list[str]
 ) -> None:
 	"""There might be intermediate periods where no stock ledger entry exists, copy previous previous data.
 
@@ -235,7 +228,7 @@
 
 	today = getdate()
 
-	for dummy, item_data in item_details.items():
+	for _dummy, item_data in item_details.items():
 		row = {
 			"name": item_data.name,
 			"item_name": item_data.item_name,
@@ -273,7 +266,7 @@
 		item_filters = {"is_stock_item": 1}
 		if item_group := filters.get("item_group"):
 			children = get_descendants_of("Item Group", item_group, ignore_permissions=True)
-			item_filters["item_group"] = ("in", children + [item_group])
+			item_filters["item_group"] = ("in", [*children, item_group])
 		if brand := filters.get("brand"):
 			item_filters["brand"] = brand
 
diff --git a/erpnext/stock/report/stock_analytics/test_stock_analytics.py b/erpnext/stock/report/stock_analytics/test_stock_analytics.py
index dd8f8d8..b4f086c 100644
--- a/erpnext/stock/report/stock_analytics/test_stock_analytics.py
+++ b/erpnext/stock/report/stock_analytics/test_stock_analytics.py
@@ -3,7 +3,7 @@
 import frappe
 from frappe import _dict
 from frappe.tests.utils import FrappeTestCase
-from frappe.utils.data import add_to_date, get_datetime, getdate, nowdate
+from frappe.utils.data import add_to_date, getdate
 
 from erpnext.accounts.utils import get_fiscal_year
 from erpnext.stock.doctype.item.test_item import make_item
@@ -55,7 +55,6 @@
 		self.assertEqual(actual_buckets, expected_buckets)
 
 	def test_get_period_date_ranges(self):
-
 		filters = _dict(range="Monthly", from_date="2020-12-28", to_date="2021-02-06")
 
 		ranges = get_period_date_ranges(filters)
@@ -69,7 +68,6 @@
 		self.assertEqual(ranges, expected_ranges)
 
 	def test_get_period_date_ranges_yearly(self):
-
 		filters = _dict(range="Yearly", from_date="2021-01-28", to_date="2021-02-06")
 
 		ranges = get_period_date_ranges(filters)
diff --git a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py
index 416cf48..67e340d 100644
--- a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py
+++ b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py
@@ -14,9 +14,7 @@
 def execute(filters=None):
 	if not erpnext.is_perpetual_inventory_enabled(filters.company):
 		frappe.throw(
-			_("Perpetual inventory required for the company {0} to view this report.").format(
-				filters.company
-			)
+			_("Perpetual inventory required for the company {0} to view this report.").format(filters.company)
 		)
 
 	data = get_data(filters)
@@ -34,7 +32,7 @@
 		"posting_date": ("<=", report_filters.as_on_date),
 	}
 
-	currency_precision = get_currency_precision() or 2
+	get_currency_precision() or 2
 	stock_ledger_entries = get_stock_ledger_data(report_filters, filters)
 	voucher_wise_gl_data = get_gl_data(report_filters, filters)
 
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index 500affa..0d31398 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -3,7 +3,7 @@
 
 
 from operator import itemgetter
-from typing import Any, Dict, List, Optional, TypedDict
+from typing import Any, TypedDict
 
 import frappe
 from frappe import _
@@ -20,27 +20,27 @@
 
 
 class StockBalanceFilter(TypedDict):
-	company: Optional[str]
+	company: str | None
 	from_date: str
 	to_date: str
-	item_group: Optional[str]
-	item: Optional[str]
-	warehouse: Optional[str]
-	warehouse_type: Optional[str]
-	include_uom: Optional[str]  # include extra info in converted UOM
+	item_group: str | None
+	item: str | None
+	warehouse: str | None
+	warehouse_type: str | None
+	include_uom: str | None  # include extra info in converted UOM
 	show_stock_ageing_data: bool
 	show_variant_attributes: bool
 
 
-SLEntry = Dict[str, Any]
+SLEntry = dict[str, Any]
 
 
-def execute(filters: Optional[StockBalanceFilter] = None):
+def execute(filters: StockBalanceFilter | None = None):
 	return StockBalanceReport(filters).run()
 
 
-class StockBalanceReport(object):
-	def __init__(self, filters: Optional[StockBalanceFilter]) -> None:
+class StockBalanceReport:
+	def __init__(self, filters: StockBalanceFilter | None) -> None:
 		self.filters = filters
 		self.from_date = getdate(filters.get("from_date"))
 		self.to_date = getdate(filters.get("to_date"))
@@ -48,7 +48,7 @@
 		self.start_from = None
 		self.data = []
 		self.columns = []
-		self.sle_entries: List[SLEntry] = []
+		self.sle_entries: list[SLEntry] = []
 		self.set_company_currency()
 
 	def set_company_currency(self) -> None:
@@ -106,7 +106,7 @@
 		if self.filters.get("show_variant_attributes"):
 			variant_values = self.get_variant_values_for()
 
-		for key, report_data in self.item_warehouse_map.items():
+		for _key, report_data in self.item_warehouse_map.items():
 			if variant_data := variant_values.get(report_data.item_code):
 				report_data.update(variant_data)
 
@@ -201,7 +201,6 @@
 			qty_dict.opening_val += value_diff
 
 		elif entry.posting_date >= self.from_date and entry.posting_date <= self.to_date:
-
 			if flt(qty_diff, self.float_precision) >= 0:
 				qty_dict.in_qty += qty_diff
 				qty_dict.in_val += value_diff
@@ -247,7 +246,7 @@
 
 		return tuple(group_by_key)
 
-	def get_closing_balance(self) -> List[Dict[str, Any]]:
+	def get_closing_balance(self) -> list[dict[str, Any]]:
 		if self.filters.get("ignore_closing_balance"):
 			return []
 
@@ -342,7 +341,7 @@
 	def apply_items_filters(self, query, item_table) -> str:
 		if item_group := self.filters.get("item_group"):
 			children = get_descendants_of("Item Group", item_group, ignore_permissions=True)
-			query = query.where(item_table.item_group.isin(children + [item_group]))
+			query = query.where(item_table.item_group.isin([*children, item_group]))
 
 		for field in ["item_code", "brand"]:
 			if not self.filters.get(field):
@@ -566,7 +565,9 @@
 					frappe.qb.from_(sr)
 					.select(sr.name, Coalesce("Stock Reconciliation").as_("voucher_type"))
 					.where(
-						(sr.docstatus == 1) & (sr.posting_date <= self.to_date) & (sr.purpose == "Opening Stock")
+						(sr.docstatus == 1)
+						& (sr.posting_date <= self.to_date)
+						& (sr.purpose == "Opening Stock")
 					)
 				)
 			).select("voucher_type", "name")
@@ -592,7 +593,7 @@
 
 
 def filter_items_with_no_transactions(
-	iwb_map, float_precision: float, inventory_dimensions: list = None
+	iwb_map, float_precision: float, inventory_dimensions: list | None = None
 ):
 	pop_keys = []
 	for group_by_key in iwb_map:
@@ -629,6 +630,6 @@
 	return iwb_map
 
 
-def get_variants_attributes() -> List[str]:
+def get_variants_attributes() -> list[str]:
 	"""Return all item variant attributes."""
 	return frappe.get_all("Item Attribute", pluck="name")
diff --git a/erpnext/stock/report/stock_balance/test_stock_balance.py b/erpnext/stock/report/stock_balance/test_stock_balance.py
index e963de2..8b3dbee 100644
--- a/erpnext/stock/report/stock_balance/test_stock_balance.py
+++ b/erpnext/stock/report/stock_balance/test_stock_balance.py
@@ -1,4 +1,4 @@
-from typing import Any, Dict
+from typing import Any
 
 import frappe
 from frappe import _dict
@@ -32,12 +32,11 @@
 	def tearDown(self):
 		frappe.db.rollback()
 
-	def assertPartialDictEq(self, expected: Dict[str, Any], actual: Dict[str, Any]):
+	def assertPartialDictEq(self, expected: dict[str, Any], actual: dict[str, Any]):
 		for k, v in expected.items():
 			self.assertEqual(v, actual[k], msg=f"{expected=}\n{actual=}")
 
 	def generate_stock_ledger(self, item_code: str, movements):
-
 		for movement in map(_dict, movements):
 			if "to_warehouse" not in movement:
 				movement.to_warehouse = "_Test Warehouse - _TC"
@@ -128,7 +127,6 @@
 		self.assertPartialDictEq({"opening_qty": 6, "in_qty": 0}, rows[0])
 
 	def test_uom_converted_info(self):
-
 		self.item.append("uoms", {"conversion_factor": 5, "uom": "Box"})
 		self.item.save()
 
@@ -167,8 +165,6 @@
 		variant.save()
 
 		self.generate_stock_ledger(variant.name, [_dict(qty=5, rate=10)])
-		rows = stock_balance(
-			self.filters.update({"show_variant_attributes": 1, "item_code": variant.name})
-		)
+		rows = stock_balance(self.filters.update({"show_variant_attributes": 1, "item_code": variant.name}))
 		self.assertPartialDictEq(attributes, rows[0])
 		self.assertInvariants(rows)
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index e98351a..97e2f55 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -547,11 +547,8 @@
 def get_warehouse_condition(warehouse):
 	warehouse_details = frappe.db.get_value("Warehouse", warehouse, ["lft", "rgt"], as_dict=1)
 	if warehouse_details:
-		return (
-			" exists (select name from `tabWarehouse` wh \
-			where wh.lft >= %s and wh.rgt <= %s and warehouse = wh.name)"
-			% (warehouse_details.lft, warehouse_details.rgt)
-		)
+		return f" exists (select name from `tabWarehouse` wh \
+			where wh.lft >= {warehouse_details.lft} and wh.rgt <= {warehouse_details.rgt} and warehouse = wh.name)"
 
 	return ""
 
@@ -562,22 +559,17 @@
 		if item_table:
 			ig = frappe.qb.DocType("Item Group")
 			return item_table.item_group.isin(
-				(
-					frappe.qb.from_(ig)
-					.select(ig.name)
-					.where(
-						(ig.lft >= item_group_details.lft)
-						& (ig.rgt <= item_group_details.rgt)
-						& (item_table.item_group == ig.name)
-					)
+				frappe.qb.from_(ig)
+				.select(ig.name)
+				.where(
+					(ig.lft >= item_group_details.lft)
+					& (ig.rgt <= item_group_details.rgt)
+					& (item_table.item_group == ig.name)
 				)
 			)
 		else:
-			return (
-				"item.item_group in (select ig.name from `tabItem Group` ig \
-				where ig.lft >= %s and ig.rgt <= %s and item.item_group = ig.name)"
-				% (item_group_details.lft, item_group_details.rgt)
-			)
+			return f"item.item_group in (select ig.name from `tabItem Group` ig \
+				where ig.lft >= {item_group_details.lft} and ig.rgt <= {item_group_details.rgt} and item.item_group = ig.name)"
 
 
 def check_inventory_dimension_filters_applied(filters) -> bool:
diff --git a/erpnext/stock/report/stock_ledger/test_stock_ledger_report.py b/erpnext/stock/report/stock_ledger/test_stock_ledger_report.py
index c3c85aa..12800f2 100644
--- a/erpnext/stock/report/stock_ledger/test_stock_ledger_report.py
+++ b/erpnext/stock/report/stock_ledger/test_stock_ledger_report.py
@@ -8,9 +8,6 @@
 from erpnext.maintenance.doctype.maintenance_schedule.test_maintenance_schedule import (
 	make_serial_item_with_serial,
 )
-from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
-from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
-from erpnext.stock.report.stock_ledger.stock_ledger import execute
 
 
 class TestStockLedgerReeport(FrappeTestCase):
diff --git a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py
index 189a90a..0b7e551 100644
--- a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py
+++ b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py
@@ -228,7 +228,7 @@
 	return data
 
 
-def get_item_warehouse_combinations(filters: dict = None) -> dict:
+def get_item_warehouse_combinations(filters: dict | None = None) -> dict:
 	filters = frappe._dict(filters or {})
 
 	bin = frappe.qb.DocType("Bin")
@@ -284,7 +284,5 @@
 		return True
 	elif difference_in == "Valuation" and valuation_diff:
 		return True
-	elif difference_in not in ["Qty", "Value", "Valuation"] and (
-		qty_diff or value_diff or valuation_diff
-	):
+	elif difference_in not in ["Qty", "Value", "Valuation"] and (qty_diff or value_diff or valuation_diff):
 		return True
diff --git a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
index 31c756d..743656c 100644
--- a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
+++ b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py
@@ -250,9 +250,7 @@
 		query = query.where(bin.item_code == filters.item_code)
 
 	if filters.warehouse:
-		warehouse_details = frappe.db.get_value(
-			"Warehouse", filters.warehouse, ["lft", "rgt"], as_dict=1
-		)
+		warehouse_details = frappe.db.get_value("Warehouse", filters.warehouse, ["lft", "rgt"], as_dict=1)
 
 		if warehouse_details:
 			wh = frappe.qb.DocType("Warehouse")
@@ -286,7 +284,9 @@
 			(item.is_stock_item == 1)
 			& (item.disabled == 0)
 			& (
-				(item.end_of_life > today()) | (item.end_of_life.isnull()) | (item.end_of_life == "0000-00-00")
+				(item.end_of_life > today())
+				| (item.end_of_life.isnull())
+				| (item.end_of_life == "0000-00-00")
 			)
 			& (ExistsCriterion(frappe.qb.from_(bin).select(bin.name).where(bin.item_code == item.name)))
 		)
diff --git a/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py b/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py
index 8c76908..e28b2d7 100644
--- a/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py
+++ b/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py
@@ -20,7 +20,6 @@
 		total_qty = total_amount = 0.0
 		if consumed_details.get(item_code):
 			for cd in consumed_details.get(item_code):
-
 				if cd.voucher_no not in material_transfer_vouchers:
 					if cd.voucher_type in ["Delivery Note", "Sales Invoice"]:
 						delivered_qty += abs(flt(cd.actual_qty))
@@ -54,19 +53,19 @@
 def get_columns(filters):
 	"""return columns based on filters"""
 
-	columns = (
-		[_("Item") + ":Link/Item:100"]
-		+ [_("Item Name") + "::100"]
-		+ [_("Description") + "::150"]
-		+ [_("UOM") + ":Link/UOM:90"]
-		+ [_("Consumed Qty") + ":Float:110"]
-		+ [_("Consumed Amount") + ":Currency:130"]
-		+ [_("Delivered Qty") + ":Float:110"]
-		+ [_("Delivered Amount") + ":Currency:130"]
-		+ [_("Total Qty") + ":Float:110"]
-		+ [_("Total Amount") + ":Currency:130"]
-		+ [_("Supplier(s)") + "::250"]
-	)
+	columns = [
+		_("Item") + ":Link/Item:100",
+		_("Item Name") + "::100",
+		_("Description") + "::150",
+		_("UOM") + ":Link/UOM:90",
+		_("Consumed Qty") + ":Float:110",
+		_("Consumed Amount") + ":Currency:130",
+		_("Delivered Qty") + ":Float:110",
+		_("Delivered Amount") + ":Currency:130",
+		_("Total Qty") + ":Float:110",
+		_("Total Amount") + ":Currency:130",
+		_("Supplier(s)") + "::250",
+	]
 
 	return columns
 
@@ -173,9 +172,7 @@
 def get_material_transfer_vouchers():
 	se = frappe.qb.DocType("Stock Entry")
 	query = (
-		frappe.qb.from_(se)
-		.select(se.name)
-		.where((se.purpose == "Material Transfer") & (se.docstatus == 1))
+		frappe.qb.from_(se).select(se.name).where((se.purpose == "Material Transfer") & (se.docstatus == 1))
 	)
 
 	return [r[0] for r in query.run()]
diff --git a/erpnext/stock/report/test_reports.py b/erpnext/stock/report/test_reports.py
index d118d8e..74c6afa 100644
--- a/erpnext/stock/report/test_reports.py
+++ b/erpnext/stock/report/test_reports.py
@@ -1,5 +1,4 @@
 import unittest
-from typing import List, Tuple
 
 import frappe
 
@@ -14,7 +13,7 @@
 
 batch = frappe.db.get_value("Batch", fieldname=["name"], as_dict=True, order_by="creation desc")
 
-REPORT_FILTER_TEST_CASES: List[Tuple[ReportName, ReportFilters]] = [
+REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [
 	("Stock Ledger", {"_optional": True}),
 	("Stock Ledger", {"batch_no": batch}),
 	("Stock Ledger", {"item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"}),
diff --git a/erpnext/stock/report/total_stock_summary/total_stock_summary.py b/erpnext/stock/report/total_stock_summary/total_stock_summary.py
index c3155bd..4848c21 100644
--- a/erpnext/stock/report/total_stock_summary/total_stock_summary.py
+++ b/erpnext/stock/report/total_stock_summary/total_stock_summary.py
@@ -8,7 +8,6 @@
 
 
 def execute(filters=None):
-
 	if not filters:
 		filters = {}
 	columns = get_columns(filters)
@@ -54,8 +53,8 @@
 	else:
 		query = query.select(wh.company).groupby(wh.company)
 
-	query = query.select(
-		item.item_code, item.description, Sum(bin.actual_qty).as_("actual_qty")
-	).groupby(item.item_code)
+	query = query.select(item.item_code, item.description, Sum(bin.actual_qty).as_("actual_qty")).groupby(
+		item.item_code
+	)
 
 	return query.run()
diff --git a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py
index 5dbdcef..e1cce31 100644
--- a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py
+++ b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py
@@ -40,7 +40,7 @@
 	item_balance = {}
 	item_value = {}
 
-	for (company, item, warehouse) in sorted(iwb_map):
+	for company, item, warehouse in sorted(iwb_map):
 		if not item_map.get(item):
 			continue
 
@@ -71,7 +71,7 @@
 
 		row += [average_age]
 
-		bal_qty = [sum(bal_qty) for bal_qty in zip(*wh_balance)]
+		bal_qty = [sum(bal_qty) for bal_qty in zip(*wh_balance, strict=False)]
 		total_qty = sum(bal_qty)
 		if len(warehouse_list) > 1:
 			row += [total_qty]
diff --git a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py b/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
index a0e9944..39baa54 100644
--- a/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
+++ b/erpnext/stock/report/warehouse_wise_stock_balance/warehouse_wise_stock_balance.py
@@ -1,7 +1,7 @@
 # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
-from typing import Any, Dict, List, Optional, TypedDict
+from typing import Any, TypedDict
 
 import frappe
 from frappe import _
@@ -9,12 +9,12 @@
 
 
 class StockBalanceFilter(TypedDict):
-	company: Optional[str]
-	warehouse: Optional[str]
-	show_disabled_warehouses: Optional[int]
+	company: str | None
+	warehouse: str | None
+	show_disabled_warehouses: int | None
 
 
-SLEntry = Dict[str, Any]
+SLEntry = dict[str, Any]
 
 
 def execute(filters=None):
@@ -25,7 +25,7 @@
 	return columns, data
 
 
-def get_warehouse_wise_balance(filters: StockBalanceFilter) -> List[SLEntry]:
+def get_warehouse_wise_balance(filters: StockBalanceFilter) -> list[SLEntry]:
 	sle = frappe.qb.DocType("Stock Ledger Entry")
 
 	query = (
@@ -95,7 +95,7 @@
 		update_balance(warehouse, warehouse.stock_balance)
 
 
-def get_columns(filters: StockBalanceFilter) -> List[Dict]:
+def get_columns(filters: StockBalanceFilter) -> list[dict]:
 	columns = [
 		{
 			"label": _("Warehouse"),
diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py
index 9625b20..d9f3473 100644
--- a/erpnext/stock/serial_batch_bundle.py
+++ b/erpnext/stock/serial_batch_bundle.py
@@ -1,5 +1,4 @@
 from collections import defaultdict
-from typing import List
 
 import frappe
 from frappe import _, bold
@@ -130,13 +129,14 @@
 			frappe.throw(_(error_msg))
 
 	def set_serial_and_batch_bundle(self, sn_doc):
-		self.sle.db_set(
-			{"serial_and_batch_bundle": sn_doc.name, "auto_created_serial_and_batch_bundle": 1}
-		)
+		self.sle.db_set({"serial_and_batch_bundle": sn_doc.name, "auto_created_serial_and_batch_bundle": 1})
 
 		if sn_doc.is_rejected:
 			frappe.db.set_value(
-				self.child_doctype, self.sle.voucher_detail_no, "rejected_serial_and_batch_bundle", sn_doc.name
+				self.child_doctype,
+				self.sle.voucher_detail_no,
+				"rejected_serial_and_batch_bundle",
+				sn_doc.name,
 			)
 		else:
 			values_to_update = {
@@ -157,9 +157,7 @@
 	def child_doctype(self):
 		child_doctype = self.sle.voucher_type + " Item"
 
-		if (
-			self.sle.voucher_type == "Subcontracting Receipt" and self.sle.dependant_sle_voucher_detail_no
-		):
+		if self.sle.voucher_type == "Subcontracting Receipt" and self.sle.dependant_sle_voucher_detail_no:
 			child_doctype = "Subcontracting Receipt Supplied Item"
 
 		if self.sle.voucher_type == "Stock Entry":
@@ -343,9 +341,7 @@
 	if serial_nos:
 		filters["serial_no"] = ("in", serial_nos)
 
-	entries = frappe.get_all(
-		"Serial and Batch Entry", fields=["serial_no"], filters=filters, order_by="idx"
-	)
+	entries = frappe.get_all("Serial and Batch Entry", fields=["serial_no"], filters=filters, order_by="idx")
 	if not entries:
 		return []
 
@@ -497,9 +493,7 @@
 				# else it remains the same as that of previous entry
 				self.wh_data.valuation_rate = new_stock_value / new_stock_qty
 
-		if (
-			not self.wh_data.valuation_rate and self.sle.voucher_detail_no and not self.is_rejected_entry()
-		):
+		if not self.wh_data.valuation_rate and self.sle.voucher_detail_no and not self.is_rejected_entry():
 			allow_zero_rate = self.sle_self.check_if_allow_zero_valuation_rate(
 				self.sle.voucher_type, self.sle.voucher_detail_no
 			)
@@ -507,9 +501,7 @@
 				self.wh_data.valuation_rate = self.sle_self.get_fallback_rate(self.sle)
 
 		self.wh_data.qty_after_transaction += self.sle.actual_qty
-		self.wh_data.stock_value = flt(self.wh_data.qty_after_transaction) * flt(
-			self.wh_data.valuation_rate
-		)
+		self.wh_data.stock_value = flt(self.wh_data.qty_after_transaction) * flt(self.wh_data.valuation_rate)
 
 	def is_rejected_entry(self):
 		return is_rejected(self.sle.voucher_type, self.sle.voucher_detail_no, self.sle.warehouse)
@@ -560,7 +552,7 @@
 			self.calculate_avg_rate_for_non_batchwise_valuation()
 			self.set_stock_value_difference()
 
-	def get_batch_no_ledgers(self) -> List[dict]:
+	def get_batch_no_ledgers(self) -> list[dict]:
 		if not self.batchwise_valuation_batches:
 			return []
 
@@ -620,9 +612,7 @@
 		for batch in batches:
 			self.batchwise_valuation_batches.append(batch.name)
 
-		self.non_batchwise_valuation_batches = list(
-			set(self.batches) - set(self.batchwise_valuation_batches)
-		)
+		self.non_batchwise_valuation_batches = list(set(self.batches) - set(self.batchwise_valuation_batches))
 
 	def get_batch_nos(self) -> list:
 		if self.sle.get("batch_nos"):
@@ -659,9 +649,7 @@
 		if not hasattr(self, "wh_data"):
 			return
 
-		self.wh_data.stock_value = round_off_if_near_zero(
-			self.wh_data.stock_value + self.stock_value_change
-		)
+		self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + self.stock_value_change)
 
 		self.wh_data.qty_after_transaction += self.sle.actual_qty
 		if self.wh_data.qty_after_transaction:
@@ -796,17 +784,17 @@
 
 	def set_other_details(self):
 		if not self.get("posting_date"):
-			setattr(self, "posting_date", today())
+			self.posting_date = today()
 			self.__dict__["posting_date"] = self.posting_date
 
 		if not self.get("actual_qty"):
 			qty = self.get("qty") or self.get("total_qty")
 
-			setattr(self, "actual_qty", qty)
+			self.actual_qty = qty
 			self.__dict__["actual_qty"] = self.actual_qty
 
 		if not hasattr(self, "use_serial_batch_fields"):
-			setattr(self, "use_serial_batch_fields", 0)
+			self.use_serial_batch_fields = 0
 
 	def duplicate_package(self):
 		if not self.serial_and_batch_bundle:
@@ -920,9 +908,7 @@
 			self.batches = get_available_batches(kwargs)
 
 	def set_auto_serial_batch_entries_for_inward(self):
-		if (self.get("batches") and self.has_batch_no) or (
-			self.get("serial_nos") and self.has_serial_no
-		):
+		if (self.get("batches") and self.has_batch_no) or (self.get("serial_nos") and self.has_serial_no):
 			if self.use_serial_batch_fields and self.get("serial_nos"):
 				self.make_serial_no_if_not_exists()
 
@@ -950,7 +936,7 @@
 		serial_nos_details = []
 		batch_no = None
 		if self.batches:
-			batch_no = list(self.batches.keys())[0]
+			batch_no = next(iter(self.batches.keys()))
 
 		for serial_no in serial_nos:
 			serial_nos_details.append(
@@ -1040,7 +1026,7 @@
 			msg = f"Please set Serial No Series in the item {self.item_code} or create Serial and Batch Bundle manually."
 			frappe.throw(_(msg))
 
-		for i in range(abs(cint(self.actual_qty))):
+		for _i in range(abs(cint(self.actual_qty))):
 			serial_no = make_autoname(self.serial_no_series, "Serial No")
 			sr_nos.append(serial_no)
 			serial_nos_details.append(
diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py
index ba03ff2..20bd4ca 100644
--- a/erpnext/stock/stock_balance.py
+++ b/erpnext/stock/stock_balance.py
@@ -15,9 +15,7 @@
 	frappe.db.auto_commit_on_many_writes = 1
 
 	if allow_negative_stock:
-		existing_allow_negative_stock = frappe.db.get_single_value(
-			"Stock Settings", "allow_negative_stock"
-		)
+		existing_allow_negative_stock = frappe.db.get_single_value("Stock Settings", "allow_negative_stock")
 		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", 1)
 
 	item_warehouses = frappe.db.sql(
@@ -37,9 +35,7 @@
 			frappe.db.rollback()
 
 	if allow_negative_stock:
-		frappe.db.set_single_value(
-			"Stock Settings", "allow_negative_stock", existing_allow_negative_stock
-		)
+		frappe.db.set_single_value("Stock Settings", "allow_negative_stock", existing_allow_negative_stock)
 	frappe.db.auto_commit_on_many_writes = 0
 
 
@@ -51,7 +47,6 @@
 	only_bin=False,
 	allow_negative_stock=False,
 ):
-
 	if not only_bin:
 		repost_actual_qty(item_code, warehouse, allow_zero_rate, allow_negative_stock)
 
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index aef1a82..edb4df6 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -4,7 +4,6 @@
 import copy
 import gzip
 import json
-from typing import Optional, Set, Tuple
 
 import frappe
 from frappe import _, scrub
@@ -272,12 +271,10 @@
 		)
 		affected_transactions.update(obj.affected_transactions)
 
-		distinct_item_warehouses[
-			(args[i].get("item_code"), args[i].get("warehouse"))
-		].reposting_status = True
+		distinct_item_warehouses[(args[i].get("item_code"), args[i].get("warehouse"))].reposting_status = True
 
 		if obj.new_items_found:
-			for item_wh, data in distinct_item_warehouses.items():
+			for _item_wh, data in distinct_item_warehouses.items():
 				if ("args_idx" not in data and not data.reposting_status) or (
 					data.sle_changed and data.reposting_status
 				):
@@ -324,9 +321,7 @@
 			frappe.throw(_(validation_msg))
 
 
-def update_args_in_repost_item_valuation(
-	doc, index, args, distinct_item_warehouses, affected_transactions
-):
+def update_args_in_repost_item_valuation(doc, index, args, distinct_item_warehouses, affected_transactions):
 	if not doc.items_to_be_repost:
 		file_name = ""
 		if doc.reposting_data_file:
@@ -478,7 +473,7 @@
 	return new_dict
 
 
-def get_affected_transactions(doc, reposting_data=None) -> Set[Tuple[str, str]]:
+def get_affected_transactions(doc, reposting_data=None) -> set[tuple[str, str]]:
 	if not reposting_data and doc and doc.reposting_data_file:
 		reposting_data = get_reposting_data(doc.reposting_data_file)
 
@@ -497,7 +492,7 @@
 		return doc.current_index
 
 
-class update_entries_after(object):
+class update_entries_after:
 	"""
 	update valution rate and qty after transaction
 	from the current time-bucket onwards
@@ -539,7 +534,7 @@
 
 		self.new_items_found = False
 		self.distinct_item_warehouses = args.get("distinct_item_warehouses", frappe._dict())
-		self.affected_transactions: Set[Tuple[str, str]] = set()
+		self.affected_transactions: set[tuple[str, str]] = set()
 		self.reserved_stock = flt(self.args.reserved_stock)
 
 		self.data = frappe._dict()
@@ -618,9 +613,7 @@
 			self.process_sle(sle)
 
 	def get_sle_against_current_voucher(self):
-		self.args["posting_datetime"] = get_combine_datetime(
-			self.args.posting_date, self.args.posting_time
-		)
+		self.args["posting_datetime"] = get_combine_datetime(self.args.posting_date, self.args.posting_time)
 
 		return frappe.db.sql(
 			"""
@@ -658,9 +651,7 @@
 
 		if not dependant_sle:
 			return entries_to_fix
-		elif (
-			dependant_sle.item_code == self.item_code and dependant_sle.warehouse == self.args.warehouse
-		):
+		elif dependant_sle.item_code == self.item_code and dependant_sle.warehouse == self.args.warehouse:
 			return entries_to_fix
 		elif dependant_sle.item_code != self.item_code:
 			self.update_distinct_item_warehouses(dependant_sle)
@@ -680,9 +671,7 @@
 			self.distinct_item_warehouses[key] = val
 			self.new_items_found = True
 		else:
-			existing_sle_posting_date = (
-				self.distinct_item_warehouses[key].get("sle", {}).get("posting_date")
-			)
+			existing_sle_posting_date = self.distinct_item_warehouses[key].get("sle", {}).get("posting_date")
 
 			dependent_voucher_detail_nos = self.get_dependent_voucher_detail_nos(key)
 
@@ -774,7 +763,9 @@
 					self.wh_data.valuation_rate
 				)
 				if self.valuation_method != "Moving Average":
-					self.wh_data.stock_queue = [[self.wh_data.qty_after_transaction, self.wh_data.valuation_rate]]
+					self.wh_data.stock_queue = [
+						[self.wh_data.qty_after_transaction, self.wh_data.valuation_rate]
+					]
 			else:
 				if self.valuation_method == "Moving Average":
 					self.get_moving_average_values(sle)
@@ -843,9 +834,7 @@
 				self.wh_data.valuation_rate = new_stock_value / new_stock_qty
 
 		if not self.wh_data.valuation_rate and sle.voucher_detail_no:
-			allow_zero_rate = self.check_if_allow_zero_valuation_rate(
-				sle.voucher_type, sle.voucher_detail_no
-			)
+			allow_zero_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
 			if not allow_zero_rate:
 				self.wh_data.valuation_rate = self.get_fallback_rate(sle)
 
@@ -862,9 +851,7 @@
 			if abs(sle.actual_qty) == 0.0:
 				sle.is_cancelled = 1
 
-		if sle.serial_and_batch_bundle and frappe.get_cached_value(
-			"Item", sle.item_code, "has_serial_no"
-		):
+		if sle.serial_and_batch_bundle and frappe.get_cached_value("Item", sle.item_code, "has_serial_no"):
 			self.update_serial_no_status(sle)
 
 	def update_serial_no_status(self, sle):
@@ -1265,9 +1252,7 @@
 		stock_value_difference = stock_value - prev_stock_value
 
 		self.wh_data.stock_queue = stock_queue.state
-		self.wh_data.stock_value = round_off_if_near_zero(
-			self.wh_data.stock_value + stock_value_difference
-		)
+		self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + stock_value_difference)
 
 		if not self.wh_data.stock_queue:
 			self.wh_data.stock_queue.append(
@@ -1305,9 +1290,7 @@
 				outgoing_rate = self.get_fallback_rate(sle)
 			stock_value_difference = outgoing_rate * actual_qty
 
-		self.wh_data.stock_value = round_off_if_near_zero(
-			self.wh_data.stock_value + stock_value_difference
-		)
+		self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + stock_value_difference)
 		if self.wh_data.qty_after_transaction:
 			self.wh_data.valuation_rate = self.wh_data.stock_value / self.wh_data.qty_after_transaction
 
@@ -1356,7 +1339,6 @@
 				exceptions[0]["voucher_type"],
 				exceptions[0]["voucher_no"],
 			) in frappe.local.flags.currently_saving:
-
 				msg = _("{0} units of {1} needed in {2} to complete this transaction.").format(
 					frappe.bold(abs(deficiency)),
 					frappe.get_desk_link("Item", exceptions[0]["item_code"]),
@@ -1379,13 +1361,11 @@
 					allowed_qty = abs(exceptions[0]["actual_qty"]) - abs(exceptions[0]["diff"])
 
 					if allowed_qty > 0:
-						msg = "{0} As {1} units are reserved for other sales orders, you are allowed to consume only {2} units.".format(
+						msg = "{} As {} units are reserved for other sales orders, you are allowed to consume only {} units.".format(
 							msg, frappe.bold(self.reserved_stock), frappe.bold(allowed_qty)
 						)
 					else:
-						msg = "{0} As the full stock is reserved for other sales orders, you're not allowed to consume the stock.".format(
-							msg,
-						)
+						msg = f"{msg} As the full stock is reserved for other sales orders, you're not allowed to consume the stock."
 
 				msg_list.append(msg)
 
@@ -1434,7 +1414,7 @@
 		voucher_condition = f"and voucher_no != '{voucher_no}'"
 
 	sle = frappe.db.sql(
-		"""
+		f"""
 		select *, posting_datetime as "timestamp"
 		from `tabStock Ledger Entry`
 		where item_code = %(item_code)s
@@ -1446,10 +1426,7 @@
 			)
 		order by posting_datetime desc, creation desc
 		limit 1
-		for update""".format(
-			operator=operator,
-			voucher_condition=voucher_condition,
-		),
+		for update""",
 		args,
 		as_dict=1,
 	)
@@ -1489,7 +1466,7 @@
 	extra_cond=None,
 ):
 	"""get stock ledger entries filtered by specific posting datetime conditions"""
-	conditions = " and posting_datetime {0} %(posting_datetime)s".format(operator)
+	conditions = f" and posting_datetime {operator} %(posting_datetime)s"
 	if previous_sle.get("warehouse"):
 		conditions += " and warehouse = %(warehouse)s"
 	elif previous_sle.get("warehouse_condition"):
@@ -1501,17 +1478,17 @@
 		conditions += (
 			""" and
 			(
-				serial_no = {0}
-				or serial_no like {1}
-				or serial_no like {2}
-				or serial_no like {3}
+				serial_no = {}
+				or serial_no like {}
+				or serial_no like {}
+				or serial_no like {}
 			)
 		"""
 		).format(
 			frappe.db.escape(serial_no),
-			frappe.db.escape("{}\n%".format(serial_no)),
-			frappe.db.escape("%\n{}".format(serial_no)),
-			frappe.db.escape("%\n{}\n%".format(serial_no)),
+			frappe.db.escape(f"{serial_no}\n%"),
+			frappe.db.escape(f"%\n{serial_no}"),
+			frappe.db.escape(f"%\n{serial_no}\n%"),
 		)
 
 	if not previous_sle.get("posting_date"):
@@ -1531,17 +1508,16 @@
 		"""
 		select *, posting_datetime as "timestamp"
 		from `tabStock Ledger Entry`
-		where item_code = %%(item_code)s
+		where item_code = %(item_code)s
 		and is_cancelled = 0
-		%(conditions)s
-		order by posting_datetime %(order)s, creation %(order)s
-		%(limit)s %(for_update)s"""
-		% {
-			"conditions": conditions,
-			"limit": limit or "",
-			"for_update": for_update and "for update" or "",
-			"order": order,
-		},
+		{conditions}
+		order by posting_datetime {order}, creation {order}
+		{limit} {for_update}""".format(
+			conditions=conditions,
+			limit=limit or "",
+			for_update=for_update and "for update" or "",
+			order=order,
+		),
 		previous_sle,
 		as_dict=1,
 		debug=debug,
@@ -1566,17 +1542,14 @@
 	)
 
 
-def get_batch_incoming_rate(
-	item_code, warehouse, batch_no, posting_date, posting_time, creation=None
-):
-
+def get_batch_incoming_rate(item_code, warehouse, batch_no, posting_date, posting_time, creation=None):
 	sle = frappe.qb.DocType("Stock Ledger Entry")
 
 	timestamp_condition = sle.posting_datetime < get_combine_datetime(posting_date, posting_time)
 	if creation:
-		timestamp_condition |= (
-			sle.posting_datetime == get_combine_datetime(posting_date, posting_time)
-		) & (sle.creation < creation)
+		timestamp_condition |= (sle.posting_datetime == get_combine_datetime(posting_date, posting_time)) & (
+			sle.creation < creation
+		)
 
 	batch_details = (
 		frappe.qb.from_(sle)
@@ -1606,7 +1579,6 @@
 	batch_no=None,
 	serial_and_batch_bundle=None,
 ):
-
 	from erpnext.stock.serial_batch_bundle import BatchNoValuation
 
 	if not company:
@@ -1697,7 +1669,7 @@
 		solutions += (
 			"<li>"
 			+ _("If not, you can Cancel / Submit this entry")
-			+ " {0} ".format(frappe.bold(_("after")))
+			+ " {} ".format(frappe.bold(_("after")))
 			+ _("performing either one below:")
 			+ "</li>"
 		)
@@ -1833,9 +1805,7 @@
 	neg_sle = get_future_sle_with_negative_qty(args)
 
 	if is_negative_with_precision(neg_sle):
-		message = _(
-			"{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction."
-		).format(
+		message = _("{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction.").format(
 			abs(neg_sle[0]["qty_after_transaction"]),
 			frappe.get_desk_link("Item", args.item_code),
 			frappe.get_desk_link("Warehouse", args.warehouse),
@@ -1970,12 +1940,8 @@
 
 
 def validate_reserved_serial_nos(item_code, warehouse, serial_nos):
-	if reserved_serial_nos_details := get_sre_reserved_serial_nos_details(
-		item_code, warehouse, serial_nos
-	):
-		if common_serial_nos := list(
-			set(serial_nos).intersection(set(reserved_serial_nos_details.keys()))
-		):
+	if reserved_serial_nos_details := get_sre_reserved_serial_nos_details(item_code, warehouse, serial_nos):
+		if common_serial_nos := list(set(serial_nos).intersection(set(reserved_serial_nos_details.keys()))):
 			msg = _(
 				"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding."
 			)
@@ -2019,7 +1985,7 @@
 				frappe.throw(msg, title=_("Reserved Stock for Batch"))
 
 
-def is_negative_stock_allowed(*, item_code: Optional[str] = None) -> bool:
+def is_negative_stock_allowed(*, item_code: str | None = None) -> bool:
 	if cint(frappe.db.get_single_value("Stock Settings", "allow_negative_stock", cache=True)):
 		return True
 	if item_code and cint(frappe.db.get_value("Item", item_code, "allow_negative_stock", cache=True)):
diff --git a/erpnext/stock/tests/test_get_item_details.py b/erpnext/stock/tests/test_get_item_details.py
index b53e29e..30f748a 100644
--- a/erpnext/stock/tests/test_get_item_details.py
+++ b/erpnext/stock/tests/test_get_item_details.py
@@ -1,5 +1,3 @@
-import json
-
 import frappe
 from frappe.test_runner import make_test_records
 from frappe.tests.utils import FrappeTestCase
@@ -16,7 +14,6 @@
 		super().setUp()
 
 	def test_get_item_detail_purchase_order(self):
-
 		args = frappe._dict(
 			{
 				"item_code": "_Test Item",
@@ -29,7 +26,6 @@
 				"name": None,
 				"supplier": "_Test Supplier",
 				"transaction_date": None,
-				"conversion_rate": 1.0,
 				"price_list": "_Test Buying Price List",
 				"is_subcontracted": 0,
 				"ignore_pricing_rule": 1,
diff --git a/erpnext/stock/tests/test_utils.py b/erpnext/stock/tests/test_utils.py
index 4e93ac9..bc646fa 100644
--- a/erpnext/stock/tests/test_utils.py
+++ b/erpnext/stock/tests/test_utils.py
@@ -28,7 +28,7 @@
 		)
 		self.assertGreaterEqual(len(sles), len(expected_sles))
 
-		for exp_sle, act_sle in zip(expected_sles, sles):
+		for exp_sle, act_sle in zip(expected_sles, sles, strict=False):
 			for k, v in exp_sle.items():
 				act_value = act_sle[k]
 				if k == "stock_queue":
@@ -51,7 +51,7 @@
 			order_by=order_by or "posting_date, creation",
 		)
 		self.assertGreaterEqual(len(actual_gles), len(expected_gles))
-		for exp_gle, act_gle in zip(expected_gles, actual_gles):
+		for exp_gle, act_gle in zip(expected_gles, actual_gles, strict=False):
 			for k, exp_value in exp_gle.items():
 				act_value = act_gle[k]
 				self.assertEqual(exp_value, act_value, msg=f"{k} doesn't match \n{exp_gle}\n{act_gle}")
diff --git a/erpnext/stock/tests/test_valuation.py b/erpnext/stock/tests/test_valuation.py
index 4d8990a..47b8f0b 100644
--- a/erpnext/stock/tests/test_valuation.py
+++ b/erpnext/stock/tests/test_valuation.py
@@ -28,9 +28,7 @@
 		self.assertAlmostEqual(sum(q for q, _ in self.queue), qty, msg=f"queue: {self.queue}", places=4)
 
 	def assertTotalValue(self, value):
-		self.assertAlmostEqual(
-			sum(q * r for q, r in self.queue), value, msg=f"queue: {self.queue}", places=2
-		)
+		self.assertAlmostEqual(sum(q * r for q, r in self.queue), value, msg=f"queue: {self.queue}", places=2)
 
 	def test_simple_addition(self):
 		self.queue.add_stock(1, 10)
@@ -210,9 +208,7 @@
 		self.assertAlmostEqual(sum(q for q, _ in self.stack), qty, msg=f"stack: {self.stack}", places=4)
 
 	def assertTotalValue(self, value):
-		self.assertAlmostEqual(
-			sum(q * r for q, r in self.stack), value, msg=f"stack: {self.stack}", places=2
-		)
+		self.assertAlmostEqual(sum(q * r for q, r in self.stack), value, msg=f"stack: {self.stack}", places=2)
 
 	def test_simple_addition(self):
 		self.stack.add_stock(1, 10)
@@ -355,7 +351,6 @@
 			self.assertEqual(stock_queue, expected_queue)
 
 	def test_lifo_values(self):
-
 		in1 = self._make_stock_entry(1, 1)
 		self.assertStockQueue(in1, [[1, 1]])
 
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 93e2fa4..64c239a 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -3,7 +3,6 @@
 
 
 import json
-from typing import Dict, Optional
 
 import frappe
 from frappe import _
@@ -18,7 +17,7 @@
 from erpnext.stock.serial_batch_bundle import BatchNoValuation, SerialNoValuation
 from erpnext.stock.valuation import FIFOValuation, LIFOValuation
 
-BarcodeScanResult = Dict[str, Optional[str]]
+BarcodeScanResult = dict[str, str | None]
 
 
 class InvalidWarehouseCompany(frappe.ValidationError):
@@ -59,7 +58,7 @@
 
 
 def get_stock_value_on(
-	warehouses: list | str = None, posting_date: str = None, item_code: str = None
+	warehouses: list | str | None = None, posting_date: str | None = None, item_code: str | None = None
 ) -> float:
 	if not posting_date:
 		posting_date = nowdate()
@@ -150,9 +149,7 @@
 				else (0.0, 0.0, None)
 			)
 		else:
-			return (
-				(last_entry.qty_after_transaction, last_entry.valuation_rate) if last_entry else (0.0, 0.0)
-			)
+			return (last_entry.qty_after_transaction, last_entry.valuation_rate) if last_entry else (0.0, 0.0)
 	else:
 		return last_entry.qty_after_transaction if last_entry else 0.0
 
@@ -180,10 +177,8 @@
 			condition += " AND warehouse = %s"
 
 	actual_qty = frappe.db.sql(
-		"""select sum(actual_qty) from tabBin
-		where item_code=%s {0}""".format(
-			condition
-		),
+		f"""select sum(actual_qty) from tabBin
+		where item_code=%s {condition}""",
 		values,
 	)[0][0]
 
@@ -278,9 +273,7 @@
 		args.actual_qty = args.qty
 		args.serial_nos = get_serial_nos_data(args.get("serial_no"))
 
-		sn_obj = SerialNoValuation(
-			sle=args, warehouse=args.get("warehouse"), item_code=args.get("item_code")
-		)
+		sn_obj = SerialNoValuation(sle=args, warehouse=args.get("warehouse"), item_code=args.get("item_code"))
 
 		return sn_obj.get_incoming_rate()
 	elif (
@@ -288,7 +281,6 @@
 		and frappe.db.get_value("Batch", args.get("batch_no"), "use_batchwise_valuation", cache=True)
 		and not args.get("serial_and_batch_bundle")
 	):
-
 		args.actual_qty = args.qty
 		args.batch_nos = frappe._dict({args.batch_no: args})
 
@@ -329,10 +321,7 @@
 	return flt(in_rate)
 
 
-def get_batch_incoming_rate(
-	item_code, warehouse, batch_no, posting_date, posting_time, creation=None
-):
-
+def get_batch_incoming_rate(item_code, warehouse, batch_no, posting_date, posting_time, creation=None):
 	sle = frappe.qb.DocType("Stock Ledger Entry")
 
 	timestamp_condition = CombineDatetime(sle.posting_date, sle.posting_time) < CombineDatetime(
@@ -340,8 +329,7 @@
 	)
 	if creation:
 		timestamp_condition |= (
-			CombineDatetime(sle.posting_date, sle.posting_time)
-			== CombineDatetime(posting_date, posting_time)
+			CombineDatetime(sle.posting_date, sle.posting_time) == CombineDatetime(posting_date, posting_time)
 		) & (sle.creation < creation)
 
 	batch_details = (
@@ -379,9 +367,7 @@
 	"""get valuation method from item or default"""
 	val_method = frappe.db.get_value("Item", item_code, "valuation_method", cache=True)
 	if not val_method:
-		val_method = (
-			frappe.db.get_single_value("Stock Settings", "valuation_method", cache=True) or "FIFO"
-		)
+		val_method = frappe.db.get_single_value("Stock Settings", "valuation_method", cache=True) or "FIFO"
 	return val_method
 
 
@@ -456,7 +442,6 @@
 	if not include_uom or not conversion_factors:
 		return
 
-	convertible_cols = {}
 	is_dict_obj = False
 	if isinstance(result[0], dict):
 		is_dict_obj = True
@@ -471,8 +456,8 @@
 			columns.insert(
 				idx + 1,
 				{
-					"label": "{0} (per {1})".format(d.get("label"), include_uom),
-					"fieldname": "{0}_{1}".format(d.get("fieldname"), frappe.scrub(include_uom)),
+					"label": "{} (per {})".format(d.get("label"), include_uom),
+					"fieldname": "{}_{}".format(d.get("fieldname"), frappe.scrub(include_uom)),
 					"fieldtype": "Currency" if d.get("convertible") == "rate" else "Float",
 				},
 			)
@@ -495,7 +480,7 @@
 			if not is_dict_obj:
 				row.insert(key + 1, new_value)
 			else:
-				new_key = "{0}_{1}".format(key, frappe.scrub(include_uom))
+				new_key = f"{key}_{frappe.scrub(include_uom)}"
 				update_dict_values.append([row, new_key, new_value])
 
 	for data in update_dict_values:
@@ -518,9 +503,9 @@
 				{"converted_col": columns[next_col]["fieldname"], "for_type": col.get("convertible")}
 			)
 			if col.get("convertible") == "rate":
-				columns[next_col]["label"] += " (per {})".format(include_uom)
+				columns[next_col]["label"] += f" (per {include_uom})"
 			else:
-				columns[next_col]["label"] += " ({})".format(include_uom)
+				columns[next_col]["label"] += f" ({include_uom})"
 
 	for row_idx, row in enumerate(result):
 		for convertible_col, data in convertible_column_map.items():
@@ -594,7 +579,7 @@
 	def set_cache(data: BarcodeScanResult):
 		frappe.cache().set_value(f"erpnext:barcode_scan:{search_value}", data, expires_in_sec=120)
 
-	def get_cache() -> Optional[BarcodeScanResult]:
+	def get_cache() -> BarcodeScanResult | None:
 		if data := frappe.cache().get_value(f"erpnext:barcode_scan:{search_value}"):
 			return data
 
@@ -647,7 +632,7 @@
 	return {}
 
 
-def _update_item_info(scan_result: Dict[str, Optional[str]]) -> Dict[str, Optional[str]]:
+def _update_item_info(scan_result: dict[str, str | None]) -> dict[str, str | None]:
 	if item_code := scan_result.get("item_code"):
 		if item_info := frappe.get_cached_value(
 			"Item",
diff --git a/erpnext/stock/valuation.py b/erpnext/stock/valuation.py
index 35f4f12..b1df982 100644
--- a/erpnext/stock/valuation.py
+++ b/erpnext/stock/valuation.py
@@ -1,9 +1,10 @@
 from abc import ABC, abstractmethod, abstractproperty
-from typing import Callable, List, NewType, Optional, Tuple
+from collections.abc import Callable
+from typing import NewType
 
 from frappe.utils import flt
 
-StockBin = NewType("StockBin", List[float])  # [[qty, rate], ...]
+StockBin = NewType("StockBin", list[float])  # [[qty, rate], ...]
 
 # Indexes of values inside FIFO bin 2-tuple
 QTY = 0
@@ -17,15 +18,15 @@
 
 	@abstractmethod
 	def remove_stock(
-		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] = None
-	) -> List[StockBin]:
+		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] | None = None
+	) -> list[StockBin]:
 		pass
 
 	@abstractproperty
-	def state(self) -> List[StockBin]:
+	def state(self) -> list[StockBin]:
 		pass
 
-	def get_total_stock_and_value(self) -> Tuple[float, float]:
+	def get_total_stock_and_value(self) -> tuple[float, float]:
 		total_qty = 0.0
 		total_value = 0.0
 
@@ -62,11 +63,11 @@
 	# ref: https://docs.python.org/3/reference/datamodel.html#slots
 	__slots__ = ["queue"]
 
-	def __init__(self, state: Optional[List[StockBin]]):
-		self.queue: List[StockBin] = state if state is not None else []
+	def __init__(self, state: list[StockBin] | None):
+		self.queue: list[StockBin] = state if state is not None else []
 
 	@property
-	def state(self) -> List[StockBin]:
+	def state(self) -> list[StockBin]:
 		"""Get current state of queue."""
 		return self.queue
 
@@ -95,8 +96,8 @@
 					self.queue[-1][QTY] = qty
 
 	def remove_stock(
-		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] = None
-	) -> List[StockBin]:
+		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] | None = None
+	) -> list[StockBin]:
 		"""Remove stock from the queue and return popped bins.
 
 		args:
@@ -166,11 +167,11 @@
 	# ref: https://docs.python.org/3/reference/datamodel.html#slots
 	__slots__ = ["stack"]
 
-	def __init__(self, state: Optional[List[StockBin]]):
-		self.stack: List[StockBin] = state if state is not None else []
+	def __init__(self, state: list[StockBin] | None):
+		self.stack: list[StockBin] = state if state is not None else []
 
 	@property
-	def state(self) -> List[StockBin]:
+	def state(self) -> list[StockBin]:
 		"""Get current state of stack."""
 		return self.stack
 
@@ -201,8 +202,8 @@
 					self.stack[-1][QTY] = qty
 
 	def remove_stock(
-		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] = None
-	) -> List[StockBin]:
+		self, qty: float, outgoing_rate: float = 0.0, rate_generator: Callable[[], float] | None = None
+	) -> list[StockBin]:
 		"""Remove stock from the stack and return popped bins.
 
 		args: