Example #1
0
def main():
    """
       main test the FileUtil class.

    """
    file1 = FileUtil('test_file.txt')
    print "\n\nself.readlines():"
    print file1.readlines()

    clean_list = file1.readlines_clean()
    print "\n\nself.readlines_clean():"
    print clean_list

    file1.replace_string_in_file("alon", "ilan")
    print "\n\nself.replace_string_in_file('alon', 'ilan'):"
    print file1.readlines()

    print "\n\nself.return_string_in_lines('ilan\\S*'):"
    print file1.return_string_in_lines("ilan\\S*")

    file1.append_file("THIS IS THE APPENDED LINE")
    print "\n\nself.append_file('THIS IS THE APPENDED LINE'):"
    print file1.readlines()

    file2 = FileUtil('output_file.csv')
    input_list = file1.readlines()
    file2.create_csv_file_from_list(input_list)

    file3 = FileUtil('output_file.bak')
    file3.writelines(file1.readlines())
    print "\n\nSelf.writelenes('output_file.bak') \n\n"

    print "Colums 2, delimetar=' ':", file1.read_column(1, " "), "\n\n"
Example #2
0
    def test_fully_qualified_path(self):
        # Test 1, Windows (should be unchanged)
        path1 = r'c:\temp\subdir\subsubdir'
        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Windows'
            mocked_fu = FileUtil()
            exp1 = path1 + mocked_fu.separator + self.fn
            self.assertEqual(
                exp1,
                mocked_fu.fully_qualified_path(dirPath=path1,
                                               filename=self.fn),
                'Test 1 fail')
        # Test 2, Linux without the leading /
        test2 = r'dir/to/path'

        # Test 3, Linux with the leading / (should be unchanged)
        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Linux'
            mocked_fu = FileUtil()
            exp2 = mocked_fu.separator + test2 + mocked_fu.separator + self.fn
            self.assertEqual(
                exp2,
                mocked_fu.fully_qualified_path(dirPath=test2,
                                               filename=self.fn,
                                               dir_path_is_array=False),
                "Test 2 fail")
            test3 = mocked_fu.separator + test2
            exp3 = test3 + mocked_fu.separator + self.fn
            self.assertEqual(
                exp3,
                mocked_fu.fully_qualified_path(dirPath=test3,
                                               filename=self.fn,
                                               dir_path_is_array=False),
                "Test 3 fail")
Example #3
0
    def test_is_windows(self):
        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Linux'
            mocked_fu = FileUtil()
            test1 = mocked_fu.is_Windows
            self.assertFalse(test1)

        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Windows'
            mocked_fu = FileUtil()
            self.assertTrue(mocked_fu.is_Windows)
Example #4
0
 def __init__(self):
     self.filename = None
     self.worksheetName = None
     self._df = None
     self._fu = FileUtil()
     # make the df display look better: https://stackoverflow.com/questions/11707586/how-do-i-expand-the-output-display-to-see-more-columns-of-a-pandas-dataframe
     pd.set_option('display.max_rows', 100)
     pd.set_option('display.max_columns', 50)
     pd.set_option('display.width', 800)
Example #5
0
 def get_worksheets(self, excelFileName=None):
     if excelFileName:
         self.filename = excelFileName
     fu = FileUtil()
     if fu.file_exists(self.filename):
         xl = pd.ExcelFile(self.filename)
         return xl.sheet_names
     else:
         logger.error(f'Cannot find Excel file {self.filename}.')
         return None
Example #6
0
 def __init__(self, *args, **kwargs):
     super(Test_FileUtil, self).__init__(*args, **kwargs)
     self.path = r'c:\temp' if platform.system() == 'Windows' else r'/tmp'
     self._fu = FileUtil()
     self._du = DateUtil()
     self.features_dict = {
         'book': "Hitchhiker's Guide",
         'characters': {
             'answer': 42,
             'name': 'Dent. Arthur Dent.'
         }
     }
Example #7
0
    def executing_directory(self) -> str:
        """
        Get the current executing directory using executing_file and stripping off the filename.
        Note differences between Windows and Linux.

        :return:
        """
        fu = FileUtil()
        path, _ = fu.split_qualified_path(self.executing_file())
        logger.debug(f'executing file is {self.executing_file()}')
        logger.debug(f'path (minus filename) is {path}')
        return path
Example #8
0
    def test_qualified_path(self):
        # Test 1. Normal case.
        expected = self.path + sep + self.fn
        actual = self._fu.qualified_path(self.path, self.fn)
        self.assertEqual(actual, expected, "Test 1 fail")
        # Test 2. Using an array and a Linux mock.

        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Windows'
            mocked_fu = FileUtil()
            dir_to_path = mocked_fu.separator.join(
                ['C:', 'dir', 'to',
                 'path'])  # should be C:\dir\to\path for Windows
            pathArray = dir_to_path.split(mocked_fu.separator)
            expected = dir_to_path + mocked_fu.separator + self.fn
            self.assertEqual(
                expected,
                mocked_fu.fully_qualified_path(pathArray,
                                               self.fn,
                                               dir_path_is_array=True),
                "Test 2 fail")

        # Test 3, using a windows path with a drive
        exp3 = r'c:\temp\subdir\subsubdir'
        exp3_array = exp3.split(_BACKSLASH)
        test3_with_fn = deepcopy(exp3_array)
        test3_with_fn.append(self.fn)
        test3 = _BACKSLASH.join(test3_with_fn)

        with mock.patch('platform.system') as mocked_platform:
            mocked_platform.return_value = 'Windows'
            mocked_fu = FileUtil()
            actual = mocked_fu.qualified_path(dirPath=exp3_array,
                                              filename=self.fn,
                                              dir_path_is_array=True)
            self.assertEqual(test3, actual, "Test 3 fail")
