Saravanan666/pypi-org huggingface dataset:
Package: welly
wellyfacilitates the loading, processing, and analysis of subsurface wells and well data, such as striplogs, formation tops, well log curves, and synthetic seismograms.Installationpip install wellyFor developers, there arepipoptions for installingtest,docsordev(docs plus test) dependencies.Quick startfromwellyimportWell,Projectw=Well.from_las('my_wells/my_well.las')# Load a single well.p=Project.from_las('my_wells/*.las')# Load lots of wells.gr=w.data['GR']# One log...gr.plot()# ...with some superpowers!Next, check out the tutorial notebooks.DocumentationThewellydocumentationis a work in progress.Questions or suggestions?If you'd like to chat aboutwellywith us or other users, look for the#welly-and-lasiochannel in theSoftware Underground's Slack.To report bugs or suggest new features/improvements to the code, pleaseopen an issue.ContributingPlease seeCONTRIBUTING.md.PhilosophyThelasioproject provides a very nice way to read and writeCWLSLog ASCII Standard files. The result is an object that contains all the LAS data — it's more or less analogous to the LAS file.Sometimes we want a higher-level object, for example to contain methods that have nothing to do with LAS files. We may want to handle other well data, such as deviation surveys, tops (aka picks), engineering data, striplogs, synthetics, and so on. This is wherewellycomes in.wellyuseslasiofor data I/O, but hides much of it from the user. We recommend you look at both projects before deciding if you need the 'well-level' functionality thatwellyprovides.
Package: welovenad
This is a demo to push a package on PyPiPython projectPrésentation des différents fichiers présentsChoose your distributionon peut choisir entre distribute, setuptools, distutils ou Distutils2.
Seule solution passe partout pour le moment c’est setuptools !setup.pyMake your Package "user friendly"init.pyTheinit.py files are required to make Python treat the directories as containing packages;
this is done to prevent directories with a common name, such as string, from unintentionally hiding
valid modules that occur later on the module search path.
In the simplest case,init.py can just be an empty file, but it can also execute initialization
code for the package or set theallvariable, described later.versionalleasy import functionsTest on local environmentpipdeptree$ python setup.py installPush on PyPiMake sure you have the latest versions of setuptools and wheel installed:$ python3 -m pip install --user --upgrade setuptools wheelGenerating distribution archives$ python3 setup.py sdist bdist_wheelTwine is a utility for interacting with PyPI, that offers a secure replacement for setup.py upload.$ python3 -m pip install --user --upgrade twineupload all of the archives under dist:$ twine upload --repository-urlhttps://test.pypi.org/legacy/dist/*Installing new uploaded packagepython3 -m pip install --index-urlhttps://test.pypi.org/simple/welovenadRessourcesGetting started / simple projecthttps://packaging.python.org/tutorials/packaging-projects/Building and Distributing Packages with Setuptoolshttps://setuptools.readthedocs.io/en/latest/setuptools.htmlPackaging Python Projectshttps://packaging.python.org/guides/distributing-packages-using-setuptools/Repository BJChttps://github.com/BenJoyenConseil/pybbl
Package: welp
welpwelpis a CLI Yelp! clientFeaturesUtilizes the Yelp! fusion API to search Yelp without visiting the web UI. Great for devs who want to look busy but are already thinking about lunch!Curses menus for interactive CLI menusVim bindings for navigating menus without the keyboardScroll compatible on Termux and other mobile touch screen shell clientsEmojis for easily scannable food option resultsInstallationInstall using pip.pipinstallwelpUsageYou will need a Yelp Fusion API key in order to use this application because this is my side project and im not going to fork over an api key for it. they key is free and is more than enough for personal queries or even dev on this project.Once you have it, export it to your environment. Stick it into your bashrc to persist it.exportYELP_API_KEY=<key>If you'd like to use Google Geolocation API for automated geolocated results, provide the environment with the Google Geolocation API Key also:exportGOOGLE_API_KEY=<key>Both of these keys are basically free for to use individually. The Google API will require a form of payment, but has a free credit program.Hotkeyswelp has general vim shotcuts.jscrolls one selection downkscrolls one selection uphscrolls one page backlscrolls one page forwardqquits or goes back to previous pagereturnopens detailed business informationDevelopmentTo build this project, usevenvand python3.Install dependencies usingpip install -r requirements.txtand place keys in.envof the project root.Start venv using the following is your venv is named "venv"sourceenv/bin/activate&&set-a;source.env;set+a
Package: welut
Welutis a ebook converterRequirementsebook-convert:$ sudo apt install calibre-convert epub & mobi to pdf.pdftocairo:$ sudo apt install-ypoppler-utils-convert pdf to imagesInstallationWelut is available directly fromPyPI:Installing the package.$ pip install welutDon’t forget to add'welut'to your'INSTALLED_APPS'.# settings.py
INSTALLED_APPS = [
    ....
    'welut',
]Doing makemigrations & migrate./manage.py makemigrations welut
./manage.py migrate welutConfiguration (settings.py)WELUT_EXTENSIONS = ['.pdf', '.epub', '.mobi']         # support file extensions
WELUT_REMOVED_EXTENSIONS = ['.pdf', '.epub', '.mobi'] # file to remove after uploaded
WELUT_IMAGES_EXTENSION = '.png'                       # format images extensionUsageYou can usingForeignKeyorOneToOneField.from django.db import models
from welut.models import EbookConverter


