mergeron 2025.739439.4__tar.gz → 2025.739439.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mergeron might be problematic. Click here for more details.
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/PKG-INFO +4 -5
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/pyproject.toml +2 -3
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/__init__.py +1 -1
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/guidelines_boundary_functions.py +25 -19
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/guidelines_boundary_functions_extra.py +9 -9
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/README.rst +2 -2
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/__init__.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/empirical_margin_distribution.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/ftc_merger_investigations_data.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/guidelines_boundaries.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/pseudorandom_numbers.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/data/__init__.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/data/damodaran_margin_data_serialized.zip +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/data/ftc_merger_investigations_data.zip +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/__init__.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/data_generation.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/data_generation_functions.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/enforcement_stats.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/upp_tests.py +0 -0
- {mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/py.typed +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: mergeron
|
|
3
|
-
Version: 2025.739439.
|
|
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.
|
|
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
|
|
@@ -15,8 +15,8 @@ keywords = [
|
|
|
15
15
|
"upward pricing pressure",
|
|
16
16
|
"GUPPI",
|
|
17
17
|
]
|
|
18
|
-
version = "2025.739439.
|
|
19
|
-
requires-python = ">=3.
|
|
18
|
+
version = "2025.739439.7"
|
|
19
|
+
requires-python = ">=3.13,<4.0"
|
|
20
20
|
|
|
21
21
|
# Classifiers list: https://pypi.org/classifiers/
|
|
22
22
|
classifiers = [
|
|
@@ -28,7 +28,6 @@ classifiers = [
|
|
|
28
28
|
"Operating System :: OS Independent",
|
|
29
29
|
"Programming Language :: Python",
|
|
30
30
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
31
|
-
"Programming Language :: Python :: 3.12",
|
|
32
31
|
"Programming Language :: Python :: 3.13",
|
|
33
32
|
]
|
|
34
33
|
|
{mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/guidelines_boundary_functions.py
RENAMED
|
@@ -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
|
|
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
|
|
232
|
+
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
232
233
|
_r_val
|
|
233
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
707
|
+
Interpolation bounds :math:`x_1, x_2`.
|
|
707
708
|
_r
|
|
708
|
-
|
|
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
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
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
|
-
|
|
111
|
+
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
112
112
|
_r_val
|
|
113
|
-
|
|
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
|
-
|
|
232
|
+
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
233
233
|
_r_val
|
|
234
|
-
|
|
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
|
|
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
|
|
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
|
|
537
|
+
Diversion share, :math:`\overline{d} / \overline{r}` or :math:`\overline{g} / (m^* \cdot \overline{r})`.
|
|
538
538
|
_r_val
|
|
539
|
-
|
|
539
|
+
Recapture ratio.
|
|
540
540
|
agg_method
|
|
541
541
|
Whether "arithmetic mean", "geometric mean", or "distance".
|
|
542
542
|
weighting
|
|
@@ -22,10 +22,10 @@ mergeron: Python for analyzing merger enforcement policy
|
|
|
22
22
|
|
|
23
23
|
.. image:: https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json
|
|
24
24
|
:target: https://python-poetry.org/
|
|
25
|
-
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
|
|
26
|
-
:target: https://github.com/astral-sh/ruff/
|
|
27
25
|
.. image:: https://www.mypy-lang.org/static/mypy_badge.svg
|
|
28
26
|
:target: https://mypy-lang.org/
|
|
27
|
+
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
|
|
28
|
+
:target: https://github.com/astral-sh/ruff/
|
|
29
29
|
.. image:: https://img.shields.io/badge/code%20style-black-000000
|
|
30
30
|
:target: https://github.com/psf/black/
|
|
31
31
|
.. image:: https://img.shields.io/badge/License-MIT-yellow
|
|
File without changes
|
{mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/empirical_margin_distribution.py
RENAMED
|
File without changes
|
|
File without changes
|
{mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/core/guidelines_boundaries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mergeron-2025.739439.4 → mergeron-2025.739439.7}/src/mergeron/gen/data_generation_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|