0.1.69
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| [metadata] | [metadata] | ||||||
| # replace with your username: | # replace with your username: | ||||||
| name = guan | name = guan | ||||||
| version = 0.1.68 | version = 0.1.69 | ||||||
| author = guanjihuan | author = guanjihuan | ||||||
| author_email = guanjihuan@163.com | author_email = guanjihuan@163.com | ||||||
| description = An open source python package | description = An open source python package | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| Metadata-Version: 2.1 | Metadata-Version: 2.1 | ||||||
| Name: guan | Name: guan | ||||||
| Version: 0.1.68 | Version: 0.1.69 | ||||||
| Summary: An open source python package | Summary: An open source python package | ||||||
| Home-page: https://py.guanjihuan.com | Home-page: https://py.guanjihuan.com | ||||||
| Author: guanjihuan | Author: guanjihuan | ||||||
|   | |||||||
| @@ -7,10 +7,6 @@ def test(): | |||||||
|     import guan |     import guan | ||||||
|     current_version = guan.get_current_version('guan') |     current_version = guan.get_current_version('guan') | ||||||
|     print(f'\nCongratulations on successfully installing Guan package! The installed version is guan-{current_version}.') |     print(f'\nCongratulations on successfully installing Guan package! The installed version is guan-{current_version}.') | ||||||
|     print('\nChecking for the latest version of Guan package.\n') |  | ||||||
|     guan.notification_of_upgrade(timeout=5) |  | ||||||
|     print('\nCheck completed.') |  | ||||||
|     print('\nTest completed.\n') |  | ||||||
|  |  | ||||||
| # 泡利矩阵 | # 泡利矩阵 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
|   | |||||||
| @@ -638,7 +638,22 @@ def get_all_filenames_in_directory(directory='./', file_format=None): | |||||||
|                     file_list.append(files[i0]) |                     file_list.append(files[i0]) | ||||||
|     return file_list |     return file_list | ||||||
|  |  | ||||||
| # 读取文件夹中某种文本类型的文件路径和内容 | # 获取目录中的所有文件名(不包括子目录) | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_all_filenames_in_directory_without_subdirectory(directory='./', file_format=None): | ||||||
|  |     import os | ||||||
|  |     file_list = [] | ||||||
|  |     for root, dirs, files in os.walk(directory): | ||||||
|  |         for i0 in range(len(files)): | ||||||
|  |             if file_format == None: | ||||||
|  |                 file_list.append(files[i0]) | ||||||
|  |             else: | ||||||
|  |                 if file_format in files[i0]: | ||||||
|  |                     file_list.append(files[i0]) | ||||||
|  |         break | ||||||
|  |     return file_list | ||||||
|  |  | ||||||
|  | # 获取文件夹中某种文本类型的文件路径以及读取内容 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
| def read_text_files_in_directory(directory='./', file_format='.md'): | def read_text_files_in_directory(directory='./', file_format='.md'): | ||||||
|     import os |     import os | ||||||
| @@ -688,7 +703,7 @@ def get_random_number(start=0, end=1): | |||||||
|     rand_number = random.randint(start, end)   # 左闭右闭 [start, end] |     rand_number = random.randint(start, end)   # 左闭右闭 [start, end] | ||||||
|     return rand_number |     return rand_number | ||||||
|  |  | ||||||
| # 选取一个种子生成固定的随机整数 | # 选取一个种子生成固定的随机整数,左闭右开 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
| def generate_random_int_number_for_a_specific_seed(seed=0, x_min=0, x_max=10): | def generate_random_int_number_for_a_specific_seed(seed=0, x_min=0, x_max=10): | ||||||
|     import numpy as np |     import numpy as np | ||||||
| @@ -703,109 +718,6 @@ def divide_text_into_words(text): | |||||||
|     words = jieba.lcut(text) |     words = jieba.lcut(text) | ||||||
|     return words |     return words | ||||||
|  |  | ||||||
| # 判断某个字符是中文还是英文或其他 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def check_Chinese_or_English(a):   |  | ||||||
|     if '\u4e00' <= a <= '\u9fff' :   |  | ||||||
|         word_type = 'Chinese'   |  | ||||||
|     elif '\x00' <= a <= '\xff':   |  | ||||||
|         word_type = 'English' |  | ||||||
|     else: |  | ||||||
|         word_type = 'Others'  |  | ||||||
|     return word_type |  | ||||||
|  |  | ||||||
| # 统计中英文文本的字数,默认不包括空格 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def count_words(text, include_space=0, show_words=0): |  | ||||||
|     import jieba |  | ||||||
|     import guan |  | ||||||
|     words = jieba.lcut(text)   |  | ||||||
|     new_words = [] |  | ||||||
|     if include_space == 0: |  | ||||||
|         for word in words: |  | ||||||
|             if word != ' ': |  | ||||||
|                 new_words.append(word) |  | ||||||
|     else: |  | ||||||
|         new_words = words |  | ||||||
|     num_words = 0 |  | ||||||
|     new_words_2 = [] |  | ||||||
|     for word in new_words: |  | ||||||
|         word_type = guan.check_Chinese_or_English(word[0]) |  | ||||||
|         if word_type == 'Chinese': |  | ||||||
|             num_words += len(word) |  | ||||||
|             for one_word in word: |  | ||||||
|                 new_words_2.append(one_word) |  | ||||||
|         elif word_type == 'English' or 'Others': |  | ||||||
|             num_words += 1 |  | ||||||
|             new_words_2.append(word) |  | ||||||
|     if show_words == 1: |  | ||||||
|         print(new_words_2) |  | ||||||
|     return num_words |  | ||||||
|  |  | ||||||
| # 将RGB转成HEX |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def rgb_to_hex(rgb, pound=1): |  | ||||||
|     if pound==0: |  | ||||||
|         return '%02x%02x%02x' % rgb |  | ||||||
|     else: |  | ||||||
|         return '#%02x%02x%02x' % rgb |  | ||||||
|  |  | ||||||
| # 将HEX转成RGB |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def hex_to_rgb(hex): |  | ||||||
|     hex = hex.lstrip('#') |  | ||||||
|     length = len(hex) |  | ||||||
|     return tuple(int(hex[i:i+length//3], 16) for i in range(0, length, length//3)) |  | ||||||
|  |  | ||||||
| # 使用MD5进行散列加密 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def encryption_MD5(password, salt=''): |  | ||||||
|     import hashlib |  | ||||||
|     password = salt+password |  | ||||||
|     hashed_password = hashlib.md5(password.encode()).hexdigest() |  | ||||||
|     return hashed_password |  | ||||||
|  |  | ||||||
| # 使用SHA-256进行散列加密 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def encryption_SHA_256(password, salt=''): |  | ||||||
|     import hashlib |  | ||||||
|     password = salt+password |  | ||||||
|     hashed_password = hashlib.sha256(password.encode()).hexdigest() |  | ||||||
|     return hashed_password |  | ||||||
|  |  | ||||||
| # 自动先后运行程序 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def run_programs_sequentially(program_files=['./a.py', './b.py'], execute='python ', show_time=0): |  | ||||||
|     import os |  | ||||||
|     import time |  | ||||||
|     if show_time == 1: |  | ||||||
|         start = time.time() |  | ||||||
|     i0 = 0 |  | ||||||
|     for program_file in program_files: |  | ||||||
|         i0 += 1 |  | ||||||
|         if show_time == 1: |  | ||||||
|             start_0 = time.time() |  | ||||||
|         os.system(execute+program_file) |  | ||||||
|         if show_time == 1: |  | ||||||
|             end_0 = time.time() |  | ||||||
|             print('Running time of program_'+str(i0)+' = '+str((end_0-start_0)/60)+' min') |  | ||||||
|     if show_time == 1: |  | ||||||
|         end = time.time() |  | ||||||
|         print('Total running time = '+str((end-start)/60)+' min') |  | ||||||
|  |  | ||||||
| # 如果不存在文件夹,则新建文件夹 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def make_directory(directory='./test'): |  | ||||||
|     import os |  | ||||||
|     if not os.path.exists(directory): |  | ||||||
|         os.makedirs(directory) |  | ||||||
|  |  | ||||||
| # 复制一份文件 |  | ||||||
| @guan.statistics_decorator |  | ||||||
| def copy_file(file1='./a.txt', file2='./b.txt'): |  | ||||||
|     import shutil |  | ||||||
|     shutil.copy(file1, file2) |  | ||||||
|  |  | ||||||
| # 拼接两个PDF文件 | # 拼接两个PDF文件 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
| def combine_two_pdf_files(input_file_1='a.pdf', input_file_2='b.pdf', output_file='combined_file.pdf'): | def combine_two_pdf_files(input_file_1='a.pdf', input_file_2='b.pdf', output_file='combined_file.pdf'): | ||||||
|   | |||||||
| @@ -1,6 +1,127 @@ | |||||||
| # Module: others | # Module: others | ||||||
| import guan | import guan | ||||||
|  |  | ||||||
|  | # 如果不存在文件夹,则新建文件夹 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def make_directory(directory='./test'): | ||||||
|  |     import os | ||||||
|  |     if not os.path.exists(directory): | ||||||
|  |         os.makedirs(directory) | ||||||
|  |  | ||||||
|  | # 获取当前日期字符串 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_date(bar=True): | ||||||
|  |     import datetime | ||||||
|  |     datetime_date = str(datetime.date.today()) | ||||||
|  |     if bar==False: | ||||||
|  |         datetime_date = datetime_date.replace('-', '') | ||||||
|  |     return datetime_date | ||||||
|  |  | ||||||
|  | # 获取当前时间字符串 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_time(colon=True): | ||||||
|  |     import datetime | ||||||
|  |     datetime_time = datetime.datetime.now().strftime('%H:%M:%S') | ||||||
|  |     if colon==False: | ||||||
|  |         datetime_time = datetime_time.replace(':', '') | ||||||
|  |     return datetime_time | ||||||
|  |  | ||||||
|  | # 判断某个字符是中文还是英文或其他 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def check_Chinese_or_English(a):   | ||||||
|  |     if '\u4e00' <= a <= '\u9fff' :   | ||||||
|  |         word_type = 'Chinese'   | ||||||
|  |     elif '\x00' <= a <= '\xff':   | ||||||
|  |         word_type = 'English' | ||||||
|  |     else: | ||||||
|  |         word_type = 'Others'  | ||||||
|  |     return word_type | ||||||
|  |  | ||||||
|  | # 统计中英文文本的字数,默认不包括空格 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def count_words(text, include_space=0, show_words=0): | ||||||
|  |     import jieba | ||||||
|  |     import guan | ||||||
|  |     words = jieba.lcut(text)   | ||||||
|  |     new_words = [] | ||||||
|  |     if include_space == 0: | ||||||
|  |         for word in words: | ||||||
|  |             if word != ' ': | ||||||
|  |                 new_words.append(word) | ||||||
|  |     else: | ||||||
|  |         new_words = words | ||||||
|  |     num_words = 0 | ||||||
|  |     new_words_2 = [] | ||||||
|  |     for word in new_words: | ||||||
|  |         word_type = guan.check_Chinese_or_English(word[0]) | ||||||
|  |         if word_type == 'Chinese': | ||||||
|  |             num_words += len(word) | ||||||
|  |             for one_word in word: | ||||||
|  |                 new_words_2.append(one_word) | ||||||
|  |         elif word_type == 'English' or 'Others': | ||||||
|  |             num_words += 1 | ||||||
|  |             new_words_2.append(word) | ||||||
|  |     if show_words == 1: | ||||||
|  |         print(new_words_2) | ||||||
|  |     return num_words | ||||||
|  |  | ||||||
|  | # 将RGB转成HEX | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def rgb_to_hex(rgb, pound=1): | ||||||
|  |     if pound==0: | ||||||
|  |         return '%02x%02x%02x' % rgb | ||||||
|  |     else: | ||||||
|  |         return '#%02x%02x%02x' % rgb | ||||||
|  |  | ||||||
|  | # 将HEX转成RGB | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def hex_to_rgb(hex): | ||||||
|  |     hex = hex.lstrip('#') | ||||||
|  |     length = len(hex) | ||||||
|  |     return tuple(int(hex[i:i+length//3], 16) for i in range(0, length, length//3)) | ||||||
|  |  | ||||||
|  | # 使用MD5进行散列加密 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def encryption_MD5(password, salt=''): | ||||||
|  |     import hashlib | ||||||
|  |     password = salt+password | ||||||
|  |     hashed_password = hashlib.md5(password.encode()).hexdigest() | ||||||
|  |     return hashed_password | ||||||
|  |  | ||||||
|  | # 使用SHA-256进行散列加密 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def encryption_SHA_256(password, salt=''): | ||||||
|  |     import hashlib | ||||||
|  |     password = salt+password | ||||||
|  |     hashed_password = hashlib.sha256(password.encode()).hexdigest() | ||||||
|  |     return hashed_password | ||||||
|  |  | ||||||
|  | # 自动先后运行程序 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def run_programs_sequentially(program_files=['./a.py', './b.py'], execute='python ', show_time=0): | ||||||
|  |     import os | ||||||
|  |     import time | ||||||
|  |     if show_time == 1: | ||||||
|  |         start = time.time() | ||||||
|  |     i0 = 0 | ||||||
|  |     for program_file in program_files: | ||||||
|  |         i0 += 1 | ||||||
|  |         if show_time == 1: | ||||||
|  |             start_0 = time.time() | ||||||
|  |         os.system(execute+program_file) | ||||||
|  |         if show_time == 1: | ||||||
|  |             end_0 = time.time() | ||||||
|  |             print('Running time of program_'+str(i0)+' = '+str((end_0-start_0)/60)+' min') | ||||||
|  |     if show_time == 1: | ||||||
|  |         end = time.time() | ||||||
|  |         print('Total running time = '+str((end-start)/60)+' min') | ||||||
|  |  | ||||||
|  | # 复制一份文件 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def copy_file(file1='./a.txt', file2='./b.txt'): | ||||||
|  |     import shutil | ||||||
|  |     shutil.copy(file1, file2) | ||||||
|  |  | ||||||
| # 获取CPU使用率 | # 获取CPU使用率 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
| def get_cpu_usage(interval=1): | def get_cpu_usage(interval=1): | ||||||
| @@ -291,6 +412,8 @@ def sorted_market_capitalization(num=10): | |||||||
|     title, stock_data = guan.all_stocks() |     title, stock_data = guan.all_stocks() | ||||||
|     list_index = np.argsort(stock_data[:, 17]) |     list_index = np.argsort(stock_data[:, 17]) | ||||||
|     list_index = list_index[::-1] |     list_index = list_index[::-1] | ||||||
|  |     if num == None: | ||||||
|  |         num = len(list_index) | ||||||
|     sorted_array = [] |     sorted_array = [] | ||||||
|     for i0 in range(num): |     for i0 in range(num): | ||||||
|         stock_symbol = stock_data[list_index[i0], 1] |         stock_symbol = stock_data[list_index[i0], 1] | ||||||
| @@ -312,6 +435,24 @@ def history_data_of_one_stock(symbol='000002', period='daily', start_date="19000 | |||||||
|     stock_data = stock.values[::-1] |     stock_data = stock.values[::-1] | ||||||
|     return title, stock_data |     return title, stock_data | ||||||
|  |  | ||||||
|  | # 绘制股票图 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def plot_stock_line(date_array, opening_array, closing_array, high_array, low_array, lw_open_close=6, lw_high_low=2, xlabel='date', ylabel='price', title='', fontsize=20, labelsize=20, adjust_bottom=0.2, adjust_left=0.2): | ||||||
|  |     import guan | ||||||
|  |     plt, fig, ax = guan.import_plt_and_start_fig_ax(adjust_bottom=adjust_bottom, adjust_left=adjust_left, labelsize=labelsize) | ||||||
|  |     ax.set_title(title, fontsize=fontsize, fontfamily='Times New Roman') | ||||||
|  |     ax.set_xlabel(xlabel, fontsize=fontsize, fontfamily='Times New Roman')  | ||||||
|  |     ax.set_ylabel(ylabel, fontsize=fontsize, fontfamily='Times New Roman')  | ||||||
|  |     for i0 in range(len(date_array)): | ||||||
|  |         if opening_array[i0] <= closing_array[i0]: | ||||||
|  |             ax.vlines(date_array[i0], opening_array[i0], closing_array[i0], linestyle='-', color='red', lw=lw_open_close) | ||||||
|  |             ax.vlines(date_array[i0], low_array[i0], high_array[i0], color='red', linestyle='-', lw=lw_high_low) | ||||||
|  |         else: | ||||||
|  |             ax.vlines(date_array[i0], opening_array[i0], closing_array[i0], linestyle='-', color='green', lw=lw_open_close) | ||||||
|  |             ax.vlines(date_array[i0], low_array[i0], high_array[i0], color='green', linestyle='-', lw=lw_high_low) | ||||||
|  |     plt.show() | ||||||
|  |     plt.close('all') | ||||||
|  |  | ||||||
| # 获取软件包中的所有模块名 | # 获取软件包中的所有模块名 | ||||||
| @guan.statistics_decorator | @guan.statistics_decorator | ||||||
| def get_all_modules_in_one_package(package_name='guan'): | def get_all_modules_in_one_package(package_name='guan'): | ||||||
| @@ -849,6 +990,61 @@ def compress_wav_to_mp3(wav_path, output_filename='a.mp3', bitrate='16k'): | |||||||
|     sound = AudioSegment.from_mp3(wav_path) |     sound = AudioSegment.from_mp3(wav_path) | ||||||
|     sound.export(output_filename,format="mp3",bitrate=bitrate) |     sound.export(output_filename,format="mp3",bitrate=bitrate) | ||||||
|  |  | ||||||
|  | # 获取MAC地址 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_mac_address(): | ||||||
|  |     import uuid | ||||||
|  |     mac_address = uuid.UUID(int=uuid.getnode()).hex[-12:].upper() | ||||||
|  |     mac_address = '-'.join([mac_address[i:i+2] for i in range(0, 11, 2)]) | ||||||
|  |     return mac_address | ||||||
|  |  | ||||||
|  | # 获取调用本函数的函数名 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_calling_function_name(layer=1): | ||||||
|  |     import inspect | ||||||
|  |     caller = inspect.stack()[layer] | ||||||
|  |     calling_function_name = caller.function | ||||||
|  |     return calling_function_name | ||||||
|  |  | ||||||
|  | # 获取Python软件包的最新版本 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_latest_version(package_name='guan', timeout=5): | ||||||
|  |     import requests | ||||||
|  |     url = f"https://pypi.org/pypi/{package_name}/json" | ||||||
|  |     try: | ||||||
|  |         response = requests.get(url, timeout=timeout) | ||||||
|  |     except: | ||||||
|  |         return None | ||||||
|  |     if response.status_code == 200: | ||||||
|  |         data = response.json() | ||||||
|  |         latest_version = data["info"]["version"] | ||||||
|  |         return latest_version | ||||||
|  |     else: | ||||||
|  |         return None | ||||||
|  |  | ||||||
|  | # 获取软件包的本机版本 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def get_current_version(package_name='guan'): | ||||||
|  |     import importlib.metadata | ||||||
|  |     try: | ||||||
|  |         current_version = importlib.metadata.version(package_name) | ||||||
|  |         return current_version | ||||||
|  |     except: | ||||||
|  |         return None | ||||||
|  |  | ||||||
|  | # Guan软件包升级检查和提示 | ||||||
|  | @guan.statistics_decorator | ||||||
|  | def notification_of_upgrade(timeout=5): | ||||||
|  |     try: | ||||||
|  |         import guan | ||||||
|  |         latest_version = guan.get_latest_version(package_name='guan', timeout=timeout) | ||||||
|  |         current_version = guan.get_current_version('guan') | ||||||
|  |         if latest_version != None and current_version != None: | ||||||
|  |             if latest_version != current_version: | ||||||
|  |                 print('升级提示:您当前使用的版本是 guan-'+current_version+',目前已经有最新版本 guan-'+latest_version+'。您可以通过以下命令对软件包进行升级:pip install --upgrade guan -i https://pypi.python.org/simple 或 pip install --upgrade guan') | ||||||
|  |     except: | ||||||
|  |         pass | ||||||
|  |  | ||||||
| # Guan软件包的使用统计(不涉及到用户的个人数据) | # Guan软件包的使用统计(不涉及到用户的个人数据) | ||||||
| global_variable_of_first_guan_package_calling = [] | global_variable_of_first_guan_package_calling = [] | ||||||
| def statistics_of_guan_package(function_name=None): | def statistics_of_guan_package(function_name=None): | ||||||
| @@ -883,72 +1079,3 @@ def statistics_of_guan_package(function_name=None): | |||||||
|             client_socket.close() |             client_socket.close() | ||||||
|         except: |         except: | ||||||
|             pass |             pass | ||||||
|  |  | ||||||
| # 获取当前日期字符串 |  | ||||||
| def get_date(bar=True): |  | ||||||
|     import datetime |  | ||||||
|     datetime_date = str(datetime.date.today()) |  | ||||||
|     if bar==False: |  | ||||||
|         datetime_date = datetime_date.replace('-', '') |  | ||||||
|     return datetime_date |  | ||||||
|  |  | ||||||
| # 获取当前时间字符串 |  | ||||||
| def get_time(colon=True): |  | ||||||
|     import datetime |  | ||||||
|     datetime_time = datetime.datetime.now().strftime('%H:%M:%S') |  | ||||||
|     if colon==False: |  | ||||||
|         datetime_time = datetime_time.replace(':', '') |  | ||||||
|     return datetime_time |  | ||||||
|  |  | ||||||
| # 获取MAC地址 |  | ||||||
| def get_mac_address(): |  | ||||||
|     import uuid |  | ||||||
|     mac_address = uuid.UUID(int=uuid.getnode()).hex[-12:].upper() |  | ||||||
|     mac_address = '-'.join([mac_address[i:i+2] for i in range(0, 11, 2)]) |  | ||||||
|     return mac_address |  | ||||||
|  |  | ||||||
| # 获取调用本函数的函数名 |  | ||||||
| def get_calling_function_name(layer=1): |  | ||||||
|     import inspect |  | ||||||
|     caller = inspect.stack()[layer] |  | ||||||
|     calling_function_name = caller.function |  | ||||||
|     return calling_function_name |  | ||||||
|  |  | ||||||
| # 获取Python软件包的最新版本 |  | ||||||
| def get_latest_version(package_name='guan', timeout=2): |  | ||||||
|     import requests |  | ||||||
|     url = f"https://pypi.org/pypi/{package_name}/json" |  | ||||||
|     try: |  | ||||||
|         response = requests.get(url, timeout=timeout) |  | ||||||
|     except: |  | ||||||
|         return None |  | ||||||
|     if response.status_code == 200: |  | ||||||
|         data = response.json() |  | ||||||
|         latest_version = data["info"]["version"] |  | ||||||
|         return latest_version |  | ||||||
|     else: |  | ||||||
|         return None |  | ||||||
|  |  | ||||||
| # 获取软件包的本机版本 |  | ||||||
| def get_current_version(package_name='guan'): |  | ||||||
|     import importlib.metadata |  | ||||||
|     try: |  | ||||||
|         current_version = importlib.metadata.version(package_name) |  | ||||||
|         return current_version |  | ||||||
|     except: |  | ||||||
|         return None |  | ||||||
|  |  | ||||||
| # Guan软件包升级提示 |  | ||||||
| def notification_of_upgrade(timeout=2): |  | ||||||
|     try: |  | ||||||
|         latest_version = get_latest_version(package_name='guan', timeout=timeout) |  | ||||||
|         current_version = get_current_version('guan') |  | ||||||
|         if latest_version != None and current_version != None: |  | ||||||
|             if latest_version != current_version: |  | ||||||
|                 print('升级提示:您当前使用的版本是 guan-'+current_version+',目前已经有最新版本 guan-'+latest_version+'。您可以通过以下命令对软件包进行升级:pip install --upgrade guan -i https://pypi.python.org/simple 或 pip install --upgrade guan') |  | ||||||
|     except: |  | ||||||
|         pass |  | ||||||
| import random |  | ||||||
| rand_number = random.randint(1, 10) |  | ||||||
| if rand_number == 5: |  | ||||||
|     notification_of_upgrade(timeout=2) |  | ||||||
		Reference in New Issue
	
	Block a user