metacountregressor 1.0.7__py3-none-any.whl → 1.0.8__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.
@@ -266,7 +266,7 @@ def simulated_annealing(objective_function, initial_slns=None, **kwargs):
266
266
  # TEMP_ALPHA, MAX_STEPS, INTL_ACCEPT, STEPS, SWAP_PERC, NUM_INTL_SLNS, IS_MULTI= hyperparameters
267
267
  man = None
268
268
  try:
269
- objective_function.instance_number = str(0)
269
+ objective_function.instance_name = str(0)
270
270
  except:
271
271
  pass
272
272
  if 'Manual_Fit' in kwargs:
@@ -297,7 +297,7 @@ def harmony_search(objective_function, initial_harmonies=None, hyperparameters=N
297
297
  if kwargs.get('_hmcr') is not None:
298
298
  objective_function._hmcr = kwargs.get('_hmcr')
299
299
  try:
300
- objective_function.instance_number = str(0)
300
+ objective_function.instance_name = f"run_hs_{str(0)}"
301
301
  except:
302
302
  pass
303
303
 
@@ -335,7 +335,7 @@ class Metaheuristic(object):
335
335
  self.F = kwargs['_AI'] # mustation scale
336
336
  self.iter = kwargs.get('_max_iter', 10000)
337
337
  self.cr = kwargs.get('_crossover_perc') or kwargs.get('_cr', 0.2)
338
- self.instance_number = str(kwargs.get('instance_number', 1))
338
+ self.instance_name = str(kwargs.get('instance_name', 1))
339
339
  if objective_function.is_multi:
340
340
 
341
341
  self.obj_1 = objective_function._obj_1
@@ -424,7 +424,7 @@ class DifferentialEvolution(object):
424
424
  def __init__(self, objective_function, **kwargs):
425
425
  objective_function.algorithm = 'de'
426
426
  try:
427
- objective_function.instance_number = str(0)
427
+ objective_function.instance_name = str(0)
428
428
  except:
429
429
  pass
430
430
  self._obj_fun = objective_function
@@ -442,8 +442,8 @@ class DifferentialEvolution(object):
442
442
  self.F = kwargs.get('_AI', 2) # mutation scale
443
443
  self.iter = kwargs.get('_max_iter', 10000)
444
444
  self.cr = kwargs.get('_crossover_perc') or kwargs.get('_cr', 0.2)
445
- self.instance_number = str(kwargs.get('instance_number', 1))
446
- self.instance_number = objective_function.instance_number
445
+ self.instance_name = str(kwargs.get('instance_name', 1))
446
+ self.instance_name = objective_function.instance_name
447
447
  self.get_directory()
448
448
 
449
449
  self._population = list()
@@ -461,13 +461,13 @@ class DifferentialEvolution(object):
461
461
  def get_directory(self):
462
462
  # checking if the directory demo_folder2
463
463
  # exist or not.
464
- if not os.path.isdir(self.instance_number):
464
+ if not os.path.isdir(self.instance_name):
465
465
  # if the demo_folder2 directory is
466
466
  # not present then create it.
467
- os.makedirs(self.instance_number)
467
+ os.makedirs(self.instance_name)
468
468
 
469
469
  def get_instance_name(self):
470
- name = str(self.instance_number) + '/log.csv'
470
+ name = str(self.instance_name) + '/log.csv'
471
471
  return name
472
472
 
473
473
  def _random_selection(self, sln, i):
@@ -666,18 +666,18 @@ class DifferentialEvolution(object):
666
666
  self._population[j] = obj_trial
667
667
 
668
668
  logger(self.it_process, obj_trial, self._population, True,
669
- self.instance_number + '/population_logger_strict_non_pareto.csv', 1)
669
+ self.instance_name + '/population_logger_strict_non_pareto.csv', 1)
670
670
  logger(self.it_process, obj_trial, self._pareto_population, True,
671
- self.instance_number + '/population_logger_pareto.csv', 1)
671
+ self.instance_name + '/population_logger_pareto.csv', 1)
672
672
  else:
673
673
  if self.pf.calculate_difference(obj_trial, self._population[j]):
674
674
  iterations_without_improvement = 0
675
675
  self._population[j] = obj_trial