Example #9
0
    def test_write_excel(self):
        pu = PandasUtil()
        fu = FileUtil()
        df = self.my_test_df()
        fn = self.fu.qualified_path(self.path, self.spreadsheet_name)
        yaml_dict = {'outputFile': fn, 'worksheet': self.worksheet_name}
        fu.dump_yaml(Test_ApplicationUtil.excel_qual_path, yaml_dict)
        app = MyApplication(Test_ApplicationUtil.excel_qual_path)
        app.write_excel(df=df,
                        output_file_yaml_entry='outputFile',
                        worksheet=self.worksheet_name)

        actual = pu.read_df_from_excel(excelFileName=fn,
                                       excelWorksheet=self.worksheet_name)
        assert_frame_equal(df, actual)
Example #10
0
class BotEngine:
    def __init__(self,driver):
        self.driver = driver
        start= datetime.now()
        logfileName=start.strftime("%Y-%m-%d-%H-%M-%S")+'.log'
        logging.basicConfig(filename=logfileName,level=logging.INFO , format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
        
    recentSignals={'forexsignalzz':0,
                   'amirFX_signal':0,
                    'FOR3X_SIGNAL':0,
                    'Eagl777':0 ,
                    'WallstreetFXsignals':0,
                    'wolfofforexplus':0, 
                    'light_forex':0,
                    'FXMZ51':0,
                    'signallforex123':0,
                    'professoroff':0
                    
                    
                    
                    #'WSSignals':0 #,'blue_forex_signals':0
                    }
    #recentSignals={ 'blue_forex_signals':0}
    signalVendors={'a':  1}
    utils = Utils() 
    fileUtil = FileUtil()
    
    #{'Forex signals': 'GforexSignalsIr'}
    
    def setListOfVendors(self):
        self.signalVendors.update({'amirFX_signal':[ GforexSignalsIr(self.driver),'TAKE PROFIT']})
        self.signalVendors['FOR3X_SIGNAL'] = [FOR3X_SIGNAL(self.driver),'sl tp']
        self.signalVendors['signalTest']= [Eagl777(self.driver),'sl tp']
        self.signalVendors['Eagl777']= [Eagl777(self.driver),'sl tp']
        self.signalVendors['WallstreetFXsignals']= [WallstreetFXsignals(self.driver),'Trade Alert!']
        self.signalVendors['wolfofforexplus']= [wolfofforexplus(self.driver),'stop loss take profit']
        self.signalVendors['forexsignalzz']=[forexsignalzz(self.driver),'new signal']
        self.signalVendors['light_forex']=[light_forex(self.driver),'sl tp']
        self.signalVendors['FXMZ51'] = [FXMZ51(self.driver),'@ s/ t/']
        self.signalVendors['professoroff'] = [professoroff(self.driver),'tp sl']
        self.signalVendors['signallforex123'] = [signallforex123(self.driver),'tp sl']
        
        #self.signalVendors['blue_forex_signals']=[blue_forex_signals(self.driver),'at.']
        #self.signalVendors['WSSignals']=[WSSignals(self.driver),'sl tp']
        #self.signalVendors['AmirFx VIP signal'] = [GforexSignalsIr(self.driver),'TAKE PROFIT']

    def getNewMessage(self):
        coutner=1;
        while(coutner >0):
            try:
                sleep(1)

                for key in self.recentSignals:
                    try:     
                        newMessages=self.find_last_update_time(key) #return last two messages webElement-time
                        
                        print('before getting time')
                        logging.info('%s new update is %s last update is %s',
                                      key,newMessages[0], self.recentSignals[key])
                        
                        
                        if newMessages == None or newMessages[0] == self.recentSignals[key]  :
                            print('repeated signal for '+key+' provider')
                            logging.info('%s repeated signal',key)
                            continue
                        else:
                            print('%s preparing new signal started in signalFinder!',key)
                            logging.info('%s get new signal',key)
                            provider=self.signalVendors[key][0]
                            self.recentSignals[key] = newMessages[0]
    
                            sleep(2)
                            signalTxtArr=self.get_message(key,self.signalVendors[key][1]) 
                            if signalTxtArr != [] : 

                                for sigTxt in signalTxtArr : # when more than one valid message founded
                                     logging.info('%s signal text is : %s',key,sigTxt )
                                     signalObjs= provider.createSignalDto(sigTxt,key)

                                     if(signalObjs[0].enterPrice !=0):
                                        for signal in signalObjs.values(): # when more than one signal exists in a message 
                                            if(signal !=0):
                                                signal.vol = 0.01
                                                self.fileUtil.writeOnFile("s",signal)
                                            sleep(10)
                                     else: 
                                        logging.error('%s why here!!',key)
                                        print('why here!!????')
                                        self.recentSignals[key]=0
                    except IndexError: # INNER TRY
                        print('in INNER index error signalFinder: %s',key)
                        logging.error('%s in INNER except signalFinder: %s',key,sys.exc_info()[0])
                        self.recentSignals[key]=0
                        print(sys.exc_info()[0])
                        continue

                    except :
                        print('in INNER expect error signalFinder: %s',key)
                        print(sys.exc_info()[0])
                        continue
                        
                                   
            except : # outer try
                print('in OUTER except signalFinder: ')
                self.recentSignals[key]=0
                print(sys.exc_info()[0])
                logging.error('%s in outer except signalFinder: %s',key,sys.exc_info()[0])
                continue
                    

    def find_last_update_time(self, chName):
        print('start finding last update time')
        c1=5
        while c1>0: 
            try: 
                elem= self.driver.find_element_by_xpath("//input[contains(@class,'im_dialogs_search_field')]")
                sleep(2)
                elem.clear()
                elem.send_keys(chName)
                sleep(5)
                break;

            except :
                sleep(2)
                c1-=1
                
        c2=5
        while c2>0: 
            try:      
                self.driver.find_elements_by_xpath("//div[@class='im_dialogs_col']//li[contains(@class,'im_dialog_wrap')]/a")[0].click()
                sleep(2)
                break;
            except :
                sleep(2)
                c2-=1
        c3=5      
        while c3>0:
            try:
                firstLastMessageTime = self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(contains(@class,'ng-hide'))]//span[@class='im_message_date_text nocopy']")[-1].get_attribute('data-content')
                if firstLastMessageTime == '8:07:48 AM' :
                    print('aaaaaa')
                sleep(2)
                break;
            except:
                sleep(2)
                c3-=1
                
                
        try:
            secondLastMessageTime = self.driver.find_elements_by_xpath("//div[@class = 'im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(contains(@class,'ng-hide'))]//span[@class='im_message_date_text nocopy']")[-2].get_attribute('data-content')
            if firstLastMessageTime == '8:07:48 AM' :
                    print('aaaaaa')
        except :
            secondLastMessageTime=""
            print('no second message')
        
        # providerCH=self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']")[0]
        # sleep(2)
        # last_time=providerCH.find_element_by_xpath("//div[@class='im_dialog_date']").text     #self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']//div[@class='im_dialog_date']")[0].text
        sleep(2)
        print('end of finding last update time')
        return [firstLastMessageTime ,secondLastMessageTime]


    def get_message(self, chName, identityStr):
        print('getting signal from '+chName+' started')
        logging.info('%s getting signal message started',chName)
        try:
            result1=self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']")[-1].text
            time1= self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//span[contains(@class,'im_message_date_text')]")[-1].get_attribute('data-content')
            results =[[result1,time1]]
            sleep(2)
            try:
                result2=self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']")[-2].text
                time2= self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//span[contains(@class,'im_message_date_text')]")[-2].get_attribute('data-content')
                results.append([result2,time2])
            except :
                print(sys.exc_info()[0])
                print("not second message")
            
            try:
                result3 = self.driver.find_elements_by_xpath("//div[@class = 'im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]")[-1].text
                time3   = self.driver.find_elements_by_xpath("//div[@class ='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]//ancestor::div[contains(@class,'im_content_message_wrap')]//span[contains(@class,'im_message_date_text')]")[-1].get_attribute('data-content')
                
                result4 = self.driver.find_elements_by_xpath("//div[@class = 'im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]")[-2].text
                time4   = self.driver.find_elements_by_xpath("//div[@class ='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]//ancestor::div[contains(@class,'im_content_message_wrap')]//span[contains(@class,'im_message_date_text')]")[-2].get_attribute('data-content')
                
                results.append([result3,time3])
                results.append([result4,time4])
            except:
                print(sys.exc_info()[0])
                print("not message in picture")

            signalArr  = []
            
            for re in results :
                if( (re[0] != '')) :
                    if( self.utils.find_all(re[0].lower(),identityStr.lower()) ==True):
                        
                        if(self.utils.checkTime(re[1])):
                            print('getting signal from '+chName+' finished succesfully')
                            
                            logging.info('%s getting signal message successfully ended',chName)
                            #return re[0]
                            signalArr.append(re[0])
                            

            print('getting signal from '+chName+' finished!')
            #return None
            return signalArr
        except:
            print('getting signal from '+chName+' finished failed')
            return 'failed'