class EBook(models.Model):
    title = models.CharField(max_length=200)
    ebook_file = models.ForeignKey(EbookConverter, related_name='ebook_file')
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

    def get_files(self):
        """ return list images of ebook per-page """
        return self.ebook_file.get_files()Templates{% for img_url in object.get_files %}
  <img src="{{ MEDIA_URL }}{{ img_url }}">
{% endfor %}Usage Preview
Package: wemeet-openapi
简介欢迎使用腾讯会议开发者工具套件（SDK）1.1.0，为方便 Python 开发者调试和接入腾讯云会议 API，这里向您介绍适用于 Python 的腾讯会议开发工具包，并提供首次使用开发工具包的简单示例。让您快速获取腾讯会议 Python SDK 并开始调用。依赖环境依赖环境：Python 3.7 版本及以上。购买腾讯会议企业版获取 SecretID、SecretKey，接入的企业 AppId。获取安装在第一次使用云API之前，用户首先需要在腾讯云控制台上申请安全凭证，安全凭证包括 SecretID 和 SecretKey，SecretID 是用于标识 API 调用者的身份，SecretKey 是用于加密签名字符串和服务器端验证签名字符串的密钥 SecretKey 必须严格保管，避免泄露。通过源码包安装前往Github 代码托管地址下载源码压缩包；解压源码包到您项目合适的位置；引用方法可参考示例。示例以创建会议接口为例：importrandomimporttimeimportwemeet_openapi# crete_meeting_demo 创建会议请求demodefcrete_meeting_demo():# 1.构造 client 客户端(jwt 鉴权需要配置 appId sdkId secretID 和 secretKey)client=wemeet_openapi.Client(app_id="2****46",sdk_id="2****50",secret_id="Zk*****J8h",secret_key="Y2z*****WRsVksn")# 2.构造请求体request=wemeet_openapi.ApiV1MeetingsPostRequest(body=wemeet_openapi.V1MeetingsPostRequest(instanceid=2,meeting_type=0,subject="测试会议",type=1,userid="userid",start_time="1651334400",end_time="1651377600"))# 3.构造 JWT 鉴权器authenticator_builder=wemeet_openapi.JWTAuthenticator(nonce=random.randrange(0,2**64),timestamp=str(int(time.time()))).options_build()# 4.发送对应的请求try:response=client.meetings_api.v1_meetings_post(request=request,authenticator_options=[authenticator_builder])print(f"Response from `MeetingsApi.V1MeetingsPost`:{vars(response)}\n")exceptwemeet_openapi.ClientExceptionase:print(f"Error when calling `MeetingsApi.V1MeetingsPost`:{e}\n")exceptwemeet_openapi.ServiceExceptionassvrErr:print(f"Error when calling `MeetingsApi.V1MeetingsPost`:{svrErr}\n")print(f"Full HTTP response:{str(svrErr.api_resp.raw_body)}\n")# 调用入口点函数if__name__=="__main__":crete_meeting_demo()
Package: wemopy
WEMO Python WrapperWEMO Python Wrapper is a simple wrapper around the WEMO gRPC code that simplifies the usageFree software: Apache Software License 2.0Documentation:https://wemopy.readthedocs.io.FeaturesTODOCreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.Notesbumpversion [major|minor|patch]History0.1.0 (2021-08-09)First release on PyPI.
Package: wemportal
Python wemportal moduleI wanted to scrape the Weishaupt WEM Portal without usingHome Assistant.
@erikkastelec created a nice projecthass-WEM-Portal, so
I used his code to create this python module for standalone scraping of WEM Portal.It utilizes the mobile api for the most of the data. The statistics are collected via web api.Installationpip install wemportalExample usagefromwemportal.wem_portalimportWemPortal# Create API objectapi=WemPortal(username="<WEM Portal Username>",password="<WEM Portal Password>")# Fetch dataapi.login()devices=api.fetch_devices()api.logout()# Print valuesfordeviceindevices:print(f"== Device{device.name}==\n")print("Values:")fordataindevice.get_parameter_values():print(f"\t{data['ParameterId']}:{data['ValueNumericValue']}{data['ValueUnit']}")print("\nHot Water Statistics:")fordataindevice.hot_water_statistic.values:print(f"\t{data.datetime.date()}:{data.value:.2f}{device.hot_water_statistic.unit}")print("\nHeating Statistics:")fordataindevice.heating_statistic.values:print(f"\t{data.datetime.date()}:{data.value:.2f}{device.heating_statistic.unit}")Reporting bugs or incorrect resultsIf you find a bug, please create an issue in therepo issues tracker.Please contributeIt was created for myself, but if you find it useful: Please contribute.
Package: wempy
Wempy is a command line tool for parsing embedded python (similar to Ruby’s
erb). Wempy’s syntax is pure python with 3 very important differences:There is no need for indentationThe python keyword ‘pass’ must be used to indicate the end of some
satements, blocks, and loops (like if/else, Try/Except, for or while )
depending on context‘extend’ and ‘include’ are special keywords used to make templates (which can inherit)Example% wempy <<-EOF