676
676
  self._pareto_population = self.pf.Pareto_F
677
677
  logger(self.it_process, obj_trial, self._population, True,
678
- self.instance_number + '/population_logger_strict_non_pareto.csv', 1)
678
+ self.instance_name + '/population_logger_strict_non_pareto.csv', 1)
679
679
  logger(self.it_process, obj_trial, self._pareto_population, True,
680
- self.instance_number + '/population_logger_pareto.csv', 1)
680
+ self.instance_name + '/population_logger_pareto.csv', 1)
681
681
 
682
682
  if it_best is None:
683
683
  it_best = obj_trial
@@ -822,7 +822,7 @@ class SimulatedAnnealing(object):
822
822
  self.temp_min = 0.05
823
823
  self._MAX_ITERATIONS = int(kwargs.get('MAX_ITERATIONS', 10000)) or int(kwargs.get('_max_iter', 10000))
824
824
 
825
- self.instance_number = str(objective_function.instance_number)
825
+ self.instance_name = str(objective_function.instance_name)
826
826
  self.accept = 0
827
827
  self.profiler = []
828
828
  self.update_t = self.cooling_linear_m
@@ -843,12 +843,12 @@ class SimulatedAnnealing(object):
843
843
  def get_directory(self):
844
844
  # checking if the directory demo_folder2
845
845
  # exist or not.
846
- if not os.path.isdir(self.instance_number):
846
+ if not os.path.isdir(self.instance_name):
847
847
  # not present then create it.
848
- os.makedirs(self.instance_number)
848
+ os.makedirs(self.instance_name)
849
849
 
850
850
  def get_instance_name(self):
851
- name = str(self.instance_number) + '/log.csv'
851
+ name = str(self.instance_name) + '/log.csv'
852
852
  return name
853
853
 
854
854
  def run(self, initial_slns=None, mod_init=None):
@@ -939,7 +939,7 @@ class SimulatedAnnealing(object):
939
939
  didchange = self.pf.did_it_change()
940
940
  if didchange:
941
941
  pareto_logger(self.pf.Pareto_F, iteration, self._obj_fun.complexity_level,
942
- self._obj_fun.instance_number)
942
+ self._obj_fun.instance_name)
943
943
  self._current_energy = nbr_energy
944
944
  self.current_struct = nbr_struct
945
945
  self.accept += 1
@@ -1284,7 +1284,7 @@ class HarmonySearch(object):
1284
1284
  self.F = kwargs.get('_AI', 2) # mutation scale
1285
1285
  self.iter = kwargs.get('_max_iter', 10000)
1286
1286
  self.cr = kwargs.get('_crossover_perc') or kwargs.get('_cr', 0.2)
1287
- self.instance_number = str(kwargs.get('instance_number', 1))
1287
+ self.instance_name = str(kwargs.get('instance_name', 1))
1288
1288
 
1289
1289
 
1290
1290
 
@@ -1295,7 +1295,7 @@ class HarmonySearch(object):
1295
1295
  # harmony_history stores all hms harmonies every nth improvisations (i.e., one 'generation')
1296
1296
  self._harmony_history = list()
1297
1297
  # saves the best fitness
1298
- self.instance_number = str(objective_function.instance_number)
1298
+ self.instance_name = str(objective_function.instance_name)
1299
1299
  self.get_directory()
1300
1300
  self._harmony_trace_best = list()
1301
1301
  self._harmony_trace_incumbent = list()
@@ -1315,13 +1315,13 @@ class HarmonySearch(object):
1315
1315
  def get_directory(self):
1316
1316
  # checking if the directory demo_folder2
1317
1317
  # exist or not.
1318
- if not os.path.isdir(self.instance_number):
1318
+ if not os.path.isdir(self.instance_name):
1319
1319
  # if the demo_folder2 directory is
1320
1320
  # not present then create it.
1321
- os.makedirs(self.instance_number)
1321
+ os.makedirs(self.instance_name)
1322
1322
 
1323
1323
  def get_instance_name(self):
1324
- name = str(self.instance_number) + '/log.csv'
1324
+ name = str(self.instance_name) + '/log.csv'
1325
1325
  return name
1326
1326
 
1327
1327
  def hard_mutate_index_and_value(self):