Example #11
0
 def log(self, msg):
     futil = FileUtil()
     futil.writeToFile("log.txt",msg,True,True)
Example #12
0
class ApplicationUtil:
    df = None
    _d = {}
    _tuple = None
    pu = PandasUtil()
    fu = FileUtil()

    def __init__(self, yaml_file:str):
        self.logger = self.init_logger()
        d = YamlUtil(yaml_file)
        self._tuple = d.asnamedtuple
        self._d = d
        self.logger.debug(f'Read in yaml file {yaml_file} with fields: {self._d.fields}')

    def init_logger(self):
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(logging.DEBUG)
        # create console handler and set level to debug
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        # create formatter
        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
        # add fromatter to ch
        ch.setFormatter(formatter)
        # add ch to logger
        self.logger.addHandler(ch)
        return self.logger

    def yaml_entry(self, yaml_entry:str) -> str:
        """
        Read the dictionary and return the value of the given key. Give a warning if the yaml_entry is missing and return a blank.
        :param yaml_entry:
        :return:
        """
        try:
            return self._d.asdict[yaml_entry]
        except KeyError:
            self.logger.warning(f'Unable to find yaml key: {yaml_entry}. Returning blank value.')
            return ''

    def load_df_from_excel(self, input_file_yaml_entry:str, worksheet:str='Sheet1'):
        input_file = self._d.asdict[input_file_yaml_entry]
        self.logger.debug(f'Reading {worksheet} file: {input_file}')
        if self.fu.file_exists(input_file):
            df = self.pu.read_df_from_excel(excelFileName=input_file, excelWorksheet=worksheet, header=0)
            self.pu.get_rowCount_colCount(df)
            return df
        else:
            self.logger.warning(f'Unable to find {worksheet} file: {input_file_yaml_entry}. Returning empty dataframe.')
            return self.pu.empty_df()

    def write_excel(self, df:pd.DataFrame, output_file_yaml_entry:str, worksheet:str) -> None:
        """
        Write the given dataframe to the file indicated by the dictionary entry (that was read in using the yaml file).
        :param df: DataFrame to write
        :param output_file_yaml_entry:
        :param worksheet:
        :return:
        """
        output_file = self.yaml_entry(output_file_yaml_entry)
        self.logger.debug(f'Writing {worksheet} file: {output_file}')
        self.pu.write_df_to_excel(df=df, excelFileName=output_file, excelWorksheet=worksheet)
