pyerualjetwork 1.1.4__py3-none-any.whl → 1.1.6__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.
plan/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ # pyerualjetwork/PLAN/__init__.py
2
+
3
+ # Bu dosya, plan modülünün ana giriş noktasıdır.
4
+
5
+ from .plan import AutoBalancer, Normalization, Softmax, Sigmoid, Relu, SynapticPruning, SynapticDividing, WeightIdentification, Fex, Cat, TrainPLAN, TestPLAN, SavePLAN, LoadPLAN, PredictFromDiscPLAN, PredictFromRamPLAN
@@ -4,7 +4,7 @@ from colorama import Fore,Style
4
4
  from typing import List, Union
5
5
  import math
6
6
  # BUILD -----
7
- def TrainDPNN(
7
+ def TrainPLAN(
8
8
  Inputs: List[Union[int, float]],
9
9
  Labels: List[Union[int, float, str]], # At least two.. and one hot encoded
10
10
  ClassCount: int,
@@ -16,8 +16,8 @@ def TrainDPNN(
16
16
  Activations: List[str]
17
17
  ) -> str:
18
18
 
19
- infoDPNN = """
20
- Creates and configures a DPNN model.
19
+ infoPLAN = """
20
+ Creates and configures a PLAN model.
21
21
 
22
22
  Args:
23
23
  Inputs (list[num]): List of input data.
@@ -37,30 +37,30 @@ def TrainDPNN(
37
37
 
38
38
  LastNeuron = Neurons[-1:][0]
39
39
  if LastNeuron != ClassCount:
40
- print(Fore.RED + "ERROR108: Last layer of neuron count must be equal class count. from: TrainDPNN",infoDPNN)
40
+ print(Fore.RED + "ERROR108: Last layer of neuron count must be equal class count. from: TrainPLAN",infoPLAN)
41
41
  return 'e'
42
42
 
43
43
  if len(Normalizations) != len(ThresholdValues):
44
44
 
45
- print(Fore.RED + "ERROR307: Normalization list length must be equal to length of ThresholdSigns List,ThresholdValues List,Layers List,Neurons List. from: TrainDPNN",infoDPNN)
45
+ print(Fore.RED + "ERROR307: Normalization list length must be equal to length of ThresholdSigns List,ThresholdValues List,Layers List,Neurons List. from: TrainPLAN",infoPLAN)
46
46
  return 'e'
47
47
 
48
48
  if len(Inputs) != len(Labels):
49
- print(Fore.RED + "ERROR301: Inputs list and Labels list must be same length.",infoDPNN)
49
+ print(Fore.RED + "ERROR301: Inputs list and Labels list must be same length.",infoPLAN)
50
50
  return 'e'
51
51
 
52
52
  for i, Value in enumerate(ThresholdValues):
53
53
 
54
54
  if Normalizations[i] != 'y' and Normalizations[i] != 'n':
55
- print(Fore.RED + "ERROR105: Normalization list must be 'y' or 'n'.",infoDPNN)
55
+ print(Fore.RED + "ERROR105: Normalization list must be 'y' or 'n'.",infoPLAN)
56
56
  return 'e'
57
57
 
58
58
  if ThresholdSigns[i] == 'none':
59
- print(Fore.MAGENTA + "WARNING102: We are advise to do not put 'none' Threshold sign. But some cases improves performance of the model from: TrainDPNN",infoDPNN + Style.RESET_ALL)
59
+ print(Fore.MAGENTA + "WARNING102: We are advise to do not put 'none' Threshold sign. But some cases improves performance of the model from: TrainPLAN",infoPLAN + Style.RESET_ALL)
60
60
  time.sleep(3)
61
61
 
62
62
  if isinstance(Value, str):
63
- print(Fore.RED + "ERROR201: Threshold values must be numeric. from: TrainDPNN")
63
+ print(Fore.RED + "ERROR201: Threshold values must be numeric. from: TrainPLAN")
64
64
  return 'e'
65
65
 
66
66
  if isinstance(Neurons[i], str):
@@ -68,53 +68,53 @@ def TrainDPNN(
68
68
  return 'e'
69
69
 
70
70
  if len(ThresholdSigns) != len(ThresholdValues):
71
- print(Fore.RED + "ERROR302: Threshold signs list and Threshold Values list must be same length. from: TrainDPNN",infoDPNN)
71
+ print(Fore.RED + "ERROR302: Threshold signs list and Threshold Values list must be same length. from: TrainPLAN",infoPLAN)
72
72
  return 'e'
73
73
 
74
74
  if len(Layers) != len(Neurons):
75
- print(Fore.RED + "ERROR303: Layers list and Neurons list must same length. from: TrainDPNN",infoDPNN)
75
+ print(Fore.RED + "ERROR303: Layers list and Neurons list must same length. from: TrainPLAN",infoPLAN)
76
76
  return 'e'
77
77
 
78
78
  if len(ThresholdValues) != len(Layers) or len(ThresholdSigns) != len(Layers):
79
- print(Fore.RED + "ERROR306: Threshold Values and Threshold Signs lists length must be same Layers list length. from: TrainDPNN",infoDPNN)
79
+ print(Fore.RED + "ERROR306: Threshold Values and Threshold Signs lists length must be same Layers list length. from: TrainPLAN",infoPLAN)
80
80
  return 'e'
81
81
 
82
82
 
83
83
  for Activation in Activations:
84
84
  if Activation != 'softmax' and Activation != 'sigmoid' and Activation != 'relu' and Activation != 'none':
85
- print(Fore.RED + "ERROR108: Activations list must be 'sigmoid' or 'softmax' or 'relu' or 'none' from: TrainDPNN",infoDPNN)
85
+ print(Fore.RED + "ERROR108: Activations list must be 'sigmoid' or 'softmax' or 'relu' or 'none' from: TrainPLAN",infoPLAN)
86
86
  return 'e'
87
87
 
88
88
 
89
89
  for index, Neuron in enumerate(Neurons):
90
90
  if Neuron < 1:
91
- print(Fore.RED + "ERROR101: Neurons list must be positive non zero integer. from: TrainDPNN",infoDPNN)
91
+ print(Fore.RED + "ERROR101: Neurons list must be positive non zero integer. from: TrainPLAN",infoPLAN)
92
92
  return 'e'
93
93
 
94
94
  if index + 1 != len(Neurons) and Neuron % 2 != 0:
95
- print(Fore.MAGENTA + "WARNING101: We strongly advise to do Neuron counts be should even numbers. from: TrainDPNN",infoDPNN)
95
+ print(Fore.MAGENTA + "WARNING101: We strongly advise to do Neuron counts be should even numbers. from: TrainPLAN",infoPLAN)
96
96
  time.sleep(3)
97
97
 
98
98
  if Neuron < ClassCount:
99
- print(Fore.RED + "ERROR102: Neuron count must be greater than class count(For DPNN). from: TrainDPNN")
99
+ print(Fore.RED + "ERROR102: Neuron count must be greater than class count(For PLAN). from: TrainPLAN")
100
100
  return 'e'
101
101
 
102
102
  if Layers[index] != 'fex' and Layers[index] != 'cat':
103
- print(Fore.RED + "ERROR107: Layers list must be 'fex'(Feature Extraction Layer) or 'cat' (Catalyser Layer). from: TrainDPNN",infoDPNN)
103
+ print(Fore.RED + "ERROR107: Layers list must be 'fex'(Feature Extraction Layer) or 'cat' (Catalyser Layer). from: TrainPLAN",infoPLAN)
104
104
  return 'e'
105
105
 
106
106
  if len(ThresholdSigns) != len(ThresholdValues):
107
- print(Fore.RED + "ERROR305: Threshold signs list and Threshold values list must be same length. from: TrainDPNN",infoDPNN)
107
+ print(Fore.RED + "ERROR305: Threshold signs list and Threshold values list must be same length. from: TrainPLAN",infoPLAN)
108
108
  return 'e'
109
109
 
110
110
 
111
111
  for i, Sign in enumerate(ThresholdSigns):
112
112
  if Sign != '>' and Sign != '<' and Sign != '==' and Sign != '!=' and Sign != 'none':
113
- print(Fore.RED + "ERROR104: Threshold signs must be '>' or '<' or '==' or '!='. or 'none' from: TrainDPNN",infoDPNN)
113
+ print(Fore.RED + "ERROR104: Threshold signs must be '>' or '<' or '==' or '!='. or 'none' from: TrainPLAN",infoPLAN)
114
114
  return 'e'
115
115
 
116
116
  if Layers[i] == 'fex' and Sign == 'none':
117
- print(Fore.RED + "ERROR109: at layer type 'fex', pairing with 'none' Threshold is not acceptlable. if you want to 'none' put '==' and make threshold value '0'. from: TrainDPNN ",infoDPNN)
117
+ print(Fore.RED + "ERROR109: at layer type 'fex', pairing with 'none' Threshold is not acceptlable. if you want to 'none' put '==' and make threshold value '0'. from: TrainPLAN ",infoPLAN)
118
118
  return 'e'
119
119
 
120
120
  UniqueLabels = set()
@@ -129,7 +129,7 @@ def TrainDPNN(
129
129
 
130
130
 
131
131
  if len(UniqueLabels) != ClassCount:
132
- print(Fore.RED + "ERROR106: Label variety length must be same Class Count. from: TrainDPNN",infoDPNN)
132
+ print(Fore.RED + "ERROR106: Label variety length must be same Class Count. from: TrainPLAN",infoPLAN)
133
133
  return 'e'
134
134
 
135
135
  Inputs[0] = np.array(Inputs[0])
@@ -150,7 +150,7 @@ def TrainDPNN(
150
150
  inp = inp.ravel()
151
151
 
152
152
  if InputSize != len(inp):
153
- print(Fore.RED +"ERROR304: All input matrices or vectors in inputs list, must be same size. from: TrainDPNN",infoDPNN + Style.RESET_ALL)
153
+ print(Fore.RED +"ERROR304: All input matrices or vectors in inputs list, must be same size. from: TrainPLAN",infoPLAN + Style.RESET_ALL)
154
154
  return 'e'
155
155
 
156
156
 
@@ -551,7 +551,7 @@ def Relu(
551
551
  return np.maximum(0, x)
552
552
 
553
553
 
554
- def TestDPNN(
554
+ def TestPLAN(
555
555
  TestInputs, # list[list[num]]: Test input data.
556
556
  TestLabels, # list[num]: Test labels.
557
557
  Layers, # list[str]: List of layer names.
@@ -661,12 +661,12 @@ def TestDPNN(
661
661
 
662
662
  except:
663
663
 
664
- print(Fore.RED + "ERROR: Testing model parameters like 'Layers' 'ThresholdCounts' must be same as trained model. Check parameters. Are you sure weights are loaded ? from: TestDPNN" + infoTestModel + Style.RESET_ALL)
664
+ print(Fore.RED + "ERROR: Testing model parameters like 'Layers' 'ThresholdCounts' must be same as trained model. Check parameters. Are you sure weights are loaded ? from: TestPLAN" + infoTestModel + Style.RESET_ALL)
665
665
  return 'e'
666
666
 
667
667
  return TestPredictions,Acc
668
668
 
669
- def SaveDPNN(ModelName,
669
+ def SavePLAN(ModelName,
670
670
  ModelType,
671
671
  Layers,
672
672
  ClassCount,
@@ -682,12 +682,12 @@ def SaveDPNN(ModelName,
682
682
  W
683
683
  ):
684
684
 
685
- infoSaveDPNN = """
685
+ infoSavePLAN = """
686
686
  Function to save a deep learning model.
687
687
 
688
688
  Arguments:
689
689
  ModelName (str): Name of the model.
690
- ModelType (str): Type of the model.(options: DPNN)
690
+ ModelType (str): Type of the model.(options: PLAN)
691
691
  Layers (list): List containing 'fex' and 'cat' layers.
692
692
  ClassCount (int): Number of classes.
693
693
  ThresholdSigns (list): List containing threshold signs.
@@ -698,7 +698,7 @@ def SaveDPNN(ModelName,
698
698
  LogType (str): Type of log to save (options: 'csv', 'txt', 'hdf5').
699
699
  WeightsType (str): Type of weights to save (options: 'txt', 'npy', 'mat').
700
700
  WeightFormat (str): Format of the weights (options: 'd', 'f', 'raw').
701
- SavePath (str): Path where the model will be saved. For example: C:/Users/beydili/Desktop/denemeDPNN/
701
+ SavePath (str): Path where the model will be saved. For example: C:/Users/beydili/Desktop/denemePLAN/
702
702
  W: Weights of the model.
703
703
 
704
704
  Returns:
@@ -709,15 +709,15 @@ def SaveDPNN(ModelName,
709
709
  pass
710
710
 
711
711
  if LogType != 'csv' and LogType != 'txt' and LogType != 'hdf5':
712
- print(Fore.RED + "ERROR109: Save Log Type (File Extension) must be 'csv' or 'txt' or 'hdf5' from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
712
+ print(Fore.RED + "ERROR109: Save Log Type (File Extension) must be 'csv' or 'txt' or 'hdf5' from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
713
713
  return 'e'
714
714
 
715
715
  if WeightsType != 'txt' and WeightsType != 'npy' and WeightsType != 'mat':
716
- print(Fore.RED + "ERROR110: Save Weight type (File Extension) Type must be 'txt' or 'npy' or 'mat' from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
716
+ print(Fore.RED + "ERROR110: Save Weight type (File Extension) Type must be 'txt' or 'npy' or 'mat' from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
717
717
  return 'e'
718
718
 
719
719
  if WeightFormat != 'd' and WeightFormat != 'f' and WeightFormat != 'raw':
720
- print(Fore.RED + "ERROR111: Weight Format Type must be 'd' or 'f' or 'raw' from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
720
+ print(Fore.RED + "ERROR111: Weight Format Type must be 'd' or 'f' or 'raw' from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
721
721
  return 'e'
722
722
 
723
723
  NeuronCount = 0
@@ -728,7 +728,7 @@ def SaveDPNN(ModelName,
728
728
  SynapseCount += np.shape(w)[0] * np.shape(w)[1]
729
729
  except:
730
730
 
731
- print(Fore.RED + "ERROR: Weight matrices has a problem from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
731
+ print(Fore.RED + "ERROR: Weight matrices has a problem from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
732
732
  return 'e'
733
733
  import pandas as pd
734
734
  from datetime import datetime
@@ -769,7 +769,7 @@ def SaveDPNN(ModelName,
769
769
 
770
770
  except:
771
771
 
772
- print(Fore.RED + "ERROR: Model log not saved. Check the log parameters from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
772
+ print(Fore.RED + "ERROR: Model log not saved. Check the log parameters from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
773
773
  return 'e'
774
774
  try:
775
775
 
@@ -831,7 +831,7 @@ def SaveDPNN(ModelName,
831
831
 
832
832
  except:
833
833
 
834
- print(Fore.RED + "ERROR: Model Weights not saved. Check the Weight parameters. SaveFilePath expl: 'C:/Users/hasancanbeydili/Desktop/denemeDPNN/' from: SaveDPNN" + infoSaveDPNN + Style.RESET_ALL)
834
+ print(Fore.RED + "ERROR: Model Weights not saved. Check the Weight parameters. SaveFilePath expl: 'C:/Users/hasancanbeydili/Desktop/denemePLAN/' from: SavePLAN" + infoSavePLAN + Style.RESET_ALL)
835
835
  return 'e'
836
836
  print(df)
837
837
  message = (
@@ -843,11 +843,11 @@ def SaveDPNN(ModelName,
843
843
  return print(message)
844
844
 
845
845
 
846
- def LoadDPNN(ModelName,
846
+ def LoadPLAN(ModelName,
847
847
  LoadPath,
848
848
  LogType,
849
849
  ):
850
- infoLoadDPNN = """
850
+ infoLoadPLAN = """
851
851
  Function to load a deep learning model.
852
852
 
853
853
  Arguments:
@@ -877,7 +877,7 @@ def LoadDPNN(ModelName,
877
877
  if LogType == 'hdf5':
878
878
  df = pd.read_hdf(LoadPath + ModelName + '.' + LogType)
879
879
  except:
880
- print(Fore.RED + "ERROR: Model Path error. Accaptable form: 'C:/Users/hasancanbeydili/Desktop/denemeDPNN/' from: LoadDPNN" + infoLoadDPNN + Style.RESET_ALL)
880
+ print(Fore.RED + "ERROR: Model Path error. Accaptable form: 'C:/Users/hasancanbeydili/Desktop/denemePLAN/' from: LoadPLAN" + infoLoadPLAN + Style.RESET_ALL)
881
881
 
882
882
  ModelName = str(df['MODEL NAME'].iloc[0])
883
883
  Layers = df['LAYERS'].tolist()
@@ -907,13 +907,13 @@ def LoadDPNN(ModelName,
907
907
  for i in range(LayerCount):
908
908
  W[i] = sio.loadmat(LoadPath + ModelName + str(i+1) + 'w.mat')
909
909
  else:
910
- raise ValueError(Fore.RED + "Incorrect weight type value. Value must be 'txt', 'npy' or 'mat' from: LoadDPNN." + infoLoadDPNN + Style.RESET_ALL)
910
+ raise ValueError(Fore.RED + "Incorrect weight type value. Value must be 'txt', 'npy' or 'mat' from: LoadPLAN." + infoLoadPLAN + Style.RESET_ALL)
911
911
  print(Fore.GREEN + "Model loaded succesfully" + Style.RESET_ALL)
912
912
  return W,Layers,ThresholdSigns,ThresholdValues,Normalization,Activations,df
913
913
 
914
- def PredictFromDiscDPNN(Input,ModelName,ModelPath,LogType):
915
- infoPredictFromDİscDPNN = """
916
- Function to make a prediction using a divided pruning deep learning neural network (DPNN).
914
+ def PredictFromDiscPLAN(Input,ModelName,ModelPath,LogType):
915
+ infoPredictFromDİscPLAN = """
916
+ Function to make a prediction using a divided pruning deep learning neural network (PLAN).
917
917
 
918
918
  Arguments:
919
919
  Input (list or ndarray): Input data for the model (single vector or single matrix).
@@ -924,7 +924,7 @@ def PredictFromDiscDPNN(Input,ModelName,ModelPath,LogType):
924
924
  Returns:
925
925
  ndarray: Output from the model.
926
926
  """
927
- W,Layers,ThresholdSigns,ThresholdValues,Normalization,Activations = LoadDPNN(ModelName,ModelPath,
927
+ W,Layers,ThresholdSigns,ThresholdValues,Normalization,Activations = LoadPLAN(ModelName,ModelPath,
928
928
  LogType)[0:6]
929
929
  Wc = [0] * len(W)
930
930
  for i, w in enumerate(W):
@@ -953,16 +953,16 @@ def PredictFromDiscDPNN(Input,ModelName,ModelPath,LogType):
953
953
  ThresholdValues[index],
954
954
  0)
955
955
  except:
956
- print(Fore.RED + "ERROR: The input was probably entered incorrectly. from: PredictFromDiscDPNN" + infoPredictFromDİscDPNN + Style.RESET_ALL)
956
+ print(Fore.RED + "ERROR: The input was probably entered incorrectly. from: PredictFromDiscPLAN" + infoPredictFromDİscPLAN + Style.RESET_ALL)
957
957
  return 'e'
958
958
  for i, w in enumerate(Wc):
959
959
  W[i] = np.copy(w)
960
960
  return NeuralLayer
961
961
 
962
962
 
963
- def PredictFromRamDPNN(Input,Layers,ThresholdSigns,ThresholdValues,Normalizations,Activations,W):
964
- infoPredictFromRamDPNN = """
965
- Function to make a prediction using a divided pruning learning neural network (DPNN)
963
+ def PredictFromRamPLAN(Input,Layers,ThresholdSigns,ThresholdValues,Normalizations,Activations,W):
964
+ infoPredictFromRamPLAN = """
965
+ Function to make a prediction using a pruning learning artificial neural network (PLAN)
966
966
  from weights and parameters stored in memory.
967
967
 
968
968
  Arguments:
@@ -1004,7 +1004,7 @@ def PredictFromRamDPNN(Input,Layers,ThresholdSigns,ThresholdValues,Normalization
1004
1004
  ThresholdSigns[index],
1005
1005
  ThresholdValues[index],0)
1006
1006
  except:
1007
- print(Fore.RED + "ERROR: Unexpected input or wrong model parameters from: PredictFromRamDPNN." + infoPredictFromRamDPNN + Style.RESET_ALL)
1007
+ print(Fore.RED + "ERROR: Unexpected input or wrong model parameters from: PredictFromRamPLAN." + infoPredictFromRamPLAN + Style.RESET_ALL)
1008
1008
  return 'e'
1009
1009
  for i, w in enumerate(Wc):
1010
1010
  W[i] = np.copy(w)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyerualjetwork
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: Advanced python deep learning library.(More document coming soon..)
5
5
  Author: Hasan Can Beydili
6
6
  Author-email: tchasancan@gmail.com
@@ -0,0 +1,6 @@
1
+ plan/__init__.py,sha256=cyb3DkUey_4zEApoFtf-UBMGwd8uFADSjy3osQUG_pY,315
2
+ plan/plan.py,sha256=B_IpTzNSmxh2C3GURqUGg56tEPgjZ1_LYA2IeeRNzx4,40246
3
+ pyerualjetwork-1.1.6.dist-info/METADATA,sha256=LKU89fAGbxzH8ddOer_lSOKnvX0HKoR6EHPmDRu2UA8,278
4
+ pyerualjetwork-1.1.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
5
+ pyerualjetwork-1.1.6.dist-info/top_level.txt,sha256=G0Al3HuNJ88434XneyDtRKAIUaLCizOFYFYNhd7e2OM,5
6
+ pyerualjetwork-1.1.6.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ plan
DPNN/__init__.py DELETED
@@ -1,20 +0,0 @@
1
- # pyerualjetwork/DPNN/__init__.py
2
-
3
- # Bu dosya, DPNN modülünün ana giriş noktasıdır.
4
-
5
- from .AutoBalancer import AutoBalancer
6
- from .Normalization import Normalization
7
- from .Softmax import Softmax
8
- from .Sigmoid import Sigmoid
9
- from .Relu import Relu
10
- from .SynapticPruning import SynapticPruning
11
- from .SynapticDividing import SynapticDividing
12
- from .WeightIdentification import WeightIdentification
13
- from .Fex import Fex
14
- from .Cat import Cat
15
- from .TrainDPNN import TrainDPNN
16
- from .TestDPNN import TestDPNN
17
- from .SaveDPNN import SaveDPNN
18
- from .LoadDPNN import LoadDPNN
19
- from .PredictFromDiscDPNN import PredictFromDiscDPNN
20
- from .PredictFromRamDPNN import PredictFromRamDPNN
@@ -1,6 +0,0 @@
1
- DPNN/DPNN.py,sha256=YX4G0vaDOZHRF1tXITiIiE6MdidhQEESYh257dzLxn0,40243
2
- DPNN/__init__.py,sha256=CIh25uo9Jl6Sz8YRI-1yQqX-nDh2e2qHoq1tAwy2inI,691
3
- pyerualjetwork-1.1.4.dist-info/METADATA,sha256=vbjhZnYRUD1UNUXsPAucmKHyuXw36afnDTk5tpAeap8,278
4
- pyerualjetwork-1.1.4.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
5
- pyerualjetwork-1.1.4.dist-info/top_level.txt,sha256=FP80qXxAtwGIzBS7B8QpXzoYD7L5aFSBVzlmcFBjq7k,5
6
- pyerualjetwork-1.1.4.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- DPNN