mergeron 2025.739439.4__py3-none-any.whl → 2025.739439.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mergeron might be problematic. Click here for more details.

mergeron/__init__.py CHANGED
@@ -15,7 +15,7 @@ from ruamel import yaml
15
15
 
16
16
  _PKG_NAME: str = Path(__file__).parent.name
17
17
 
18
- VERSION = "2025.739439.4"
18
+ VERSION = "2025.739439.7"
19
19
 
20
20
  __version__ = VERSION
21
21
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import decimal
4
4
  from collections.abc import Callable
5
+ from math import fma
5
6
  from types import ModuleType
6
7
  from typing import Literal, TypedDict
7
8
 
@@ -223,14 +224,14 @@ def diversion_share_boundary_wtd_avg(
223
224
  dps: int = 5,
224
225
  ) -> GuidelinesBoundary:
225
226
  R"""
226
- Share combinations on the share-weighted average diversion ratio boundary.
227
+ Share combinations on the share-weighted average diversion share boundary.
227
228
 
228
229
  Parameters
229
230
  ----------
230
231
  _delta_star
231
- Diversion share (:math:`\overline{d} / \overline{r}`)
232
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
232
233
  _r_val
233
- recapture ratio
234
+ Recapture ratio.
234
235
  agg_method
235
236
  Whether "arithmetic mean", "geometric mean", or "distance".
236
237
  weighting
@@ -423,7 +424,7 @@ def diversion_share_boundary_xact_avg(
423
424
  dps: int = 5,
424
425
  ) -> GuidelinesBoundary:
425
426
  R"""
426
- Share combinations for the exact average diversion/share-ratio boundary.
427
+ Share combinations for the exact average diversion share boundary.
427
428
 
428
429
  Notes
429
430
  -----