@@ -1432,7 +1432,7 @@ class HarmonySearch(object):
1432
1432
  1) # for consistency
1433
1433
  except Exception as e:
1434
1434
  print(e, 'logger run hs')
1435
- # logger(num_imp, fitness, self._pareto_harmony_memory, True, self.instance_number +'/log_for_pareto_harmony_memory.csv', 1)
1435
+ # logger(num_imp, fitness, self._pareto_harmony_memory, True, self.instance_name +'/log_for_pareto_harmony_memory.csv', 1)
1436
1436
 
1437
1437
 
1438
1438
  else:
@@ -1477,7 +1477,7 @@ class HarmonySearch(object):
1477
1477
 
1478
1478
  else:
1479
1479
  pareto_logger(self._pareto_harmony_memory, num_imp / self._obj_fun.get_hms(),
1480
- self._obj_fun.complexity_level, self._obj_fun.instance_number)
1480
+ self._obj_fun.complexity_level, self._obj_fun.instance_name)
1481
1481
  generation += 1
1482
1482
  iterations_without_improvement += 1
1483
1483
 
@@ -1915,7 +1915,7 @@ class Mutlithreaded_Meta(DifferentialEvolution, SimulatedAnnealing, HarmonySearc
1915
1915
  logger(num_imp, fitness, self._harmony_memory, True, self.get_instance_name(),
1916
1916
  1) # for consistency
1917
1917
  logger(num_imp, fitness, self._pareto_harmony_memory, True,
1918
- self.instance_number + '/log_for_pareto_harmony_memory.csv', 1)
1918
+ self.instance_name + '/log_for_pareto_harmony_memory.csv', 1)
1919
1919
 
1920
1920
 
1921
1921
  else:
@@ -1960,7 +1960,7 @@ class Mutlithreaded_Meta(DifferentialEvolution, SimulatedAnnealing, HarmonySearc
1960
1960
 
1961
1961
  else:
1962
1962
  pareto_logger(self._pareto_harmony_memory, num_imp / self._obj_fun.get_hms(),
1963
- self._obj_fun.complexity_level, self._obj_fun.instance_number)
1963
+ self._obj_fun.complexity_level, self._obj_fun.instance_name)
1964
1964
  generation += 1
1965
1965
  iterations_without_improvement += 1
1966
1966
 
@@ -2081,7 +2081,7 @@ class Mutlithreaded_Meta(DifferentialEvolution, SimulatedAnnealing, HarmonySearc
2081
2081
  didchange = self.pf.did_it_change()
2082
2082
  if didchange:
2083
2083
  pareto_logger(self.pf.Pareto_F, iteration, self._obj_fun.complexity_level,
2084
- self._obj_fun.instance_number)
2084
+ self._obj_fun.instance_name)
2085
2085
  current_energy[j] = nbr_energy
2086
2086
 
2087
2087
  self.accept += 1
@@ -2278,18 +2278,18 @@ class Mutlithreaded_Meta(DifferentialEvolution, SimulatedAnnealing, HarmonySearc
2278
2278
  self._population[j] = obj_trial
2279
2279
 
2280
2280
  logger(self.it_process, obj_trial, self._population, True,
2281
- self.instance_number + '/population_logger_strict_non_pareto.csv', 1)
2281
+ self.instance_name + '/population_logger_strict_non_pareto.csv', 1)
2282
2282
  logger(self.it_process, obj_trial, self._pareto_population, True,
2283
- self.instance_number + '/population_logger_pareto.csv', 1)
2283
+ self.instance_name + '/population_logger_pareto.csv', 1)
2284
2284
  else:
2285
2285
  if self.pf.calculate_difference(obj_trial, self._population[j]):
2286
2286
  iterations_without_improvement = 0
2287
2287
  self._population[j] = obj_trial
2288
2288
  self._pareto_population = self.pf.Pareto_F
2289
2289
  logger(self.it_process, obj_trial, self._population, True,
2290
- self.instance_number + '/population_logger_strict_non_pareto.csv', 1)
2290
+ self.instance_name + '/population_logger_strict_non_pareto.csv', 1)
2291
2291
  logger(self.it_process, obj_trial, self._pareto_population, True,
2292
- self.instance_number + '/population_logger_pareto.csv', 1)
2292
+ self.instance_name + '/population_logger_pareto.csv', 1)
2293
2293
 