{{first_name = 'Tyler'}}

{{last_name = 'Durden'}}

Hello Mr. {{=last_name}} or shall I call you {{=first_name}} instead?

EOFThis generates the following output:Hello Mr.  Durden  or shall I call you  Tyler  instead?You can see the python script that is generated & executed by using the -x flag.% wempy -x <<-EOF

{{first_name = 'Tyler'}}

{{last_name = 'Durden'}}

Hello Mr. {{=last_name}} or shall I call you {{=first_name}} instead?

EOFWhich prints out:import sys

sys.stdout.write('    ')

first_name = 'Tyler'

sys.stdout.write('\n    ')

last_name = 'Durden'

sys.stdout.write('\n    Hello Mr. ')

sys.stdout.write(last_name)

sys.stdout.write(' or shall I call you ')

sys.stdout.write(first_name)

sys.stdout.write(' instead?\n')wempy.py shows how to use the wemplate library. But here’s a quick rundown:>> import wemplate.wemplate

>> text="Hello {{=planet}} !"

>> parser = wemplate.wemplate.TemplateParser(text)

>>

>> print parser.render(planet="World")       #print the rendered template

'Hello World !'OriginWempy is taken directly from Web2py’s template engine.  We’ve removed some
things like the gluon integration wrapper functions, the response object, and
HTML/XML escaping.The name stands for (W)eb2py’s (Em)bedded (Py)thonDocumentationThere isn’t any for wempy (yet). To understand the caveats of the engine take
a look at theViews Basic Syntaxsection of theweb2py manualI’ll be working on Wempy specific documentation shortlyLicenseAs Web2py is licensed under the LGPL v3 so too is WempyHomeMore information will soon be available athttp://www.wempy.org
Package: wemulate
A modern WAN Emulator developed by the Institute for Networked SolutionsWEmulateHave a look at thedocumentationfor detailed information.InstallationRequirementsAt least two network interfaces forLAN-AandLAN-BA third management interface if you would like to use the api and frontend moduleUbuntu installedRoot permissionsGetting StartedTo install only the WEmulate cli with bash, simply run this command in your terminal of choice:bash -c "$(curl -fsSL https://raw.githubusercontent.com/wemulate/wemulate/main/install/install.sh)"There are different arguments available in order to enhance the installation experience:-h               Prints the help message
-f               Skip the confirmation prompt during installation
-i <int1,int2>   List of interfaces which should be used as management interfaces
-a               Install the api module
-v               Install the frontend moduleYou can for example install the cli, api and frontend module together with one management interface with the following command:curl -fsSL https://raw.githubusercontent.com/wemulate/wemulate/main/install/install.sh | bash -s -- -a -v -i ens2 -fUsage# Add a new connection$wemulateaddconnection-nconnectionname-iLAN-ALAN-B# Delete a connection$wemulatedeleteconnection-nconnectionname# Add parameters bidirectional$wemulateaddparameter-nconnectionname-j20-d40# Add parameters in specific direction$wemulateaddparameter-nconnectionname-j20-d40-srcLAN-A-dstLAN-BDevelopmentConfigure poetry to create the environment inside the project path, in order that VSCode can recognize the virtual environment.$ poetry config virtualenvs.in-project trueInstall the virtualenv.$ poetry install
Package: wemulate-api
A modern WAN Emulator developed by the Institute for Networked SolutionsWEmulate API ModuleThis is the API module which builds on theCLI module.Have a look at thedocumentationfor detailed information.InstallationIt is installed with the-aparameter from the documented install command forWEmulate.DevelopmentConfigure poetry to create the environment inside the project path, in order that VSCode can recognize the virtual environment.$ poetry config virtualenvs.in-project trueInstall the virtualenv.$ poetry installStart the application with the following command:$ uvicorn api.app:app --host 0.0.0.0 --port 8080 --reload
Package: wenbot
WenbotSimple bot wrapper of selenium basic functionsSample code:import wenbot