Example #13
0
# -*- coding:utf-8 -*-
'''
Created on Jan 29, 2019

@author: Jackie
'''
from FileUtil import FileUtil
from NlpTookit.NlpTookit import NlpTookit
import jieba
import jieba.posseg as pseg

dir ="data/sports"
fu = FileUtil()
nt = NlpTookit()
wordcounter={}#统计词频的词典
poscounter={}#统计词性的词典
lengthCounter ={}#统计词长、句长分布字典
#step one: get all files' absolute paths
filelist = fu.getFiles(dir)

#step two: read every file
for filepath in filelist:
    print(filepath)
    lines = fu.readlines(filepath, "UTF-8")
    for line in lines:
        if(len(line.strip())==0):
            continue
        #step three:split sentences
#         print(line.strip())
        sentences = nt.toSentenceList(line.strip())
        for sentence in sentences:
Example #14
0
class Test_ApplicationUtil(unittest.TestCase):
    fu = FileUtil()
    yaml_file = 'test.yaml'
    path = r'c:\temp' if platform.system() == 'Windows' else r'/tmp'
    qual_path = fu.qualified_path(path, yaml_file)
    excel_yaml_file = 'excel_' + yaml_file
    excel_qual_path = fu.qualified_path(path, excel_yaml_file)
    spreadsheet_name = 'test.xls'
    worksheet_name = 'Sheet1'

    yaml_dict = {
        'inputFile': qual_path,
        'maxLines': 1000,
        'vendorDict': {
            'SAN': 'Account number',
            'Contact_fn': 'Contact first name'
        }
    }
    #,'Address': 'Address 1','Phone': 'Work phone','Name': 'Vendor name','Contact_Ln': 'Contact last name','Addr_2': 'Address 2','Ext': 'Mobile','email': 'E-Mail 1','City': 'City','St': 'State','Zip': 'Zip','Fax': 'Fax'}}

    @classmethod
    def setUpClass(cls) -> None:
        fu = FileUtil()
        fu.dump_yaml(Test_ApplicationUtil.qual_path,
                     Test_ApplicationUtil.yaml_dict)

    @classmethod
    def tearDownClass(cls) -> None:
        fu = FileUtil()
        path = r'c:\temp' if platform.system() == 'Windows' else r'/tmp'
        fu.delete_file(fu.qualified_path(path, cls.yaml_file))
        fu.delete_file(fu.qualified_path(path, cls.excel_qual_path))
        fu.delete_file(fu.qualified_path(path, cls.spreadsheet_name))

    def setUp(self) -> None:
        self.app = MyApplication(self.qual_path)

    # Return a tiny test dataframe
    def my_test_df(self):
        # Example dataframe from https://www.geeksforgeeks.org/python-pandas-dataframe-dtypes/
        df = pd.DataFrame({
            'Weight': [45, 88, 56, 15, 71],
            'Name': ['Sam', 'Andrea', 'Alex', 'Robin', 'Kia'],
            'Sex': ['male', 'female', 'male', 'female', 'male'],
            'Age': [14, 25, 55, 8, 21]
        })

        # Create and set the index
        index_ = [0, 1, 2, 3, 4]
        df.index = index_
        return df

    def test_logger(self):
        self.app.logger.debug('log message from test_logger')

    @logit()
    def test_missing_yaml(self):
        qualified_path = self.fu.qualified_path(dirPath=self.path,
                                                filename='noSuchFile.yaml')
        app = MyApplication(qualified_path)
        self.assertDictEqual(app._d.asdict, {})

    @logit()
    def test_yaml_entry(self):
        # Test 1
        for key, value in self.yaml_dict.items():
            actual = self.app.yaml_entry(key)
            logging.debug(
                f'comparing key / value of {key} / {value} against {actual}')
            self.assertEqual(value, actual)
        # Test 2
        expected_log_message = 'Unable to find yaml key'
        with self.assertLogs(ApplicationUtil.__name__, level='DEBUG') as cm:
            actual = self.app.yaml_entry('No such key!!')
            self.assertTrue(
                next((True
                      for line in cm.output if expected_log_message in line),
                     False))
            self.assertEqual(actual, '')

    @logit()
    def test_load_df_from_excel(self):
        pu = PandasUtil()
        fu = FileUtil()
        df = self.my_test_df()
        fn = self.fu.qualified_path(self.path, self.spreadsheet_name)
        pu.write_df_to_excel(df=df,
                             excelFileName=fn,
                             excelWorksheet=self.worksheet_name,
                             write_index=False)
        yaml_dict = {'inputFile': fn, 'worksheet': self.worksheet_name}
        fu.dump_yaml(Test_ApplicationUtil.excel_qual_path, yaml_dict)
        app = MyApplication(Test_ApplicationUtil.excel_qual_path)
        actual = app.load_df_from_excel(input_file_yaml_entry='inputFile',
                                        worksheet=self.worksheet_name)
        assert_frame_equal(df, actual)

    @logit()
    def test_write_excel(self):
        pu = PandasUtil()
        fu = FileUtil()
        df = self.my_test_df()
        fn = self.fu.qualified_path(self.path, self.spreadsheet_name)
        yaml_dict = {'outputFile': fn, 'worksheet': self.worksheet_name}
        fu.dump_yaml(Test_ApplicationUtil.excel_qual_path, yaml_dict)
        app = MyApplication(Test_ApplicationUtil.excel_qual_path)
        app.write_excel(df=df,
                        output_file_yaml_entry='outputFile',
                        worksheet=self.worksheet_name)

        actual = pu.read_df_from_excel(excelFileName=fn,
                                       excelWorksheet=self.worksheet_name)
        assert_frame_equal(df, actual)
