mergeron 2024.738888.21__tar.gz → 2024.738888.22__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.

Files changed (40) hide show
  1. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/PKG-INFO +2 -4
  2. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/pyproject.toml +8 -8
  3. mergeron-2024.738888.21/src/mergeron/core/parse_damodaran_margin_data.py → mergeron-2024.738888.22/src/mergeron/core/damodaran_margin_data.py +1 -1
  4. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/clr_stats_obs_tables.py +1 -1
  5. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/clr_stats_sim_tables.py +3 -3
  6. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/concentration_as_diversion.py +2 -2
  7. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/example_parameterizations.py +1 -1
  8. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/guidelines_enforcement_patterns.py +1 -1
  9. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/plotSafeHarbs_symbolically.py +1 -1
  10. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/safeharbor_boundaries_for_mergers_with_asymmetric_shares.py +1 -1
  11. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/safeharbor_boundaries_for_symmetric_firm_mergers.py +1 -1
  12. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/sound_guppi_safeharbor.py +1 -1
  13. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/testSafeHarbs_comparative_aggregation.py +1 -1
  14. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/testSafeHarbs_comparative_aggregation_MNL.py +1 -1
  15. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/testSafeHarbs_comparative_envelopes.py +2 -2
  16. mergeron-2024.738888.21/src/mergeron/gen/datagen_lib.py → mergeron-2024.738888.22/src/mergeron/gen/data_generation.py +6 -2
  17. mergeron-2024.738888.21/src/mergeron/gen/clrenf_stats_lib.py → mergeron-2024.738888.22/src/mergeron/gen/investigations_stats.py +3 -3
  18. mergeron-2024.738888.21/src/mergeron/core/parse_billmansalop_data.py +0 -84
  19. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/README.md +0 -0
  20. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/License.txt +0 -0
  21. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/__init__.py +0 -0
  22. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/core/__init__.py +0 -0
  23. /mergeron-2024.738888.21/src/mergeron/core/xlsxw_helper.py → /mergeron-2024.738888.22/src/mergeron/core/excel_helper.py +0 -0
  24. /mergeron-2024.738888.21/src/mergeron/core/parse_ftc_merger_investigations_data.py → /mergeron-2024.738888.22/src/mergeron/core/ftc_merger_investigations_data.py +0 -0
  25. /mergeron-2024.738888.21/src/mergeron/core/gsf_lib.py → /mergeron-2024.738888.22/src/mergeron/core/guidelines_standards.py +0 -0
  26. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/core/pages-stern-nyu-edu-cas-direct.pem +0 -0
  27. /mergeron-2024.738888.21/src/mergeron/core/propn_ci_lib.py → /mergeron-2024.738888.22/src/mergeron/core/proportions_tests.py +0 -0
  28. /mergeron-2024.738888.21/src/mergeron/core/prng_cpu_multi.py → /mergeron-2024.738888.22/src/mergeron/core/psuedorandom_numbers.py +0 -0
  29. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/__init__.py +0 -0
  30. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/examples/testIntrinsicClearanceRates.py +0 -0
  31. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/ext/__init__.py +0 -0
  32. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/ext/tol_colors.py +0 -0
  33. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/gen/__init__.py +0 -0
  34. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/gen/guidelines_tests.py +0 -0
  35. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/jinja_LaTex_templates/clrrate_cis_summary_table_template.tex.jinja2 +0 -0
  36. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/jinja_LaTex_templates/ftcinvdata_byhhianddelta_table_template.tex.jinja2 +0 -0
  37. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/jinja_LaTex_templates/ftcinvdata_summary_table_template.tex.jinja2 +0 -0
  38. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/jinja_LaTex_templates/ftcinvdata_summarypaired_table_template.tex.jinja2 +0 -0
  39. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/jinja_LaTex_templates/setup_tikz_tables.tex.jinja2 +0 -0
  40. {mergeron-2024.738888.21 → mergeron-2024.738888.22}/src/mergeron/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mergeron
3
- Version: 2024.738888.21
3
+ Version: 2024.738888.22
4
4
  Summary: Analysis of standards defined in Horizontal Merger Guidelines