bot = wenbot.Bot()
bot.play([
    ('open', 'https://www.google.co.nz/'),
    ('text', 'input[name=q]', 'pip wenbot', 'clear, enter'),
])
input('enter to stop browser')Optional Proxy SupportRequires browsermob-proxy binary, seehttps://github.com/lightbody/browsermob-proxy/releases.
Requires java to run browsermob-proxy binary.
Default browsermob-proxy binary path is set inwenbot.browsermob_proxy_bin.
Requires pypi packagebrowsermobproxy, installpip install browsermob-proxy.Sample Setupwget https://github.com/lightbody/browsermob-proxy/releases/download/browsermob-proxy-2.1.4/browsermob-proxy-2.1.4-bin.zip
unzip browsermob-proxy-2.1.4-bin.zip
java --version  # make sure java works
pip install browsermob-proxySupport https SitesUser needs install certification file manually to access https sites properly.
See browsermob documenthere.Steps in macos:download cert filewget https://raw.githubusercontent.com/lightbody/browsermob-proxy/master/browsermob-core/src/main/resources/sslSupport/ca-certificate-rsa.cerOpen keychain (or this also opens keychan: Chrome menu: Settings > Privacy and security > Security > Manage certificates)Keychain menu: File > Import items > import 'ca-certificate-rsa.cer'It's listed under 'certificates' as 'LittleProxy MITM' but not trustedright click menu > Get info > expand 'Trust' > "When using this certificate" = "Always Trust"Remember delete this item after testing is done.Sample Codeimport json
import pydash
import wenbot

bot = wenbot.Bot(proxy=True)
input('enter to print log and stop browser')
# Chrome window shows up.
# After open webpage and operations
har = bot.proxy.har  # this is a property that pulls data from server
# bot.proxy is a browsermobproxy.client.Client object
# see https://browsermob-proxy-py.readthedocs.io/en/stable/client.html
# har is recorded log
with open('/tmp/har.json', 'wt') as f:
    print(json.dumps(har, indent=4, default=str), file=f)