Example #15
0
def hello_world():
    f=FileUtil()
    return f.readHtml()
Example #16
0
# coding=utf-8
'''
Created on 2017年12月18日

@author: Administrator
'''
from FileUtil import FileUtil

if __name__ == '__main__':
    path = unicode("F:\部门对接\编辑所需文件20170930", "utf-8")
    fileutils = FileUtil()
    dic = fileutils.readFile(path)
    for index in dic:
        print index
    #print dic;
Example #17
0
 def setUpClass(cls) -> None:
     fu = FileUtil()
     fu.dump_yaml(Test_ApplicationUtil.qual_path,
                  Test_ApplicationUtil.yaml_dict)
Example #18
0
class BotEngine:
    def __init__(self, driver):
        self.driver = driver

    recentSignals = {
        'forexsignalzz': 0,
        'amirFX_signal': 0,
        'FOR3X_SIGNAL': 0,
        'AmirFx VIP signal': 0,
        'Eagl777': 0,
        'WallstreetFXsignals': 0,
        'wolfofforexplus': 0
    }
    signalVendors = {'a': 1}
    utils = Utils()
    fileUtil = FileUtil()

    #{'Forex signals': 'GforexSignalsIr'}

    def setListOfVendors(self):
        self.signalVendors.update(
            {'amirFX_signal': [GforexSignalsIr(self.driver), 'TAKE PROFIT']})
        self.signalVendors['FOR3X_SIGNAL'] = [FOR3X_SIGNAL(self.driver), 'SL']
        self.signalVendors['AmirFx VIP signal'] = [
            GforexSignalsIr(self.driver), 'TAKE PROFIT'
        ]
        self.signalVendors['signalTest'] = [Eagl777(self.driver), 'sl']
        self.signalVendors['Eagl777'] = [Eagl777(self.driver), 'sl']
        self.signalVendors['WallstreetFXsignals'] = [
            WallstreetFXsignals(self.driver), 'Trade Alert!'
        ]
        self.signalVendors['wolfofforexplus'] = [
            wolfofforexplus(self.driver), 'stop loss'
        ]
        self.signalVendors['forexsignalzz'] = [
            forexsignalzz(self.driver), 'new signal'
        ]

    def getNewMessage(self):
        coutner = 1
        while (coutner > 0):
            try:
                sleep(1)

                for key in self.recentSignals:
                    try:
                        newMessages = self.find_last_update_time(
                            key)  #return last two messages webElement-time

                        print('before getting time')
                        if newMessages == None or newMessages[
                                0] == self.recentSignals[key]:
                            print('repeated signal for ' + key + ' provider')
                            continue
                        else:
                            print(
                                'preparing new signal started in signalFinder!'
                            )
                            provider = self.signalVendors[key][0]
                            self.recentSignals[key] = newMessages[0]

                            sleep(2)
                            signalText = self.get_message(
                                key, self.signalVendors[key][1])
                            if signalText != None:
                                signalObjs = provider.createSignalDto(
                                    signalText, key)

                                if (signalObjs[0].enterPrice != 0):
                                    for signal in signalObjs.values():
                                        if (signal != 0):
                                            signal.vol = 0.01
                                            self.fileUtil.writeOnFile(
                                                "s", signal)
                                        sleep(10)
                                else:
                                    print('why here!!????')
                                    self.recentSignals[key] = 0
                    except:  # INNER TRY
                        print('in INNER except signalFinder: ')
                        self.recentSignals[key] = 0
                        print(sys.exc_info()[0])
                        continue

            except:  # outer try
                print('in OUTER except signalFinder: ')
                self.recentSignals[key] = 0
                print(sys.exc_info()[0])
                continue

    def find_last_update_time(self, chName):
        print('start finding last update time')
        c1 = 5
        while c1 > 0:
            try:
                elem = self.driver.find_element_by_xpath(
                    "//input[contains(@class,'im_dialogs_search_field')]")
                sleep(2)
                elem.clear()
                elem.send_keys(chName)
                break
                sleep(1)
            except:
                sleep(2)
                c1 -= 1

        c2 = 5
        while c2 > 0:
            try:
                self.driver.find_elements_by_xpath(
                    "//div[@class='im_dialogs_col']//li[contains(@class,'im_dialog_wrap')]/a"
                )[0].click()
                sleep(2)
                break
            except:
                sleep(2)
                c2 -= 1
        c3 = 5
        while c3 > 0:
            try:
                firstLastMessageTime = self.driver.find_elements_by_xpath(
                    "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//span[@class='im_message_date_text nocopy']"
                )[-1].get_attribute('data-content')
                sleep(2)
                break
            except:
                sleep(2)
                c3 -= 1

        try:
            secondLastMessageTime = self.driver.find_elements_by_xpath(
                "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//span[@class='im_message_date_text nocopy']"
            )[-2].get_attribute('data-content')
        except:
            secondLastMessageTime = ""
            print('no second message')

        # providerCH=self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']")[0]
        # sleep(2)
        # last_time=providerCH.find_element_by_xpath("//div[@class='im_dialog_date']").text     #self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']//div[@class='im_dialog_date']")[0].text
        sleep(2)
        print('end of finding last update time')
        return [firstLastMessageTime, secondLastMessageTime]

    def get_message(self, chName, identityStr):
        print('getting signal from ' + chName + ' started')
        try:
            result1 = self.driver.find_elements_by_xpath(
                "//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']"
            )[-1].text
            time1 = self.driver.find_elements_by_xpath(
                "//div[@class='im_history_messages_peer']//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']//ancestor::div//span[contains(@class,'im_message_date_text')]"
            )[-1].get_attribute('data-content')
            results = [[result1, time1]]
            sleep(2)
            try:
                result2 = self.driver.find_elements_by_xpath(
                    "//div[@class='im_history_messages_peer' and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']"
                )[-2].text
                time2 = self.driver.find_elements_by_xpath(
                    "//div[@class='im_history_messages_peer']//div[contains(@class,'im_history_message_wrap')]//div[@class='im_message_text']//ancestor::div//span[contains(@class,'im_message_date_text')]"
                )[-2].get_attribute('data-content')
                results.append([result2, time2])
            except:
                print(sys.exc_info()[0])
                print("not second message")

            try:
                result3 = self.driver.find_elements_by_xpath(
                    "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]"
                )[-1].text
                time3 = self.driver.find_elements_by_xpath(
                    "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]//ancestor::div//span[contains(@class,'im_message_date_text')]"
                )[-1].get_attribute('data-content')

                result4 = self.driver.find_elements_by_xpath(
                    "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]"
                )[-2].text
                time4 = self.driver.find_elements_by_xpath(
                    "//div[contains(@class,'im_history_messages_peer') and not(contains(@class,'ng-hide'))]//div[contains(@class,'im_history_message_wrap') and not(@style='display: none;')]//div[contains(@class,'im_message_media')]//div[@class='im_message_photo_caption' and not(@style='display: none;')]//ancestor::div//span[contains(@class,'im_message_date_text')]"
                )[-2].get_attribute('data-content')

                results.append([result3, time3])
                results.append([result3, time4])
            except:
                print(sys.exc_info()[0])
                print("not message in picture")

            myText = ""

            for re in results:
                if ((re[0] != '')):
                    if (str.find(re[0], identityStr) != -1):
                        if (self.utils.checkTime(re[1])):
                            print('getting signal from ' + chName +
                                  ' finished succesfully')
                            return re[0]

            print('getting signal from ' + chName +
                  ' finished : no signal message!')
            return None
        except:
            print('getting signal from ' + chName + ' finished failed')
            return 'failed'