2294
2294
  if it_best is None:
2295
2295
  it_best = obj_trial
@@ -212,19 +212,19 @@ class ObjectiveFunction(object):
212
212
  if 'complexity_level' in kwargs:
213
213
  self.complexity_level = kwargs['complexity_level']
214
214
 
215
- if 'instance_number' in kwargs:
216
- self.instance_number = str(kwargs['instance_number'])
215
+ if 'instance_name' in kwargs:
216
+ self.instance_name = str(kwargs['instance_name'])
217
217
  else:
218
218
 
219
219
  print('no name set, setting name as 0')
220
- self.instance_number = str(0) # set an arbitrary instance number
220
+ self.instance_name = f"run_{str(0)}" # set an arbitrary instance number
221
221
 
222
222
  if kwargs.get('save_directory', True):
223
223
  self.save_state = True
224
- if not os.path.exists(self.instance_number):
224
+ if not os.path.exists(self.instance_name):
225
225
  if kwargs.get('make_directory', True):
226
226
  print('Making a Directory, if you want to stop from storing the files to this directory set argumet: make_directory:False')
227
- os.makedirs(self.instance_number)
227
+ os.makedirs(self.instance_name)
228
228
  else:
229
229
  self.save_state = False
230
230
  if not hasattr(self, '_obj_1'):
@@ -456,7 +456,7 @@ class ObjectiveFunction(object):
456
456
  self._transformations = kwargs.get('_transformations', ["no", "log", "sqrt", "arcsinh", "nil"])
457
457
  # self._distribution = ['triangular', 'uniform', 'normal', 'ln_normal', 'tn_normal', 'lindley']
458
458
 
459
- self._distribution = kwargs.get('_distributions', ['triangular', 'uniform', 'normal', 'tn_normal'])
459
+ self._distribution = kwargs.get('_distributions', ['triangular', 'uniform', 'normal', 'tn_normal', 'ln_normal'])
460
460
 
461
461
  if self.G is not None:
462
462
  #TODO need to handle this for groups
@@ -1263,10 +1263,10 @@ class ObjectiveFunction(object):
1263
1263
  caption = " ".join(caption_parts)
1264
1264
  # print(latextable.draw_latex(table, caption=caption, caption_above = True))
1265
1265
  if solution is None:
1266
- file_name = self.instance_number + "/sln" + \
1266
+ file_name = self.instance_name + "/sln" + \
1267
1267
  "_with_BIC_" + str(self.bic) + ".tex"
1268
1268
  else:
1269
- file_name = self.instance_number + "/sln" + \
1269
+ file_name = self.instance_name + "/sln" + \
1270
1270
  str(solution['sol_num']) + \
1271
1271
  "_with_BIC_" + str(self.bic) + ".tex"
1272
1272
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metacountregressor
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: Extensive Testing for Estimation of Data Count Models
5
5
  Home-page: https://github.com/zahern/CountDataEstimation
6
6
  Author: Zeke Ahern
@@ -95,7 +95,7 @@ X['Offset'] = np.log(df['AADT']) # Explicitley define how to offset the data, no
95
95
  X = df.drop(columns=['FREQ', 'ID', 'AADT'])
96
96
 
97
97
  #some example argument, these are defualt so the following line is just for claritity. See the later agruments section for detials.
