metacountregressor 1.0.7__py3-none-any.whl → 1.0.9__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.9
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
@@ -30,8 +30,8 @@ Dynamic: requires-python
30
30
  Dynamic: summary
31
31
 
32
32
  <div style="display: flex; align-items: center;">
33
- <img src="https://github.com/zahern/data/raw/main/m.png" alt="My Image" style="width: 100px; margin-right: 20px;">
34
- <p><span style="font-size: 60px;"><strong>MetaCountRegressor</strong></span></p>
33
+ <img src="https://github.com/zahern/data/raw/main/m.png" alt="My Image" width="100">
34
+ <h1 style="margin-left: 20px;">MetaCountRegressor</h1>
35
35
  </div>
36
36
 
37
37
  # Tutorial also available as a jupyter notebook
@@ -39,6 +39,9 @@ Dynamic: summary
39
39
 
40
40
  The tutorial provides more extensive examples on how to run the code and perform experiments. Further documentation is currently in development.
41
41
 
42
+ [Download Notebook Designed for Analysis Use Case](https://github.com/zahern/data/blob/main/Step%20By%20Step_Synthetic.ipynb)
43
+
44
+
42
45
  # For an Application Setup Download the following GUI
43
46
  [Download Application](https://github.com/zahern/MetaCount/tree/master/metacountregressor/application_gui/dist/meta_app)
44
47
 
@@ -95,7 +98,7 @@ X['Offset'] = np.log(df['AADT']) # Explicitley define how to offset the data, no
95
98
  X = df.drop(columns=['FREQ', 'ID', 'AADT'])
96
99
 
97
100
  #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,
101
+ arguments = {'algorithm': 'hs', 'test_percentage': 0.15, 'test_complexity': 6, 'instance_name':1,
99
102
  'val_percentage':0.15, 'obj_1': 'bic', '_obj_2': 'RMSE_TEST', "_max_time": 6}
100
103
  # Fit the model with metacountregressor
101
104
  obj_fun = ObjectiveFunction(X, y, **arguments)
@@ -135,9 +138,9 @@ arguments = {
135
138
  'test_percentage': 0.2, # used in multi-objective optimisation only. Saves 20% of data for testing.
136
139
  'val_percenetage:': 0.2, # Saves 20% of data for testing.
137
140
  '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
141
+ 'instance_name': 'name', # used for creeting a named folder where your models are saved into from the directory
139
142
  'distribution': ['Normal', 'LnNormal', 'Triangular', 'Uniform'],
140
- 'Model': [0,1], # or equivalently ['POS', 'NB']
143
+ 'model_types': [[0,1]], # or equivalently ['POS', 'NB']
141
144
  'transformations': ['no', 'sqrt', 'archsinh'],
142
145
  'method_ll': 'BFGS_2',
143
146
  '_max_time': 10
@@ -156,7 +159,7 @@ manual_fit_spec = {
156
159
  'fixed_terms': ['SINGLE', 'LENGTH'],
157
160
  'rdm_terms': ['AADT:normal'],
158
161
  'rdm_cor_terms': ['GRADEBR:normal', 'CURVES:normal'],
159
- 'grouped_terms': [],
162
+ 'grouped_rdm': [],
160
163
  'hetro_in_means': ['ACCESS:normal', 'MINRAD:normal'],
161
164
  'transformations': ['no', 'no', 'log', 'no', 'no', 'no', 'no'],
162
165
  'dispersion': 0
@@ -168,7 +171,7 @@ arguments = {
168
171
  'algorithm': 'hs',
169
172
  'test_percentage': 0.2,
170
173
  'test_complexity': 6,
171
- 'instance_number': 'name',
174
+ 'instance_name': 'name',
172
175
  'Manual_Fit': manual_fit_spec
173
176
  }
174
177
  obj_fun = ObjectiveFunction(X, y, **arguments)
@@ -268,25 +271,22 @@ The following list describes the arguments available in this function. By defaul
268
271
 
269
272
  2. **`distributions`**: This argument accepts a list of strings where each string corresponds to a distribution. Valid options include:
270
273
  - "Normal"
271
- - "Lindley"
272
274
  - "Uniform"
273
275
  - "LogNormal"
274
276
  - "Triangular"
275
- - "Gamma"
276
277
  - "TruncatedNormal"
277
278
  - Any of the above, concatenated with ":" (e.g., "Normal:grouped"; requires a grouping term defined in the model)
278
279
 
279
280
  3. **`Model`**: This argument specifies the model form. It can be a list of integers representing different models to test:
280
281
  - 0: Poisson
281
282
  - 1: Negative-Binomial
282
- - 2: Generalized-Poisson
283
283
 
284
284
  4. **`transformations`**: This argument accepts a list of strings representing available transformations within the framework. Valid options include:
285
285
  - "no"
286
286
  - "square-root"
287
287
  - "logarithmic"
288
288
  - "archsinh"
289
- - "as_factor"
289
+ - "nil"
290
290
 
291
291
  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
292
 
@@ -320,9 +320,9 @@ arguments = {
320
320
  'val_percentage:': 0.2, # Saves 20% of data for testing.
321
321
  'test_complexity': 3, # For Very simple Models
322
322
  '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
323
+ 'instance_name': 'hs_run', # used for creeating a named folder where your models are saved into from the directory
324
324
  'distribution': ['Normal'],
325
- 'Model': [0, 1], # or equivalently ['POS', 'NB']
325
+ 'model_types': [0, 1], # or equivalently ['POS', 'NB']
326
326
  'transformations': ['no', 'sqrt', 'archsinh'],
327
327
  '_max_time': 10000
328
328
  } '''Arguments for the solution algorithm'''
@@ -398,7 +398,7 @@ manual_fit_spec = {
398
398
  'fixed_terms': ['const','YEAR'],
399
399
  'rdm_terms': [],
400
400
  'rdm_cor_terms': [],
401
- 'grouped_terms': [],
401
+ 'grouped_rdm': [],
402
402
  'hetro_in_means': [],
403
403
  'transformations': ['no', 'no'],
404
404
  'dispersion': 1 #Negative Binomial
@@ -410,7 +410,7 @@ arguments = {
410
410
  'algorithm': 'hs',
411
411
  'test_percentage': 0,
412
412
  'test_complexity': 6,
413
- 'instance_number': 'name',
413
+ 'instance': 'name',
414
414
  'Manual_Fit': manual_fit_spec
415
415
  }
416
416
  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.9.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
18
+ metacountregressor-1.0.9.dist-info/METADATA,sha256=Dc5IChtucF9hMxMi1YbYR93TQzWEaDDB3j_pxjyRsJ0,23619
19
+ metacountregressor-1.0.9.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
20
+ metacountregressor-1.0.9.dist-info/top_level.txt,sha256=zGG7UC5WIpr76gsFUpwJ4En2aCcoNTONBaS3OewwjR0,19
21
+ metacountregressor-1.0.9.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