Example #19
0
class BotEngine:
    def __init__(self, driver):
        self.driver = driver

    recentSignals = {'amirFX_signal': 0}
    signalVendors = {'a': 1}
    utils = Utils()
    fileUtil = FileUtil()

    #{'Forex signals': 'GforexSignalsIr'}

    def setListOfVendors(self):
        self.signalVendors.update(
            {'amirFX_signal': GforexSignalsIr(self.driver)})

    def getNewMessage(self):
        coutner = 1
        while (coutner > 0):
            try:
                sleep(5)

                for key in self.recentSignals:
                    newLastTime = self.find_last_update_time(key)

                    if newLastTime[1] == self.recentSignals[
                            key] or newLastTime == None:
                        print('repeated signal for ' + key + ' provider')
                        continue
                    else:
                        print('preparing new signal started in signalFinder!')
                        provider = self.signalVendors[key]
                        self.recentSignals[key] = newLastTime[1]
                        newLastTime[0].click()
                        # self.driver.find_elements_by_xpath("//span[text()='{0}']/ancestor::a[@class='im_dialog']"
                        #                                    .format(self.signalVendors[key]))[0].click()
                        sleep(1)
                        signalText = provider.get_message(
                            key, '3:50'
                        )  #commented for test  self.utils.extractTime(newLastTime[1])
                        if signalText != None:
                            signalObj = provider.createSignalDto(
                                signalText, '3:50',
                                key)  #commented for test newLastTime[1]
                            if (signalObj.enterPrice != 0):
                                self.fileUtil.writeOnFile("s", signalObj)
                            else:
                                self.recentSignals[key] = 0

            except:
                continue

    def find_last_update_time(self, chName):
        sleep(1)
        whichgroup = 1

        elem = self.driver.find_element_by_xpath(
            "//input[contains(@class,'im_dialogs_search_field')]")
        elem.clear()
        elem.send_keys(chName)
        sleep(2)
        providerCH = self.driver.find_elements_by_xpath(
            "//span/ancestor::a[@class='im_dialog']")[0]
        sleep(2)
        last_time = providerCH.find_element_by_xpath(
            "//div[@class='im_dialog_date']"
        ).text  #self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']//div[@class='im_dialog_date']")[0].text

        #if len(last_time) == 3 :
        #   return None   # commented for test

        return [providerCH, last_time]