5
5
  License: MIT
6
6
  Keywords: merger policy analysis,merger guidelines,merger screening,policy presumptions,concentration standards,upward pricing pressure,GUPPI
@@ -9,8 +9,6 @@ Author-email: smk@capeconomics.com
9
9
  Requires-Python: >=3.11,<4.0
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
12
- Classifier: Environment :: Web Environment
13
- Classifier: Framework :: Matplotlib
14
12
  Classifier: Intended Audience :: End Users/Desktop
15
13
  Classifier: Intended Audience :: Science/Research
16
14
  Classifier: License :: OSI Approved :: MIT License
@@ -26,6 +24,7 @@ Requires-Dist: attrs (>=23.2,<24.0)
26
24
  Requires-Dist: bs4 (>=0.0.1,<0.0.2)
27
25
  Requires-Dist: certifi (>=2023.11.17,<2024.0.0)
28
26
  Requires-Dist: google-re2 (>=1.1,<2.0)
27
+ Requires-Dist: importlib-metadata (>=7.0.1,<8.0.0)
29
28
  Requires-Dist: jinja2 (>=3.1,<4.0)
30
29
  Requires-Dist: joblib (>=1.3,<2.0)
31
30
  Requires-Dist: lxml (>=5.0,<6.0)
@@ -41,7 +40,6 @@ Requires-Dist: pymupdf (>=1.23,<2.0)
41
40
  Requires-Dist: requests (>=2.31,<3.0)
42
41
  Requires-Dist: requests-toolbelt (>=1.0.0,<2.0.0)
43
42
  Requires-Dist: scipy (>=1.12,<2.0)
44
- Requires-Dist: seaborn (>=0.13,<0.14)
45
43
  Requires-Dist: sympy (>=1.12,<2.0)
46
44
  Requires-Dist: tables (>=3.8,<4.0)
47
45
  Requires-Dist: xlrd (>=2.0,<3.0)
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "mergeron"
3
- # See get_version_str.py
4
- version = "2024.738888.21"
3
+ # See ./get_version_str.py
4
+ version = "2024.738888.22"
5
5
  description = "Analysis of standards defined in Horizontal Merger Guidelines"