@@ -461,9 +462,9 @@ def diversion_share_boundary_xact_avg(
461
462
  Parameters
462
463
  ----------
463
464
  _delta_star
464
- Diversion share (:math:`\overline{d} / \overline{r}`).
465
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
465
466
  _r_val
466
- Recapture ratio
467
+ Recapture ratio.
467
468
  recapture_form
468
469
  Whether recapture-ratio is MNL-consistent ("inside-out") or has fixed
469
470
  value for both merging firms ("proportional").
@@ -590,7 +591,7 @@ def diversion_share_boundary_min(
590
591
  Parameters
591
592
  ----------
592
593
  _delta_star
593
- Diversion share (:math:`\overline{d} / \overline{r}`).
594
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
594
595
  _r_val
595
596
  Recapture ratio.
596
597
  recapture_form
@@ -634,7 +635,7 @@ def diversion_share_boundary_max(
634
635
  Parameters
635
636
  ----------
636
637
  _delta_star
637
- Diversion share (:math:`\overline{d} / \overline{r}`).
638
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
638
639
  _
639
640
  Placeholder for recapture ratio included for consistency with other
640
641
  share-ratio boundary functions.
@@ -695,7 +696,7 @@ def lerp[LerpT: (float, MPFloat, ArrayDouble, ArrayBIGINT)](
695
696
  _x1: LerpT, _x2: LerpT, _r: float | MPFloat = 0.25, /
696
697
  ) -> LerpT:
697
698
  R"""
698
- From the function of the same name in the C++ standard [#]_.
699
+ From the function of the same name in the C++ standard [#]_. Also, [#]_.
699
700
 
700
701
  Constructs the weighted average, :math:`w_1 x_1 + w_2 x_2`, where
701
702
  :math:`w_1 = 1 - r` and :math:`w_2 = r`.
@@ -703,9 +704,9 @@ def lerp[LerpT: (float, MPFloat, ArrayDouble, ArrayBIGINT)](
703
704
  Parameters
704
705
  ----------
705
706
  _x1, _x2
706
- bounds :math:`x_1, x_2` to interpolate between.
707
+ Interpolation bounds :math:`x_1, x_2`.
707
708
  _r
708
- interpolation weight :math:`r` assigned to :math:`x_2`
709
+ Interpolation weight :math:`r` assigned to :math:`x_2`
709
710
 
710
711
  Returns
711
712
  -------
@@ -722,15 +723,20 @@ def lerp[LerpT: (float, MPFloat, ArrayDouble, ArrayBIGINT)](
722
723
 
723
724
  .. [#] C++ Reference, https://en.cppreference.com/w/cpp/numeric/lerp
724
725
 
726
+ .. [#] Harris, Mark (2015). "GPU Pro Tip: Lerp faster in C++". nvidia.com (Jun 10, 2015). Online at:
727
+ https://developer.nvidia.com/blog/lerp-faster-cuda/
728
+
729
+
725
730
  """
726
- if not 0 <= _r <= 1:
727
- raise ValueError("Specified interpolation weight must lie in [0, 1].")
728
- elif _r == 0:
729
- return _x1
730
- elif _r == 1:
731
- return _x2
732
- else:
733
- return _r * _x2 + (1 - _r) * _x1
731
+ match _r:
732
+ case 0:
733
+ return _x1
734
+ case 1:
735
+ return _x2
736
+ case _:
737
+ if not 0 <= _r <= 1:
738
+ raise ValueError("Specified interpolation weight must lie in [0, 1].")
739
+ return fma(_x2, _r, fma(_x1, -_r, _x1))
734
740
 
735
741
 
736
742
  def round_cust(
@@ -108,9 +108,9 @@ def diversion_share_boundary_qdtr_wtd_avg(
108
108
  Parameters
109
109
  ----------
110
110
  _delta_star
111
- corollary to GUPPI bound (:math:`\overline{g} / (m^* \cdot \overline{r})`)
111
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
112
112
  _r_val
113
- recapture ratio
113
+ Recapture ratio.
114
114
  weighting
115
115
  Whether "own-share" or "cross-product-share" (or None for simple, unweighted average)
116
116
  recapture_form
@@ -229,9 +229,9 @@ def diversion_share_boundary_distance(
229
229
  Parameters
230
230
  ----------
231
231
  _delta_star
232
- corollary to GUPPI bound (:math:`\overline{g} / (m^* \cdot \overline{r})`)
232
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
233
233
  _r_val
234
- recapture ratio
234
+ Recapture ratio.
235
235
  agg_method
236
236
  Whether "arithmetic mean" or "distance".
237
237
  weighting
@@ -409,9 +409,9 @@ def diversion_share_boundary_xact_avg_mp(
409
409
  Parameters
410
410
  ----------
411
411
  _delta_star
412
- Diversion share (:math:`\overline{d} / \overline{r}`).
412
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
413
413
  _r_val
414
- Recapture ratio
414
+ Recapture ratio.
415
415
  recapture_form
416
416
  Whether recapture-ratio is MNL-consistent ("inside-out") or has fixed
417
417
  value for both merging firms ("proportional").
@@ -529,14 +529,14 @@ def _diversion_share_boundary_wtd_avg_autoroot(
529
529
  dps: int = 5,
530
530
  ) -> GuidelinesBoundary:
531
531
  R"""
532
- Share combinations on the share-weighted average diversion ratio boundary.
532
+ Share combinations on the share-weighted average diversion share boundary.
533
533
 
534
534
  Parameters
535
535
  ----------
536
536
  _delta_star
537
- Diversion share (:math:`\overline{d} / \overline{r}`)
537
+ Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
538
538
  _r_val
539
- recapture ratio
539
+ Recapture ratio.
540
540
  agg_method
541
541
  Whether "arithmetic mean", "geometric mean", or "distance".
542
542
  weighting
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: mergeron
3
- Version: 2025.739439.4
3
+ Version: 2025.739439.7
4
4
  Summary: Python for analyzing merger enforcement policy
5
5
  License: MIT
6
6
  Keywords: merger enforcement policy,merger guidelines,merger screening,enforcement presumptions,concentration standards,diversion ratio,upward pricing pressure,GUPPI
7
7
  Author: Murthy Kambhampaty
8
8
  Author-email: smk@capeconomics.com
9
- Requires-Python: >=3.12,<4.0
9
+ Requires-Python: >=3.13,<4.0
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: End Users/Desktop
@@ -15,7 +15,6 @@ Classifier: License :: OSI Approved :: MIT License
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python
17
17
  Classifier: Programming Language :: Python :: Implementation :: CPython
18
- Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
20
19
  Requires-Dist: aenum (>=3.1.16)
21
20
  Requires-Dist: attrs (>=25.3.0)
@@ -62,10 +61,10 @@ mergeron: Python for analyzing merger enforcement policy
62
61
 
63
62
  .. image:: https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json
64
63
  :target: https://python-poetry.org/
65
- .. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
66
- :target: https://github.com/astral-sh/ruff/
67
64
  .. image:: https://www.mypy-lang.org/static/mypy_badge.svg
68
65
  :target: https://mypy-lang.org/
66
+ .. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
67
+ :target: https://github.com/astral-sh/ruff/
69
68
  .. image:: https://img.shields.io/badge/code%20style-black-000000
70
69
  :target: https://github.com/psf/black/
71
70
  .. image:: https://img.shields.io/badge/License-MIT-yellow
@@ -1,10 +1,10 @@
1
- mergeron/__init__.py,sha256=DkjEtEBsfI3wGBKXxoK8Rdch2WGvotv0rA_7b_21RNs,6751
1
+ mergeron/__init__.py,sha256=IiCnxgPoGTxGfs7Z74pv6xAfnTSXSISfl7Ed_mrS224,6751
2
2
  mergeron/core/__init__.py,sha256=4Y_q-Qu7gXENVKHS-lNebn5mPZDy9oPHFwUV7fAW9Nw,3269
3
3
  mergeron/core/empirical_margin_distribution.py,sha256=61U-KLB563BPWM5zWyWp82c4PhcsAG-IKI0WWYGjBKg,11740
4
4
  mergeron/core/ftc_merger_investigations_data.py,sha256=oM4cs2PnyeSwyV1LOE_EYCUEzCKPm7lnCGxLIc6JQY8,28820
5
5
  mergeron/core/guidelines_boundaries.py,sha256=PvSOLB6KlXu9KX6NdpStuRluP6nrZqUzSHT6usa5600,15630
6
- mergeron/core/guidelines_boundary_functions.py,sha256=hJD6JoMBcjTqq0zJI1a7PG1Mcrp5G5R0cHYEg9aCZmo,30320
7
- mergeron/core/guidelines_boundary_functions_extra.py,sha256=g4V4-vxX8g6X-lXUVyU4-yPj5LTjCoRDPQUlbb2bBHY,22078
6
+ mergeron/core/guidelines_boundary_functions.py,sha256=nStdhnxtvWJJ0jOR-5mPydDE3KMFf6rrfrT3IQUjjGY,30759
7
+ mergeron/core/guidelines_boundary_functions_extra.py,sha256=DqwAsZ-ynbRAJE3rzAELCJEWyOtor3rvYUUUDTQpD7M,22243
8
8
  mergeron/core/pseudorandom_numbers.py,sha256=-mPveXjJJ446NrBMAmWIa2jI6j0Px0xcCJTGEEsn3bo,10149
9
9
  mergeron/data/__init__.py,sha256=SAFkR23RBM0zwGam2TeWmw08oHAKmU2YF-Nygj73ies,1845
10
10
  mergeron/data/damodaran_margin_data_serialized.zip,sha256=Wc1v9buSrYTWWAravG8W9nPbgsU07zMtSAR2RvMQU5s,623482
@@ -15,6 +15,6 @@ mergeron/gen/data_generation_functions.py,sha256=hXUq5D2CIUkM4_NdGXiOb4XATYwIUeU
15
15
  mergeron/gen/enforcement_stats.py,sha256=etTax-sBSn8DveF-IxuBJDdX0XSBD6oFU9vaZe6cYks,14387
16
16
  mergeron/gen/upp_tests.py,sha256=gRJISQ2jGmIDmFOvaTIkvYooI4mK-QbgkfgL46RrRio,7445
17
17
  mergeron/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
18
- mergeron-2025.739439.4.dist-info/METADATA,sha256=w-4gkqcsE6KJYRoE0Mi-oxclDYioc4_KyYRimHIcr1o,4270
19
- mergeron-2025.739439.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
20
- mergeron-2025.739439.4.dist-info/RECORD,,
18
+ mergeron-2025.739439.7.dist-info/METADATA,sha256=Y-j9QMbM5qpsUVI_83FmBiTQdp--Xaw9IGVw4NjvEVc,4219
19
+ mergeron-2025.739439.7.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
20
+ mergeron-2025.739439.7.dist-info/RECORD,,