Example #20
0
 def tearDownClass(cls) -> None:
     fu = FileUtil()
     path = r'c:\temp' if platform.system() == 'Windows' else r'/tmp'
     fu.delete_file(fu.qualified_path(path, cls.yaml_file))
     fu.delete_file(fu.qualified_path(path, cls.excel_qual_path))
     fu.delete_file(fu.qualified_path(path, cls.spreadsheet_name))
Example #21
0
 def tearDownClass(cls) -> None:
     fu = FileUtil()
     path = r'c:\temp' if platform.system() == 'Windows' else r'/tmp'
     fu.delete_file(fu.qualified_path(path, cls.yaml))
     fu.delete_file(fu.qualified_path(path, cls.fn))
     fu.delete_file(fu.qualified_path(path, cls.text_fn))
Example #22
0
class BotEngine:
    def __init__(self,driver):
        self.driver = driver
        
    recentSignals={'amirFX_signal':0,'FOR3X_SIGNAL':0,'AmirFx VIP signal':0}
    signalVendors={'a': 1}
    utils = Utils() 
    fileUtil = FileUtil()
    
    #{'Forex signals': 'GforexSignalsIr'}
    
    def setListOfVendors(self):
        self.signalVendors.update({'amirFX_signal': GforexSignalsIr(self.driver)})
        self.signalVendors['FOR3X_SIGNAL'] = FOR3X_SIGNAL(self.driver)
        self.signalVendors['AmirFx VIP signal'] = GforexSignalsIr(self.driver)
    
    def getNewMessage(self):
        coutner=1;
        while(coutner >0):
            try:
                sleep(5)

                for key in self.recentSignals:
                    newMessages=self.find_last_update_time(key) #return last two messages webElement-time
                    
                    
                    if newMessages == None or newMessages[0] == self.recentSignals[key]  :
                        print('repeated signal for '+key+' provider')
                        continue
                    else:
                        print('preparing new signal started in signalFinder!')
                        provider=self.signalVendors[key]
                        self.recentSignals[key] = newMessages[0]

                        sleep(2)
                        signalText=provider.get_message(key) 
                        if signalText != None :  
                            signalObj= provider.createSignalDto(signalText,key) 
                            signalObj.vol = 0.01
                            if(signalObj.enterPrice !=0):
                                self.fileUtil.writeOnFile("s",signalObj)  
                            else: 
                                print('why here!!????')
                                self.recentSignals[key]=0
                                   
            except :
                print('in except signalFinder: ')
                print(sys.exc_info()[0])
                continue
                    


    def find_last_update_time(self, chName):
        elem= self.driver.find_element_by_xpath("//input[contains(@class,'im_dialogs_search_field')]")
        elem.clear()
        elem.send_keys(chName)
        sleep(4)
        self.driver.find_elements_by_xpath("//div[@class='im_dialogs_col']//li[contains(@class,'im_dialog_wrap')]/a")[0].click()
        sleep(2)
        firstLastMessageTime = self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer']//div[@class='im_history_message_wrap']//span[@class='im_message_date_text nocopy']")[-1].get_attribute('data-content')
        sleep(2)
        try:
            secondLastMessageTime = self.driver.find_elements_by_xpath("//div[@class='im_history_messages_peer']//div[@class='im_history_message_wrap']//span[@class='im_message_date_text nocopy']")[-2].get_attribute('data-content')
        except :
            secondLastMessageTime=""
            print('no second message')
        
        sleep(2)
        
        # providerCH=self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']")[0]
        # sleep(2)
        # last_time=providerCH.find_element_by_xpath("//div[@class='im_dialog_date']").text     #self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']//div[@class='im_dialog_date']")[0].text
        # sleep(2)
        
        return [firstLastMessageTime ,secondLastMessageTime]





    
    
    
    
    
    
    
        