6
6
  keywords = [
7
7
  "merger policy analysis",
@@ -20,8 +20,6 @@ readme = "README.md"
20
20
  classifiers = [
21
21
  "Development Status :: 4 - Beta",
22
22
  "Environment :: Console",
23
- "Environment :: Web Environment",
24
- "Framework :: Matplotlib",
25
23
  "Intended Audience :: End Users/Desktop",
26
24
  "Intended Audience :: Science/Research",
27
25
  "License :: OSI Approved :: MIT License",
@@ -35,7 +33,7 @@ classifiers = [
35
33
 
36
34
  [tool.poetry.dependencies]
37
35
  # You may need to apply the fixes in, https://github.com/python-poetry/poetry/issues/3365
38
- # if poetry takes forever to resolve dependencies (read the page at link to the end)
36
+ # if poetry dependency resolution appears to hang (read the page at link to the end)
39
37
  aenum = "^3.1"
40
38
  attrs = "^23.2"
41
39
  bs4 = "^0.0.1"
@@ -55,13 +53,13 @@ pymupdf = "^1.23"
55
53
  python = "^3.11"
56
54
  requests = "^2.31"
57
55
  scipy = "^1.12"
58
- seaborn = "^0.13"
59
56
  sympy = "^1.12"
60
57
  tables = "^3.8"
61
58
  xlrd = "^2.0"
62
59
  xlsxwriter = "^3.1"
63
60
  certifi = "^2023.11.17"
64
61
  requests-toolbelt = "^1.0.0"
62
+ importlib-metadata = "^7.0.1"
65
63
 
66
64
 
67
65
  [tool.poetry.group.dev.dependencies]
@@ -194,9 +192,11 @@ testpaths = ["tests"]
194
192
  addopts = ["--import-mode=importlib"]
195
193
  filterwarnings = [
196
194
  "all",
195
+ "ignore::DeprecationWarning:dateutil.tz.tz",
197
196
  "ignore::DeprecationWarning:jinja2.lexer",
197
+ "ignore::DeprecationWarning:joblib._utils",
198
198
  "ignore::DeprecationWarning:openpyxl.packaging.core",
199
- "ignore::RuntimeWarning:mergeron.clrenf_stats_lib",
200
- "ignore::RuntimeWarning:mergeron.core.propn_ci_lib",
199
+ "ignore::RuntimeWarning:mergeron.gen.investigations_stats",
200
+ "ignore::RuntimeWarning:mergeron.core.proportions_tests",
201
201
  ]
202
202
  tmp_path_retention_policy = "failed"
@@ -43,7 +43,7 @@ from requests_toolbelt.downloadutils import stream
43
43
  from scipy import stats
44
44
  from xlrd import open_workbook
45
45
 
46
- from mergeron.core.gsf_lib import boundary_plot
46
+ from mergeron.core.guidelines_standards import boundary_plot
47
47
 
48
48
  __version__ = metadata.version(Path(__file__).parents[1].stem)
49
49
 
@@ -10,7 +10,7 @@ from pathlib import Path
10
10
 
11
11
  from numpy import einsum, row_stack, unique
12
12
 
13
- import mergeron.core.parse_ftc_merger_investigations_data as fid
13
+ import mergeron.core.ftc_merger_investigations_data as fid
14
14
  import mergeron.gen.investigations_stats as clstl
15
15
 
16
16
  data_path = Path.home() / Path(__file__).parents[1].stem
@@ -19,12 +19,12 @@ import tables as ptb # type: ignore
19
19
  import mergeron.gen.data_generation as dgl
20
20
  import mergeron.gen.guidelines_tests as gsftl
21
21
  import mergeron.gen.investigations_stats as clstl
22
- from mergeron.core.gsf_lib import GuidelinesStandards
23
- from mergeron.core.parse_ftc_merger_investigations_data import (
22
+ from mergeron.core.ftc_merger_investigations_data import (
24
23
  construct_invdata,
25
24
  invdata_dump_path,
26
25
  )
27
- from mergeron.core.propn_ci_lib import propn_ci
26
+ from mergeron.core.guidelines_standards import GuidelinesStandards
27
+ from mergeron.core.proportions_tests import propn_ci
28
28
 
29
29
  __version__ = metadata.version(Path(__file__).parents[1].stem)
30
30
 
@@ -33,8 +33,8 @@ from joblib import Parallel, cpu_count, delayed # type: ignore
33
33
  from numpy import pi
34
34
  from xlsxwriter import Workbook # type: ignore
35
35
 
36
- import mergeron.core.gsf_lib as gsf
37
- import mergeron.core.xlsxw_helper as xlh
36
+ import mergeron.core.excel_helper as xlh
37
+ import mergeron.core.guidelines_standards as gsf
38
38
  import mergeron.ext.tol_colors as ptcolor # type: ignore
39
39
 
40
40
  mod_path = Path(__file__)
@@ -10,7 +10,7 @@ from typing import NamedTuple
10
10
  from numpy import column_stack, divide
11
11
  from numpy.typing import NDArray
12
12
 
13
- from mergeron.core.prng_cpu_multi import prng
13
+ from mergeron.core.psuedorandom_numbers import prng
14
14
  from mergeron.gen.data_generation import (
15
15
  RECConstants,
16
16
  gen_market_shares_dirichlet,
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from numpy import array, column_stack
4
4
 
5
- import mergeron.core.propn_ci_lib as pcl
5
+ import mergeron.core.proportions_tests as pcl
6
6
 
7
7
  enf_counts = array((
8
8
  (24, 25, 33, 33),
@@ -1,7 +1,7 @@
1
1
  """
2
2
 
3
3
  Solve for, and plot, weighted-average GUPPI boundaries using sympy,
4
- as a check against the numerical solutions in mergeron.core.gsf_lib
4
+ as a check against the numerical solutions in mergeron.core.guidelines_standards
5
5
 
6
6
  """
7
7
 
@@ -26,7 +26,7 @@ from numpy import (
26
26
  vstack,
27
27
  )
28
28
 
29
- import mergeron.core.gsf_lib as gsf
29
+ import mergeron.core.guidelines_standards as gsf
30
30
 
31
31
  mod_path = Path(__file__)
32
32
  data_path = Path.home() / mod_path.parents[1].stem
@@ -11,7 +11,7 @@ from matplotlib import cm as colormgr
11
11
  from matplotlib import colors as mcolors
12
12
  from matplotlib.ticker import AutoMinorLocator, MultipleLocator, StrMethodFormatter
13
13
 
14
- import mergeron.core.gsf_lib as gsf
14
+ import mergeron.core.guidelines_standards as gsf
15
15
 
16
16
  prog_path = Path(__file__)
17
17
  data_path = Path.home() / prog_path.parents[1].stem
@@ -8,7 +8,7 @@ from typing import Literal
8
8
  import numpy as np
9
9
  import tables as ptb # type: ignore
10
10
 
11
- import mergeron.core.gsf_lib as gsf
11
+ import mergeron.core.guidelines_standards as gsf
12
12
  import mergeron.gen.data_generation as dgl
13
13
  import mergeron.gen.guidelines_tests as gtl
14
14
  import mergeron.gen.investigations_stats as clstl
@@ -20,7 +20,7 @@ from matplotlib import colors as mcolors
20
20
  from matplotlib.ticker import MultipleLocator, StrMethodFormatter
21
21
  from numpy.typing import NDArray
22
22
 
23
- import mergeron.core.gsf_lib as gsf
23
+ import mergeron.core.guidelines_standards as gsf
24
24
  import mergeron.gen.data_generation as dgl
25
25
 
26
26
  prog_path = Path(__file__)
@@ -18,7 +18,7 @@ from matplotlib import colors as mcolors
18
18
  from matplotlib.ticker import MultipleLocator, StrMethodFormatter
19
19
  from numpy.typing import NDArray
20
20
 
21
- import mergeron.core.gsf_lib as gsf
21
+ import mergeron.core.guidelines_standards as gsf
22
22
  import mergeron.gen.data_generation as dgl
23
23
 
24
24
  prog_path = Path(__file__)
@@ -23,10 +23,10 @@ from matplotlib.ticker import StrMethodFormatter
23
23
  from numpy import arange, argsort, column_stack, einsum, ones_like
24
24
  from numpy.typing import NDArray
25
25
 
26
- import mergeron.core.gsf_lib as gsf
26
+ import mergeron.core.guidelines_standards as gsf
27
27
  import mergeron.gen.data_generation as dgl
28
28
  import mergeron.gen.investigations_stats as clstl
29
- from mergeron.core.prng_cpu_multi import DEFAULT_PARM_ARRAY
29
+ from mergeron.core.psuedorandom_numbers import DEFAULT_PARM_ARRAY
30
30
 
31
31
  prog_path = Path(__file__)
32
32
  data_path = Path.home() / prog_path.parents[1].stem
@@ -13,8 +13,12 @@ import numpy as np
13
13
  from numpy.random import SeedSequence
14
14
  from numpy.typing import NDArray
15
15
 
16
- from mergeron.core.parse_damodaran_margin_data import resample_mgn_data
17
- from mergeron.core.prng_cpu_multi import DEFAULT_PARM_ARRAY, MultithreadedRNG, prng
16
+ from mergeron.core.damodaran_margin_data import resample_mgn_data
17
+ from mergeron.core.psuedorandom_numbers import (
18
+ DEFAULT_PARM_ARRAY,
19
+ MultithreadedRNG,
20
+ prng,
21
+ )
18
22
 
19
23
  __version__ = metadata.version(Path(__file__).parents[1].stem)
20
24
 
@@ -18,9 +18,9 @@ from jinja2 import Environment, FileSystemLoader, Template, select_autoescape
18
18
  from numpy.typing import NDArray
19
19
  from scipy.interpolate import interp1d # type: ignore
20
20
 
21
- import mergeron.core.parse_ftc_merger_investigations_data as fid
22
- from mergeron.core.parse_ftc_merger_investigations_data import TableData
23
- from mergeron.core.propn_ci_lib import propn_ci
21
+ import mergeron.core.ftc_merger_investigations_data as fid
22
+ from mergeron.core.ftc_merger_investigations_data import TableData
23
+ from mergeron.core.proportions_tests import propn_ci
24
24
 
25
25
  m.patch()
26
26
 
@@ -1,84 +0,0 @@
1
- import re
2
- from collections.abc import Mapping
3
- from importlib import metadata
4
- from pathlib import Path
5
- from types import MappingProxyType
6
-
7
- import fitz
8
- import msgpack
9
-
10
- __version__ = metadata.version(Path(__file__).parents[1].stem)
11
-
12
-
13
- data_dir = Path.home() / Path(__file__).parents[1].stem / "FTCData"
14
- if not data_dir.is_dir():
15
- data_dir.mkdir(parents=True)
16
- invdata_dump_path = data_dir.parent / "billmansalop_data_tables.msgpack"
17
-
18
- table_no_re = re.compile(r"Table A(\d)\. .*")
19
-
20
- _invdata_path = Path(
21
- R"M:\SMK-PersonalFolders\AuthorshipProjects",
22
- R"GUPPISafeHarborTAB\LiteratureCited",
23
- R"BillmanSalop_2022_MergerEnforcementStatistics_2001_2020_SSRN-id4274304.pdf",
24
- )
25
-
26
-
27
- def parse_invdata(_invdata_pdf_path: Path) -> Mapping:
28
- _invdata_fitz = fitz.open(_invdata_pdf_path)
29
-
30
- _data_period = "".join("2001-2020")
31
-
32
- _table_data_dict = {}
33
- _pgdata_list = []
34
- for _invdata_pageno in range(28, 45):
35
- _invdata_page = _invdata_fitz[_invdata_pageno]
36
- _pgdata_row = ""
37
- for _pgblk in _invdata_page.get_text("blocks", sort=False):
38
- _pgdata = ", ".join(_f.strip() for _f in _pgblk[-3].strip().split("\n"))
39
-
40
- if _pgdata.startswith("Table A"):
41
- _tblno = _pgdata.split(".")[0]
42
- _table_data_dict |= {_tblno: []}
43
- _pgdata_list = _table_data_dict[_tblno]
44
- elif (
45
- _pgdata.startswith((
46
- "Electronic copy available at:",
47
- "<image:",
48
- "Parties, Agency",
49
- ))
50
- or re.match(
51
- r"(Filed|Resolved|Settled), (Resolved, )?Consummated", _pgdata
52
- )
53
- or re.match(r"Complaint|Outcome|Filed", _pgdata)
54
- or re.match(r"\d+|, +|^$", _pgdata)
55
- or hasattr(_pgdata, "image")
56
- ):
57
- continue
58
- elif not re.search(r"DOJ|FTC", _pgdata):
59
- _pgdata_row = "{}, ".format(
60
- " ".join(
61
- _f.strip() for _f in _pgdata.rsplit(",", maxsplit=1)
62
- ).strip()
63
- )
64
- if _pgdata_row.startswith("H.J. Heinz"):
65
- _pgdata_row = _pgdata_row.replace(R"Beech- Nut", "Beech-Nut")
66
- else:
67
- _pgdata_row += _pgdata # .replace(R"Beech-\nNut", "Beech-Nut")
68
- _pgdata_list += [_pgdata_row]
69
- _pgdata_row = ""
70
-
71
- _table_data_dict = MappingProxyType(_table_data_dict)
72
- _ = invdata_dump_path.write_bytes(msgpack.packb(_table_data_dict))
73
-
74
- return _table_data_dict
75
-
76
-
77
- if __name__ == "__main__":
78
- table_data_dict = parse_invdata(_invdata_path)
79
- for tblno in table_data_dict:
80
- print(tblno, len(table_data_dict[tblno]), sep=", ")
81
- for tblrow in table_data_dict[tblno]:
82
- print(tblrow)
83
- print()
84
- print()