for entry in pydash.get(har, 'log.entries') or []:
    print(pydash.get(entry, "request.url"))
    print(f'    method={pydash.get(entry, "request.method")}')
    print('    Headers')
    for header in pydash.get(entry, 'request.headers') or []:
        print(f'        {header["name"]}: {header["value"]}')
    print(f'    status={pydash.get(entry, "response.status")}')Try sample code and open/tmp/har.jsonsee what's HAR structure.Usebot.proxy.new_har()to record new HAR data.Default only record headers, not content or binary content (in brosermob-proxy terms).To specify different options: eg.bot.proxy.new_har(options={
    'captureHeaders': True,
    'captureContent': True,
    'captureBinaryContent': False,
})Change History0.0.9 2021-10-31 update doc for https sites with browsermobproxy and update dependency for bs40.0.8 2021-08-19 add sample code0.0.7 2021-07-14 bugfix0.0.6 2021-07-14 replace print with log0.0.5 2021-07-14 Bumps urllib3 from 1.26.4 to 1.26.5
Package: wendy
wendyA one-dimensional gravitational N-body code.Overviewwendysolves the one-dimensional gravitational N-body problem to machine precision with an efficient algorithm [O(log N) / particle-collision]. Alternatively, it can solve the problem with approximate integration, but with exact forces.AuthorJo Bovy (University of Toronto): bovy - at - astro - dot - utoronto - dot - caInstallationInstall the latest release usingpip install wendyor clone/fork/download the repository and install usingsudo python setup.py installor locally usingpython setup.py install --userThe behavior of the parallel sorting algorithm used when settingsort='parallel'in the approximate version of the N-body code (approx=True) is controlled by a few compilation-time variables:PARALLEL_SERIAL_SORT_SWITCH, which sets the length of an array below which the serial sort is used,PARALLEL_SERIAL_MERGE_SWITCH, which sets the length of an array below which a serial merge is used (as part of themergesortsorting algorithm used), andPARALLEL_SORT_NUM_THREADS, the number of threads used in the parallel sorting algorithm. By default, these are set toPARALLEL_SERIAL_MERGE_SWITCH=10000,PARALLEL_SERIAL_MERGE_SWITCH=50000, andPARALLEL_SORT_NUM_THREADS=32, which appear to work well. Significant speed-ups can be obtained by optimizing these for your system and specific problem. They can be set to different values by running, e.g.,export CFLAGS="$CFLAGS -D PARALLEL_SERIAL_SORT_SWITCH=10 -D PARALLEL_SERIAL_MERGE_SWITCH=10 -D PARALLEL_SORT_NUM_THREADS=2"before compiling the code (if you are trying to change them, make sure to force a re-compilation by removing thebuild/directory).UsageUsewendy.nbodyto initialize a generator object for initial(x,v)with massesm. The generator then returns the state of the system at equally-spaced time intervals:g= wendy.nbody(x,v,m,0.05) # delta t = 0.05
next_x, next_v= next(g) # at t=0.05
next_x, next_v= next(g) # at t=0.10
...The generator initialization withwendy.nbodyhas options to (a) solve the problem exactly or not usingapprox=, (b) include an external harmonic oscillator potentialomega^2 x^2 / 2withomega=(both for exact and approximate solutions), and (c) include an arbitrary external forceF(x,t)(usingext_force=, only for the approximate solution).ExamplesPhase mixing and violent relaxation in one dimension:example notebook(run locally to see movies, or view onnbviewer)A self-gravitating, sech2disk:example notebook(run locally to see movies, or view onnbviewer)TheGaiaphase-space spiral:example notebook(run locally to see movies, or view onnbviewer)Adiabatic contraction:example notebook(run locally to see movies, or view onnbviewer)Adiabatic vs. non-adiabatic energy injection for an exponential disk:example notebook(run locally to see movies, or view onnbviewer)wendyscaling with particle number:example notebook(view onnbviewer)
Package: wenet-stt
Wenet STT PythonBeta SoftwareSimple Python library, distributed via binary wheels with few direct dependencies, for easily usingWeNetmodels for speech recognition.Requirements:Python 3.7+Platform: Linux x64 (Windows is a work in progress; MacOS may work; PRs welcome)Python package requirements:cffi,numpyWenet Model (must be "runtime" format)Several are available ready-to-go on this project'sreleases pageand below.Models:ModelDownload Sizegigaspeech_20210728_u2pp_conformer549 MBgigaspeech_20210811_conformer_bidecoder540 MBUsagefromwenet_sttimportWenetSTTdecoder=WenetSTT(WenetSTT.build_config('model_dir'))importwavewithwave.open('tests/test.wav','rb')aswav_file:wav_samples=wav_file.readframes(wav_file.getnframes())assertdecoder.decode(wav_samples).strip().lower()=='it depends on the context'Also contains a simple CLI interface for recognizingwavfiles:$python-mwenet_sttdecodemodeltest.wav
ITDEPENDSONTHECONTEXT
$python-mwenet_sttdecodemodeltest.wavtest.wav
ITDEPENDSONTHECONTEXT
ITDEPENDSONTHECONTEXT
$python-mwenet_stt-h
usage:python-mwenet_stt[-h]{decode}...