Example #23
0
class BotEngine:
    def __init__(self,driver):
        self.driver = driver
        
    recentSignals={'forexsignalzz':0,'amirFX_signal':0,'FOR3X_SIGNAL':0,'AmirFx VIP signal':0,'Eagl777':0 , 'WallstreetFXsignals':0, 'wolfofforexplus':0}
    signalVendors={'a':  1}
    utils = Utils() 
    fileUtil = FileUtil()
    
    #{'Forex signals': 'GforexSignalsIr'}
    
    def setListOfVendors(self):
        self.signalVendors.update({'amirFX_signal': GforexSignalsIr(self.driver)})
        self.signalVendors['FOR3X_SIGNAL'] = FOR3X_SIGNAL(self.driver)
        self.signalVendors['AmirFx VIP signal'] = GforexSignalsIr(self.driver)
        self.signalVendors['signalTest']= Eagl777(self.driver)
        self.signalVendors['Eagl777']= Eagl777(self.driver)
        self.signalVendors['WallstreetFXsignals']= WallstreetFXsignals(self.driver)
        self.signalVendors['wolfofforexplus']= wolfofforexplus(self.driver)
        self.signalVendors['forexsignalzz']=forexsignalzz(self.driver)
    
    def getNewMessage(self):
        coutner=1;
        while(coutner >0):
            try:
                sleep(1)

                for key in self.recentSignals:
                    try:
                        newMessages=self.find_last_update_time(key) #return last two messages webElement-time
                        
                        print('before getting time')
                        if newMessages == None or newMessages[0] == self.recentSignals[key]  :
                            print('repeated signal for '+key+' provider')
                            continue
                        else:
                            print('preparing new signal started in signalFinder!')
                            provider=self.signalVendors[key]
                            self.recentSignals[key] = newMessages[0]
    
                            sleep(2)
                            signalText=provider.get_message(key) 
                            if signalText != None :  
                                signalObjs= provider.createSignalDto(signalText,key) 
                                
                                if(signalObjs[0].enterPrice !=0):
                                    for signal in signalObjs.values(): 
                                        if(signal !=0):
                                            signal.vol = 0.01
                                            self.fileUtil.writeOnFile("s",signal)
                                        sleep(10)
                                else: 
                                    print('why here!!????')
                                    self.recentSignals[key]=0
                    except: # INNER TRY
                        print('in INNER except signalFinder: ')
                        self.recentSignals[key]=0
                        print(sys.exc_info()[0])
                        continue
                                   
            except : # outer try
                print('in OUTER except signalFinder: ')
                self.recentSignals[key]=0
                print(sys.exc_info()[0])
                continue
                    

    def find_last_update_time(self, chName):
        print('start finding last update time')
        c1=5
        while c1>0: 
            try: 
                elem= self.driver.find_element_by_xpath("//input[contains(@class,'im_dialogs_search_field')]")
                sleep(2)
                elem.clear()
                elem.send_keys(chName)
                sleep(1)
            except :
                sleep(2)
                c1+=1
                
        c2=5
        while c2>0: 
            try:      
                self.driver.find_elements_by_xpath("//div[@class='im_dialogs_col']//li[contains(@class,'im_dialog_wrap')]/a")[0].click()
                sleep(2)
            except :
                sleep(2)
                c2+=1
        c3=5      
        while c3>0:
            try:
                firstLastMessageTime = self.driver.find_elements_by_xpath("//div[contains(@class,'im_history_messages_peer')]//div[contains(@class,'im_history_message_wrap')]//span[@class='im_message_date_text nocopy']")[-1].get_attribute('data-content')
                sleep(2)
            except:
                sleep(2)
                c3+=1
                
                
        try:
            secondLastMessageTime = self.driver.find_elements_by_xpath("//div[contains(@class,'im_history_messages_peer')]//div[contains(@class,'im_history_message_wrap')]//span[@class='im_message_date_text nocopy']")[-2].get_attribute('data-content')
        except :
            secondLastMessageTime=""
            print('no second message')
        
        # providerCH=self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']")[0]
        # sleep(2)
        # last_time=providerCH.find_element_by_xpath("//div[@class='im_dialog_date']").text     #self.driver.find_elements_by_xpath("//span/ancestor::a[@class='im_dialog']//div[@class='im_dialog_date']")[0].text
        sleep(2)
        print('end of finding last update time')
        return [firstLastMessageTime ,secondLastMessageTime]





    
    
    
    
    
    
    
        
Example #24
0
 def test_executing_directory(self, mock_obj):
     mock_obj.return_value = self.mock_file
     fu = FileUtil()
     path, _ = fu.split_qualified_path(self.mock_file)
     self.assertEqual(path, self.eu.executing_directory())