98
- arguments = {'algorithm': 'hs', 'test_percentage': 0.15, 'test_complexity': 6, 'instance_number':1,
98
+ arguments = {'algorithm': 'hs', 'test_percentage': 0.15, 'test_complexity': 6, 'instance_name':1,
99
99
  'val_percentage':0.15, 'obj_1': 'bic', '_obj_2': 'RMSE_TEST', "_max_time": 6}
100
100
  # Fit the model with metacountregressor
101
101
  obj_fun = ObjectiveFunction(X, y, **arguments)
@@ -135,9 +135,9 @@ arguments = {
135
135
  'test_percentage': 0.2, # used in multi-objective optimisation only. Saves 20% of data for testing.
136
136
  'val_percenetage:': 0.2, # Saves 20% of data for testing.
137
137
  'test_complexity': 6, # Complexity level for testing (6 tests all) or a list to consider potential differences in complexity
138
- 'instance_number': 'name', # used for creeating a named folder where your models are saved into from the directory
138
+ 'instance_name': 'name', # used for creeting a named folder where your models are saved into from the directory
139
139
  'distribution': ['Normal', 'LnNormal', 'Triangular', 'Uniform'],
140
- 'Model': [0,1], # or equivalently ['POS', 'NB']
140
+ 'model_types': [[0,1]], # or equivalently ['POS', 'NB']
141
141
  'transformations': ['no', 'sqrt', 'archsinh'],
142
142
  'method_ll': 'BFGS_2',
143
143
  '_max_time': 10
@@ -156,7 +156,7 @@ manual_fit_spec = {
156
156
  'fixed_terms': ['SINGLE', 'LENGTH'],
157
157
  'rdm_terms': ['AADT:normal'],
158
158
  'rdm_cor_terms': ['GRADEBR:normal', 'CURVES:normal'],
159
- 'grouped_terms': [],
159
+ 'grouped_rdm': [],
160
160
  'hetro_in_means': ['ACCESS:normal', 'MINRAD:normal'],
161
161
  'transformations': ['no', 'no', 'log', 'no', 'no', 'no', 'no'],
162
162
  'dispersion': 0
@@ -168,7 +168,7 @@ arguments = {
168
168
  'algorithm': 'hs',
169
169
  'test_percentage': 0.2,
170
170
  'test_complexity': 6,
171
- 'instance_number': 'name',
171
+ 'instance_name': 'name',
172
172
  'Manual_Fit': manual_fit_spec
173
173
  }
174
174
  obj_fun = ObjectiveFunction(X, y, **arguments)
@@ -268,25 +268,22 @@ The following list describes the arguments available in this function. By defaul
268
268
 
269
269
  2. **`distributions`**: This argument accepts a list of strings where each string corresponds to a distribution. Valid options include:
270
270
  - "Normal"
271
- - "Lindley"
272
271
  - "Uniform"
273
272
  - "LogNormal"
274
273
  - "Triangular"
275
- - "Gamma"
276
274
  - "TruncatedNormal"
277
275
  - Any of the above, concatenated with ":" (e.g., "Normal:grouped"; requires a grouping term defined in the model)
278
276
 
279
277
  3. **`Model`**: This argument specifies the model form. It can be a list of integers representing different models to test:
280
278
  - 0: Poisson
281
279
  - 1: Negative-Binomial
282
- - 2: Generalized-Poisson
283
280
 
284
281
  4. **`transformations`**: This argument accepts a list of strings representing available transformations within the framework. Valid options include:
285
282
  - "no"
286
283
  - "square-root"
287
284
  - "logarithmic"
288
285
  - "archsinh"
289
- - "as_factor"
286
+ - "nil"
290
287
 
291
288
  5. **`is_multi`**: This argument accepts an integer indicating whether single or multiple objectives are to be tested (0 for single, 1 for multiple).
292
289
 
@@ -320,9 +317,9 @@ arguments = {
320
317
  'val_percentage:': 0.2, # Saves 20% of data for testing.
321
318
  'test_complexity': 3, # For Very simple Models
322
319
  'obj_1': 'BIC', '_obj_2': 'RMSE_TEST',
323
- 'instance_number': 'hs_run', # used for creeating a named folder where your models are saved into from the directory
320
+ 'instance_name': 'hs_run', # used for creeating a named folder where your models are saved into from the directory
324
321
  'distribution': ['Normal'],
325
- 'Model': [0, 1], # or equivalently ['POS', 'NB']
322
+ 'model_types': [0, 1], # or equivalently ['POS', 'NB']
326
323
  'transformations': ['no', 'sqrt', 'archsinh'],
327
324
  '_max_time': 10000
328
325
  } '''Arguments for the solution algorithm'''
@@ -398,7 +395,7 @@ manual_fit_spec = {
398
395
  'fixed_terms': ['const','YEAR'],
399
396
  'rdm_terms': [],
400
397
  'rdm_cor_terms': [],
401
- 'grouped_terms': [],
398
+ 'grouped_rdm': [],
402
399
  'hetro_in_means': [],
403
400
  'transformations': ['no', 'no'],
404
401
  'dispersion': 1 #Negative Binomial
@@ -410,7 +407,7 @@ arguments = {
410
407
  'algorithm': 'hs',
411
408
  'test_percentage': 0,
412
409
  'test_complexity': 6,
413
- 'instance_number': 'name',
410
+ 'instance': 'name',
414
411
  'Manual_Fit': manual_fit_spec
415
412
  }
416
413
  obj_fun = ObjectiveFunction(data_exog, data_endog, **arguments)
@@ -6,16 +6,16 @@ metacountregressor/halton.py,sha256=jhovA45UBoZYU9g-hl6Lb2sBIx_ZBTNdPrpgkzR9fng,
6
6
  metacountregressor/helperprocess.py,sha256=wW45-i31zy6rwaXt5PZt0GyR83PzF30jc9Wl4SQtnUI,26372
7
7
  metacountregressor/main.py,sha256=tGOm8DdbdyDf316qIxDAre6l6GzfJIWYNYIBaSeIemI,23685
8
8
  metacountregressor/main_old.py,sha256=eTS4ygq27MnU-dZ_j983Ucb-D5XfbVF8OJQK2hVVLZc,24123
9
- metacountregressor/metaheuristics.py,sha256=lAtDmQslzAC4Xg2Ozx4bnycz235le7-qEStlJFPa5xA,107881
9
+ metacountregressor/metaheuristics.py,sha256=gVqJRNiHOa48-dHZxaJNgu2OLiYOpSYvWHJ1VFPqFWY,107817
10
10
  metacountregressor/pareto_file.py,sha256=whySaoPAUWYjyI8zo0hwAOa3rFk6SIUlHSpqZiLur0k,23096
11
11
  metacountregressor/pareto_logger__plot.py,sha256=mEU2QN4wmsM7t39GJ_XhJ_jjsdl09JOmG0U2jICrAkI,30037
12
12
  metacountregressor/setup.py,sha256=5UcQCCLR8Fm5odA3MX78WwahavxFq4mVD6oq0IuQvAY,936
13
13
  metacountregressor/single_objective_finder.py,sha256=jVG7GJBqzSP4_riYr-kMMKy_LE3SlGmKMunNhHYxgRg,8011
14
- metacountregressor/solution.py,sha256=nY9L3X3mBUqbIopriHIzp9zXQOdhSt8dWj4Nx5Gu40Y,324648
14
+ metacountregressor/solution.py,sha256=faNERJD_8ubf37CgRqHTM0YsJBzSp0LXhj0kArWeCIE,324654
15
15
  metacountregressor/test_code.py,sha256=_7Emm2JbhK_NVhxoqMhshN2JeHZtihZuSDl3Jpe7Ajk,1641
16
16
  metacountregressor/test_generated_paper2.py,sha256=pwOoRzl1jJIIOUAAvbkT6HmmTQ81mwpsshn9SLdKOg8,3927
17
- metacountregressor-1.0.7.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
18
- metacountregressor-1.0.7.dist-info/METADATA,sha256=3-FuTS2ap0lEcxzmCiGjO6825DoAAqNuEuaEeaWVbnY,23618
19
- metacountregressor-1.0.7.dist-info/WHEEL,sha256=ooBFpIzZCPdw3uqIQsOo4qqbA4ZRPxHnOH7peeONza0,91
20
- metacountregressor-1.0.7.dist-info/top_level.txt,sha256=zGG7UC5WIpr76gsFUpwJ4En2aCcoNTONBaS3OewwjR0,19
21
- metacountregressor-1.0.7.dist-info/RECORD,,
17
+ metacountregressor-1.0.8.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
18
+ metacountregressor-1.0.8.dist-info/METADATA,sha256=_NlL94v9pro7ZOspceW2PEXijRClvUTlsigoaAn1gB0,23547
19
+ metacountregressor-1.0.8.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
20
+ metacountregressor-1.0.8.dist-info/top_level.txt,sha256=zGG7UC5WIpr76gsFUpwJ4En2aCcoNTONBaS3OewwjR0,19
21
+ metacountregressor-1.0.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.1)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5