diff options
22 files changed, 162 insertions, 59 deletions
diff --git a/Bin_Phase_env.py b/Bin_Phase_env.py index d9975fe..9a9d873 100644 --- a/Bin_Phase_env.py +++ b/Bin_Phase_env.py @@ -114,12 +114,15 @@ class BinPhaseEnv(QWidget,ui_dialog): self.comp1 = self.comboBox.currentText() self.comp2 = self.comboBox_2.currentText() + self.comp_1 = self.comboBox.currentText().split('(')[0] + self.comp_2 = self.comboBox_2.currentText().split('(')[0] + self.thermoPack = self.comboBox_3.currentText() self.data.append("model Graph\n") - self.data.append("import data = Simulator.Files.Chemsep_Database;\n") - self.data.append("parameter data."+self.comp1+" comp1;\n") - self.data.append("parameter data."+self.comp2+" comp2;\n") + self.data.append("import data = Simulator.Files.ChemsepDatabase;\n") + self.data.append("parameter data."+self.comp_1+" comp1;\n") + self.data.append("parameter data."+self.comp_2+" comp2;\n") self.data.append("extends BinaryEnvelopes."+self.thermoPack+"(Nc = 2, data_points = "+str(data_points)+ ", comp = { comp1, comp2 }, "+self.type+" = fill( "+str(val)+", "+str(data_points)+"));\n") self.data.append("end Graph;") diff --git a/ComponentSelector.py b/ComponentSelector.py index e8f282c..60498cc 100644 --- a/ComponentSelector.py +++ b/ComponentSelector.py @@ -27,7 +27,7 @@ class ComponentSelector(QDialog,ui_dialog): x=i.get_comp_name_list() self.dict1[i]=x self.lines+=x - print(self.lines) + #print(self.lines) #self.DB1_list=self.DB1.get_comp_name_list() @@ -107,7 +107,7 @@ class ComponentSelector(QDialog,ui_dialog): self.final_mo() self.lineEdit.clear() - print(compound_selected) + #print(compound_selected) self.CAS=self.obj.get_value(self.comp,'CAS') self.name=self.comp @@ -117,7 +117,7 @@ class ComponentSelector(QDialog,ui_dialog): dict={'CAS':self.CAS,'Name':self.name,'Molecular Formula':self.molecular_formula,'Molecular Weight':self.molecular_weight} #converted everything to a dictionary which will be passes to addtable #function as a parameter. - print(dict) + #print(dict) self.add_to_table(dict) else: self.show_error() @@ -139,7 +139,7 @@ class ComponentSelector(QDialog,ui_dialog): except Exception as e: exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] - print(exc_type, fname, exc_tb.tb_lineno) + #print(exc_type, fname, exc_tb.tb_lineno) def add_compounds_to_list(self,comp): # which list? self.item = QListWidgetItem() diff --git a/Container.py b/Container.py index 3068c78..443a8bd 100644 --- a/Container.py +++ b/Container.py @@ -126,12 +126,12 @@ class Container(): except AttributeError: pass - print("SIMULATE") - print(mode) + #print("SIMULATE") + #print(mode) self.compounds = compound_selected self.flowsheet = Flowsheet() self.flowsheet.add_compound_list([c[:c.index('(')] for c in self.compounds]) - print("######## connection master#########\n",self.conn) + #print("######## connection master#########\n",self.conn) for i in self.unit_operations : self.flowsheet.add_unit_operations(i) @@ -145,12 +145,17 @@ class Container(): elif mode=='EQN': self.msg.append("<span>["+str(self.current_time())+"] Simulating in <b>equation</b> mode ... </span>") self.flowsheet.simulate_EQN() - self.msg_browser() self.result=self.flowsheet.result_data - print("under Eqn mode simulation") - - DockWidget.show_result(NodeItem.get_dock_widget()) + if(len(self.result)== 4): + #self.msg_browser() + self.msg.append("<span style=\"color:green\">["+str(self.current_time())+"] Simulation <b>Successful.</b></span>") + else: + self.msg.append("<span style=\"color:red\">["+str(self.current_time())+"] Simulation <b>Failed.</b></span>") + #print("under Eqn mode simulation") + + if(len(self.result)== 4): + DockWidget.show_result(NodeItem.get_dock_widget()) # for i in self.graphics.scene.items(): # if (isinstance(i, NodeItem)): diff --git a/DockWidgets/DockWidgetMaterialStream.py b/DockWidgets/DockWidgetMaterialStream.py index 2e5f303..54d57b9 100644 --- a/DockWidgets/DockWidgetMaterialStream.py +++ b/DockWidgets/DockWidgetMaterialStream.py @@ -65,7 +65,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): for c,i in enumerate(self.input_dict): if(i=="x_pc"): noc = len(compound_selected) - print(noc) + #print(noc) self.x_pclist.clear() self.comp_gb = QGroupBox("Mole Fractions") @@ -89,7 +89,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): elif i == "Thermo Package": self.cbTP.setCurrentText(self.input_dict[i]) else: - print("elseloop") + #print("elseloop") l = QLineEdit() if self.input_dict[i] != None: l.setText(str(self.input_dict[i])) @@ -114,7 +114,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): def update_compounds(self): try: noc = len(compound_selected) - print(noc) + #print(noc) self.x_pclist.clear() lay = QGridLayout() @@ -134,9 +134,9 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): def param(self): try: self.dict={} - print("param.input_dict ", self.input_dict) + #print("param.input_dict ", self.input_dict) for i in self.input_dict: - print(i) + #print(i) if(i =="x_pc"): l=[] mf = [] @@ -159,11 +159,11 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): if (self.input_dict[i].text()): self.dict[i] = self.input_dict[i].text() else: - print(self.input_dict[i]) + #print(self.input_dict[i]) self.show_error() break - print("param ", self.dict) + #print("param ", self.dict) self.obj.param_setter(self.dict) self.hide() @@ -190,7 +190,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): # result data tab def results_category(self,name): try: - print("Under result category name ", name) + #print("Under result category name ", name) result=self.container.result obj = self.container.fetch_object(name) @@ -207,15 +207,15 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): ll = [] # list for basis names for basis in d: propertyname = name + '.' + d[basis] - print("basis ", basis, propertyname) + #print("basis ", basis, propertyname) for i in result[0]: if (propertyname in i): ll.append(i) - print(ll) + #print(ll) j = 0 namee = 'none' - print("namee ", namee) + #print("namee ", namee) #initialization for treewidgets lroot = 1 mroot = 1 @@ -224,11 +224,11 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): for i,k in enumerate(ll): ind = result[0].index(k) - print("index ", ind) - print("str ", k) + #print("index ", ind) + #print("str ", k) resultval = str(result[-1][ind]) - print("######Resultsfetch####",resultval) - print(k[k.find(".")+1:k.find("[")]) + #print("######Resultsfetch####",resultval) + #print(k[k.find(".")+1:k.find("[")]) obj.variables[k.split('.')[1]]['value'] = resultval if namee not in k: @@ -258,14 +258,14 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): phaseResLst = [] for phase in p: propertyname = name + '.' + p[phase] - print("phase ", phase, propertyname) + #print("phase ", phase, propertyname) for i in result[0]: if i.find('['): if (propertyname == i[0:i.find('[')]): phaseResLst.append(i) if propertyname == i: phaseResLst.append(i) - print(phaseResLst) + #print(phaseResLst) self.mTableWidget.setRowCount(0) self.lTableWidget.setRowCount(0) @@ -274,14 +274,14 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): for i,val in enumerate(phaseResLst): ind = result[0].index(val) resultval = str(result[-1][ind]) - print(resultval, i, val) + #print(resultval, i, val) obj.variables[val.split('.')[1]]['value'] = resultval if '[' in val: - print(val) + #print(val) temp = val[val.find('.')+1:val.find('[')] - print(temp) + #print(temp) if '1' in val.split('.')[1]: - print(obj.variables[val.split('.')[1]]['name']) + #print(obj.variables[val.split('.')[1]]['name']) mrowPosition = self.mTableWidget.rowCount() self.mTableWidget.insertRow(mrowPosition) self.mTableWidget.setItem(mrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) @@ -304,7 +304,7 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): self.vTableWidget.setItem(vrowPosition , 2, QTableWidgetItem(obj.variables[val.split('.')[1]]['unit'])) self.vTableWidget.resizeColumnsToContents() if not '[' in val: - print(obj.variables[val.split('.')[1]]['name']) + #print(obj.variables[val.split('.')[1]]['name']) mrowPosition = self.mTableWidget.rowCount() self.mTableWidget.insertRow(mrowPosition) self.mTableWidget.setItem(mrowPosition , 0, QTableWidgetItem(obj.variables[val.split('.')[1]]['name'])) @@ -314,15 +314,15 @@ class DockWidgetMaterialStream(QDockWidget,ui_dialog): # updating the input data from fetched results from simulation - print(self.comboBox.currentText()) + #print(self.comboBox.currentText()) self.input_dict = {} self.input_dict = self.obj.param_getter(self.comboBox.currentText()) # print("before", self.input_dict) - # self.input_dict.pop("x_pc") + #self.input_dict.pop("x_pc") # temp = self.input_dict.pop('thermo_package') for i in range(len(compound_selected)): - print(i) + #print(i) self.input_dict['x_pc[1,' + str(i+1) + ']'] = self.obj.variables['x_pc[1,' + str(i+1) +']']['value'] # self.input_dict['thermo_package'] = temp # print("after", self.input_dict) diff --git a/DockWidgets/__pycache__/DockWidget.cpython-36.pyc b/DockWidgets/__pycache__/DockWidget.cpython-36.pyc Binary files differindex 1d47765..362d798 100644 --- a/DockWidgets/__pycache__/DockWidget.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidget.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-36.pyc Binary files differindex 1101a8e..35f8cc8 100644 --- a/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetCompoundSeparator.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-36.pyc Binary files differindex ec04f1f..b2d28ee 100644 --- a/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetDistillationColumn.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetFlash.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetFlash.cpython-36.pyc Binary files differindex 387b27b..5d96e15 100644 --- a/DockWidgets/__pycache__/DockWidgetFlash.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetFlash.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-36.pyc Binary files differindex 90799f7..dcdd91b 100644 --- a/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetMaterialStream.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetMixer.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetMixer.cpython-36.pyc Binary files differindex f3fd8b1..7ce7bc5 100644 --- a/DockWidgets/__pycache__/DockWidgetMixer.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetMixer.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-36.pyc Binary files differindex a56884a..a43a296 100644 --- a/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetShortcutColumn.cpython-36.pyc diff --git a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-36.pyc b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-36.pyc Binary files differindex b0983a0..ddefbdd 100644 --- a/DockWidgets/__pycache__/DockWidgetSplitter.cpython-36.pyc +++ b/DockWidgets/__pycache__/DockWidgetSplitter.cpython-36.pyc diff --git a/OMChem/Flowsheet.py b/OMChem/Flowsheet.py index a61cd52..ce0da55 100644 --- a/OMChem/Flowsheet.py +++ b/OMChem/Flowsheet.py @@ -47,8 +47,8 @@ class Flowsheet(): def send_for_simulation_Eqn(self): self.result_data = [] self.omc_path = self.get_omc_path() - print(self.omc_path) - + #print(self.omc_path) + if self.sim_method == 'Eqn': simpath = self.eqn_mos_path os.chdir(self.sim_dir_path) @@ -68,7 +68,6 @@ class Flowsheet(): self.result_data.append(row) def send_for_simulation_SM(self,unitop): - self.result_data = [] self.omc_path = self.get_omc_path() os.chdir(self.sim_dir_path) @@ -145,14 +144,14 @@ class Flowsheet(): for d in self.data: txtfile.write(str(d)) txtfile.write('end Flowsheet;\n') - + #print(self.eqn_mos_path) with open(self.eqn_mos_path, 'w') as mosFile: mosFile.write('loadModel(Modelica);\n') mosFile.write('loadFile(\"Simulator/package.mo\");\n') mosFile.write('loadFile(\"database.mo\");\n') mosFile.write('loadFile(\"Flowsheet.mo\");\n') mosFile.write('simulate(Flowsheet, outputFormat=\"csv\", stopTime=1.0, numberOfIntervals=1);\n') - + print('Initiating Simulation in Equation Oriented Mode') self.send_for_simulation_Eqn() diff --git a/Simulator/BinaryEnvelopes.mo b/Simulator/BinaryEnvelopes.mo new file mode 100644 index 0000000..590888d --- /dev/null +++ b/Simulator/BinaryEnvelopes.mo @@ -0,0 +1,23 @@ +package BinaryEnvelopes + model NRTL + parameter Integer Nc; + parameter Integer data_points; + parameter Real BIP[Nc, Nc, 2] = Simulator.Files.ThermodynamicFunctions.BIPNRTL(Nc, comp.CAS); + parameter Simulator.Files.ChemsepDatabase.GeneralProperties comp[Nc]; + Simulator.BinaryPhaseEnvelope.BinaryPhaseEnvelopeNRTL.base points[data_points](each Nc = Nc, each comp = comp, each BIP = BIP); + Real x[data_points, Nc], y[data_points, Nc], P[data_points], T[data_points]; + equation + points[:].x = x; + points[:].y = y; + points[:].P = P; + points[:].T = T; + for i in 1:data_points loop + x[i, 1] = 0 + (i - 1) * 1/(data_points-1); + end for; + end NRTL; + + + + + +end BinaryEnvelopes; diff --git a/Simulator/Simulator/Examples/MaterialStream.mo b/Simulator/Simulator/Examples/MaterialStream.mo index 04c57d7..73d749c 100644 --- a/Simulator/Simulator/Examples/MaterialStream.mo +++ b/Simulator/Simulator/Examples/MaterialStream.mo @@ -59,6 +59,8 @@ package MaterialStream F_p[1] = 100; end PVFflash; + + model PHflash //we have to first instance components to give to material stream model. import data = Simulator.Files.ChemsepDatabase; diff --git a/Simulator/Simulator/Streams/MaterialStream.mo b/Simulator/Simulator/Streams/MaterialStream.mo index 73cbafe..6d78e99 100644 --- a/Simulator/Simulator/Streams/MaterialStream.mo +++ b/Simulator/Simulator/Streams/MaterialStream.mo @@ -33,7 +33,7 @@ model MaterialStream "Model representing Material Stream" Simulator.Files.Interfaces.matConn Out(Nc = Nc) annotation( Placement(visible = true, transformation(origin = {100, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {100, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); - extends GuessModels.InitialGuess; + extends GuessModels.InitialGuess(Nc = Nc); equation //Connector equations @@ -99,7 +99,7 @@ class MaterialStream(): dict = {self.mode1:self.variables['P']['value'], self.mode2:self.variables['T']['value'], "MolFlow":self.variables['F_p[1]']['value'],"x_pc":self.variables['x_pc']['value'], "Thermo Package": self.thermo_package} - print('dictionary is :' + str(dict)) + #print('dictionary is :' + str(dict)) elif(mode=="PH"): self.mode1 = 'P' @@ -130,7 +130,7 @@ class MaterialStream(): def param_setter(self,dict): self.variables['x_pc']['value'] = dict['x_pc'].split(",") - print('xpc is :' + str(self.variables['x_pc']['value'])) + #print('xpc is :' + str(self.variables['x_pc']['value'])) self.thermo_package = dict['Thermo Package'] self.variables['F_p[1]']['value'] = dict['MolFlow'] self.variables[self.mode1]['value'] = dict[self.mode1] Binary files differ@@ -108,7 +108,7 @@ <item row="1" column="0"> <widget class="QDockWidget" name="dockWidget_2"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -125,6 +125,9 @@ <height>150</height> </size> </property> + <property name="features"> + <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> + </property> <property name="allowedAreas"> <set>Qt::BottomDockWidgetArea</set> </property> @@ -134,7 +137,11 @@ <widget class="QWidget" name="dockWidgetContents_2"> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QTextEdit" name="textBrowser"/> + <widget class="QTextEdit" name="textBrowser"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> </item> </layout> </widget> @@ -148,7 +155,7 @@ <x>0</x> <y>0</y> <width>1068</width> - <height>18</height> + <height>21</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -170,6 +177,8 @@ <property name="title"> <string>View</string> </property> + <addaction name="actionViewComponentSelector"/> + <addaction name="actionViewMessageBrowser"/> <addaction name="actionZoomIn"/> <addaction name="actionZoomOut"/> <addaction name="actionResetZoom"/> @@ -210,6 +219,9 @@ <addaction name="menuUtility"/> </widget> <widget class="QDockWidget" name="dockWidget"> + <property name="enabled"> + <bool>true</bool> + </property> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch> @@ -235,6 +247,18 @@ <bold>true</bold> </font> </property> + <property name="tabletTracking"> + <bool>false</bool> + </property> + <property name="acceptDrops"> + <bool>false</bool> + </property> + <property name="floating"> + <bool>false</bool> + </property> + <property name="features"> + <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> + </property> <property name="windowTitle"> <string>Component Selector</string> </property> @@ -274,8 +298,8 @@ <rect> <x>0</x> <y>0</y> - <width>225</width> - <height>914</height> + <width>221</width> + <height>956</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_5"> @@ -311,7 +335,7 @@ <enum>Qt::LeftToRight</enum> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Streams</string> @@ -818,7 +842,7 @@ <enum>Qt::LeftToRight</enum> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Mixer/Splitter</string> @@ -1367,7 +1391,7 @@ <enum>Qt::LeftToRight</enum> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Exchangers</string> @@ -1513,7 +1537,7 @@ <enum>Qt::LeftToRight</enum> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Separator</string> @@ -1644,7 +1668,7 @@ </font> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Pressure Changers</string> @@ -1870,7 +1894,7 @@ </font> </property> <property name="styleSheet"> - <string notr="true">color:rgb(73,36,73,255)</string> + <string notr="true">color:rgba(73,36,73,255)</string> </property> <property name="text"> <string>Columns</string> @@ -2040,6 +2064,9 @@ </property> </action> <action name="actionSequentialMode"> + <property name="enabled"> + <bool>false</bool> + </property> <property name="icon"> <iconset> <normaloff>Icons/sq.png</normaloff>Icons/sq.png</iconset> @@ -2101,6 +2128,28 @@ <string>Redo</string> </property> </action> + <action name="actionViewComponentSelector"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="text"> + <string>Component Selector</string> + </property> + </action> + <action name="actionViewMessageBrowser"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="text"> + <string>Message Browser</string> + </property> + </action> </widget> <resources/> <connections/> @@ -93,7 +93,9 @@ class MainApp(QMainWindow,ui): self.actionTerminate.triggered.connect(self.terminate) self.actionTerminate.setShortcut('Ctrl+T') self.actionBinaryPhaseEnvelope.triggered.connect(self.bin_phase_env) - + self.actionViewMessageBrowser.triggered.connect(self.toggle_message_browser_view) + self.actionViewComponentSelector.triggered.connect(self.toggle_component_selector_view) + ''' Handles all the buttons of different components. ''' @@ -352,6 +354,25 @@ class MainApp(QMainWindow,ui): except Exception as e: print(e) + ''' + Function for toggling the display of Component Selector + ''' + def toggle_component_selector_view(self): + if(self.actionViewComponentSelector.isChecked()): + self.dockWidget.show() + else: + self.dockWidget.hide() + + ''' + Function for toggling the display of Message Browser + ''' + def toggle_message_browser_view(self): + if(self.actionViewMessageBrowser.isChecked()): + self.dockWidget_2.show() + else: + self.dockWidget_2.hide() + + def main(): clean_file('Undo') @@ -361,6 +382,7 @@ def main(): window = MainApp() window.showMaximized() app.exec() + if __name__ == '__main__': main() diff --git a/pycflags b/pycflags new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/pycflags diff --git a/pyldflags b/pyldflags new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/pyldflags |