positionalarguments:{decode}sub-commanddecodedecodeoneormoreWAVfiles

optionalarguments:-h,--helpshowthishelpmessageandexitInstallation/BuildingRecommended installation via wheel from pip (requires a recent version of pip):python-mpipinstallwenet_sttTo build package for use locally:pythonsetup.pybdist_wheelTo build package for publishing:building/dockcross-manylinux2014-x64bashbuilding/build-wheel-dockcross.shmanylinux2014_x86_64AuthorDavid Zurow (@daanzu)LicenseThis project is licensed under the GNU Affero General Public License v3 (AGPL-3.0-or-later). See theLICENSE filefor details. If this license is problematic for you, please contact me.AcknowledgmentsContains and uses code fromWeNet, licensed under the Apache-2.0 License, and other transitive dependencies (see source).
Package: weng-pkgtest
This is a test package project.This is a simple example package. You can useGithub-flavored Markdownto write your content.生成wheel文件pipinstallwheel
pythonsetup.pybdist_wheel之后会在dist目录下生成类似的文件:name-x.x.x-py3-none-any.whl上传到pypi现在已经可以使用该whl文件本地安装了，也可以传到 pypi 供所有人使用。•	首先要注册个账号
•	然后安装twine
•	上传# 1. Generating distribution archives
pip install twine
# python -m pip install --user --upgrade setuptools wheel

# 生成whl
python setup.py sdist bdist_wheel


# 2. 在用户名下创建用户验证文件(C:\Users\YOUR_USER_NAME\.config) (这一步好像没有用)
文件内容如下
-------------------------------
[distutils]
index-servers=pypi
 
[pypi]
repository = https://upload.pypi.org/legacy/
username = xxxx
password = xxxx
-------------------------------

# 3. 注册包 (可忽略，这一步现在非必须了)
python setup.py register

# 4. Uploading the distribution archives
# python -m pip install --user --upgrade twine
python -m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*


# 5. 升级发布包
编写完成后，删除dist 目录，重新生成可发布的文件。然后验证和重新发布上传。安装、卸载方式# 源码方式pythonsetup.pyinstall# 在线安装方式pipinstalllib_name# 升级安装方式pipinstall--upgradelib_name# 卸载pipunintalllib_nameREFonenote: 0124 python packagings
Package: weni-profilers
Weni ProfilersTheweni-profilerslibrary allows you to add a simple profiler to a Django project to analyze the performance of views.Setup in project1. Install weni-profilerspip install weni-profilers2. Configure the middlewareMIDDLEWARE=[# ...'weni.profilers.CProfilerMiddleware',]VariablesUSE_PROFILER=TruePROFILER_AUTH_TOKEN="your-secret-key"NameDescriptionUSE_PROFILERThis variable enables the profiler if it isTruePROFILER_AUTH_TOKENBased on this variable, the middleware will authenticate the requestIt is recommended that both are configured by environment variables, mainlyPROFILER_AUTH_TOKENUsingTo profile a view, add?profto the URL of the view you want to analyze:http://localhost:8000/your-view/?profYou can pass the following parameters in the URL to customize the output:?sort: Sorts the output by a specific metric. The default is "team". See the official documentation for all ordering options.?count: Defines the number of lines to be displayed. The default is 100.?download: Downloads the profile file for viewing in tools such as SnakeViz or RunSnakeRun.Example URL with parameters:http://localhost:8000/your-view/?prof&sort=cumulative&count=50&downloadThis repository is a fork ofhttps://github.com/omarish/django-cprofile-middleware
Package: wenjuantest2
在留下您的建议时，辛苦您同步提供如下信息：版本、环境信息
1）版本：请提供您的版本号，例如1.1
2）CPU/GPU：您是否使用GPU进行训练，如是，请提供您的CUDA和cuDNN版本号
3）系统环境：请您描述系统类型、版本，例如Mac OS 10.14复现信息：如为报错，请给出复现环境、复现步骤建议描述：请您详细描述，您认为需优化的功能