re-common 10.0.3__tar.gz → 10.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {re_common-10.0.3 → re_common-10.0.5}/PKG-INFO +1 -1
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/author_smi.py +53 -15
- re_common-10.0.5/re_common/v2/baselibrary/utils/n_ary_expression_tree.py +178 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/string_clear.py +1 -14
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/stringutils.py +51 -1
- {re_common-10.0.3 → re_common-10.0.5}/re_common.egg-info/PKG-INFO +1 -1
- {re_common-10.0.3 → re_common-10.0.5}/re_common.egg-info/SOURCES.txt +1 -0
- {re_common-10.0.3 → re_common-10.0.5}/setup.py +2 -3
- {re_common-10.0.3 → re_common-10.0.5}/LICENSE +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/README.md +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/baseabs/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/baseabs/baseabs.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/mbuilder.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/moudle.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/msqlite3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/mysql.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/database/sql_factory.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/mthread/MThreadingRun.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/mthread/MThreadingRunEvent.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/mthread/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/mthread/mythreading.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/pakge_other/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/pakge_other/socks.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/readconfig/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/readconfig/config_factory.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/readconfig/ini_config.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/readconfig/toml_config.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/temporary/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/temporary/envdata.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/aiohttp_request.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/httpx_requet.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/mrequest.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/requests_request.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/batch_compre/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/batch_compre/bijiao_batch.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/contrast_db3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/copy_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/db3_2_sizedb3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/foreachgz.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/get_attr.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/image_to_pdf.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/java_code_deal.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/javacode.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mdb_db3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/merge_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/merge_gz_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/hdfst.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mongo_tools.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/move_mongo_table.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/use_mttf.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/use_mv.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mpandas/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mpandas/pandas_visualization.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/myparsel.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/rename_dir_file.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/sequoiadb_utils.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/split_line_to_many.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/stringtodicts.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/workwechant_bot.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseaiohttp.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseaiomysql.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseallstep.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseavro.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseboto3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basecsv.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basedict.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basedir.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseencode.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseencoding.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseesdsl.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseexcel.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseexcept.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basefile.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseftp.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basegzip.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basehdfs.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basehttpx.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseip.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basejson.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baselist.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basemotor.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basemssql.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseodbc.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basepandas.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basepeewee.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basepika.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basepydash.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basepymongo.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basequeue.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baserar.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baserequest.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseset.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basesmb.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basestring.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basetime.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basetuple.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/baseurl.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/basezip.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/bottomutils.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/mdeprecated.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/mlamada.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/msginfo.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/core/requests_core.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/fateadm.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/importfun.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/mfaker.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/my_abc/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/my_abc/better_abc.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/mylogger.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/myredisclient.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/pipupgrade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/ringlist.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/version_compare.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/utils/ydmhttp.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/lazy_import.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/loggerfacade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/mysqlfacade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/now.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/sqlite3facade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/use/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/use/mq_use_facade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/facade/use/proxy_use_facade.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/base_dict_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/baseavro_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/basefile_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/basemssql_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/baseodbc_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/basepandas_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/get_attr_test/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/get_attr_test/get_attr_test_settings.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/get_attr_test/settings.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/idencode_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/iniconfig_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/ip_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/merge_file_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/mfaker_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/mm3_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/mylogger_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/myparsel_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/mysql_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/pymongo_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/split_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/sqlite3_merge_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/sqlite3_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/tomlconfig_test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/use_tools_test/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/libtest/user/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/assignment_expressions.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/mydash/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/mydash/test1.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/pydashstudio/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/pydashstudio/first.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/streamlitstudio/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/streamlitstudio/first_app.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/streamlitstudio/uber_pickups.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/studio/test.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/s3object/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/s3object/baseboto3.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/dict_tools.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/list_tools.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/search_hash_tools.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/text_matcher.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/tools/unionfind_tools.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/BusinessStringUtil.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/basedict.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/basehdfs.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/json_cls.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/v2/baselibrary/utils/string_bool.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/base_step_process.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/baseencodeid.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/changetaskname.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/core_var.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/mmh3Hash.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/allproxys.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/allproxys_thread.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/cnki_proxy.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/kuaidaili.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/proxy_all.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/update_kuaidaili_0.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/wanfang_proxy.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/proxy/wp_proxy_all.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/read_rawid_to_txt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformBookTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformConferenceTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformCstadTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformJournalTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformPatentTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformRegulationTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformStandardTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/TransformThesisTitleToZt.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common/vip/title/transform/__init__.py +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common.egg-info/dependency_links.txt +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/re_common.egg-info/top_level.txt +0 -0
- {re_common-10.0.3 → re_common-10.0.5}/setup.cfg +0 -0
|
@@ -3,9 +3,12 @@ import re
|
|
|
3
3
|
import string
|
|
4
4
|
|
|
5
5
|
import regex
|
|
6
|
-
import
|
|
6
|
+
from jellyfish import damerau_levenshtein_distance
|
|
7
7
|
from rapidfuzz._utils import setupPandas, is_none
|
|
8
8
|
from rapidfuzz.distance import Jaro
|
|
9
|
+
from unidecode import unidecode
|
|
10
|
+
|
|
11
|
+
from re_common.v2.baselibrary.utils.stringutils import get_diacritic_variant
|
|
9
12
|
|
|
10
13
|
"""
|
|
11
14
|
作者比率分布 大部分在 1和 2
|
|
@@ -23,17 +26,6 @@ additional_chars = '‑–‐’·.—'
|
|
|
23
26
|
extended_punctuation = string.punctuation + additional_chars
|
|
24
27
|
|
|
25
28
|
|
|
26
|
-
def get_diacritic_variant(char1):
|
|
27
|
-
# 将字符转换为标准的 Unicode 形式
|
|
28
|
-
normalized_char1 = unicodedata.normalize('NFD', char1)
|
|
29
|
-
|
|
30
|
-
# 获取基本字符(去掉变音符号)
|
|
31
|
-
base_char1 = ''.join(c for c in normalized_char1 if unicodedata.category(c) != 'Mn')
|
|
32
|
-
|
|
33
|
-
# 判断基本字符是否相同
|
|
34
|
-
return base_char1
|
|
35
|
-
|
|
36
|
-
|
|
37
29
|
def detect_other_languages(text):
|
|
38
30
|
# 匹配所有非中文、非英文、非数字字符
|
|
39
31
|
pattern = r'[^\u4E00-\u9FFFa-zA-Z0-9\s.,!?;:\'\"()‑\-–—‐’·˜.]'
|
|
@@ -127,6 +119,49 @@ def custom_rstrip(s):
|
|
|
127
119
|
return s
|
|
128
120
|
|
|
129
121
|
|
|
122
|
+
# 分割中文拼音,如"Xiaohong" ————> ['Xiao', 'hong']
|
|
123
|
+
def chinese_pinyin_split_by_rules(input_str):
|
|
124
|
+
# 声母列表(含复合声母)
|
|
125
|
+
initials = {
|
|
126
|
+
'b', 'p', 'm', 'f', 'd', 't', 'n', 'l', 'g', 'k', 'h',
|
|
127
|
+
'j', 'q', 'x', 'zh', 'ch', 'sh', 'r', 'z', 'c', 's', 'y', 'w'
|
|
128
|
+
}
|
|
129
|
+
# 韵母列表(部分示例)
|
|
130
|
+
finals = {
|
|
131
|
+
'a', 'o', 'e', 'ai', 'ei', 'ao', 'ou', 'an', 'en', 'ang', 'eng', 'ong',
|
|
132
|
+
'i', 'ia', 'ie', 'iao', 'iu', 'ian', 'in', 'iang', 'ing', 'iong',
|
|
133
|
+
'u', 'ua', 'uo', 'uai', 'ui', 'uan', 'un', 'uang', 'ueng',
|
|
134
|
+
'v', 've', 'van', 'vn'
|
|
135
|
+
}
|
|
136
|
+
result = []
|
|
137
|
+
while input_str:
|
|
138
|
+
# 尝试匹配最长声母
|
|
139
|
+
max_initial_len = 2 # 最长声母如 'zh'
|
|
140
|
+
matched_initial = ""
|
|
141
|
+
for length in range(max_initial_len, 0, -1):
|
|
142
|
+
candidate = input_str[:length]
|
|
143
|
+
if candidate.lower() in initials:
|
|
144
|
+
matched_initial = candidate
|
|
145
|
+
break
|
|
146
|
+
# 切分声母后的剩余部分
|
|
147
|
+
remaining = input_str[len(matched_initial):]
|
|
148
|
+
# 匹配韵母
|
|
149
|
+
max_final_len = min(4, len(remaining)) # 最长韵母如 'iong'
|
|
150
|
+
matched_final = ""
|
|
151
|
+
for length in range(max_final_len, 0, -1):
|
|
152
|
+
candidate = remaining[:length]
|
|
153
|
+
if candidate.lower() in finals:
|
|
154
|
+
matched_final = candidate
|
|
155
|
+
break
|
|
156
|
+
if matched_final:
|
|
157
|
+
# 合并声母和韵母
|
|
158
|
+
syllable = matched_initial + matched_final
|
|
159
|
+
result.append(syllable)
|
|
160
|
+
input_str = input_str[len(syllable):]
|
|
161
|
+
else:
|
|
162
|
+
return [] # 无法切分
|
|
163
|
+
return result
|
|
164
|
+
|
|
130
165
|
|
|
131
166
|
def AuthorRatio(
|
|
132
167
|
s1,
|
|
@@ -151,8 +186,8 @@ def AuthorRatio(
|
|
|
151
186
|
if not s1 or not s2:
|
|
152
187
|
return 0
|
|
153
188
|
# 处理音标问题
|
|
154
|
-
s1 = get_diacritic_variant(s1)
|
|
155
|
-
s2 = get_diacritic_variant(s2)
|
|
189
|
+
s1 = get_diacritic_variant(unidecode(s1))
|
|
190
|
+
s2 = get_diacritic_variant(unidecode(s2))
|
|
156
191
|
# 这里提出来是为了少计算 但后期需要平衡内存和算力
|
|
157
192
|
# 移除指定符号 这里做了小写化处理
|
|
158
193
|
s1_punc = remove_punctuation(s1)
|
|
@@ -218,6 +253,10 @@ def AuthorRatio(
|
|
|
218
253
|
# 如果两个字符忽略大小写后相同,继续比较下一个字符
|
|
219
254
|
if i1.lower() == i2.lower():
|
|
220
255
|
continue
|
|
256
|
+
# 在作者中 有可能错误字母 当单词大于3 且只有一个字母错误或者位置交换时 可以认为这两个单词相同
|
|
257
|
+
# 样例 "De Gusmio, Ana Paula Henriques","De Gusmão, Ana Paula Henriques"
|
|
258
|
+
if len(i1) > 3 and damerau_levenshtein_distance(i1, i2) <= 1:
|
|
259
|
+
continue
|
|
221
260
|
|
|
222
261
|
# 如果其中一个字符的长度为1(即是单个字母),检查它们的首字母是否匹配
|
|
223
262
|
if len(i1) == 1 or len(i2) == 1:
|
|
@@ -260,7 +299,6 @@ def AuthorRatio(
|
|
|
260
299
|
if len(sort_l1) == len(sort_l2) and (is_same_or_initials_match(sort_l1, sort_l2) or set(sort_l1) == set(sort_l2)):
|
|
261
300
|
return 0.99
|
|
262
301
|
|
|
263
|
-
|
|
264
302
|
##############################################################
|
|
265
303
|
# 以上为情况穷举情况,以下为其他情况的相似率计算
|
|
266
304
|
##############################################################
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
class Node:
|
|
2
|
+
def __init__(self, value, children=None):
|
|
3
|
+
self.value = value
|
|
4
|
+
self.children = children if children is not None else []
|
|
5
|
+
|
|
6
|
+
def __repr__(self):
|
|
7
|
+
return f"Node(value={self.value}, children={self.children})"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def tokenize(expression):
|
|
11
|
+
"""将表达式分解为标记(token),仅以 and, or, not 和括号作为分界符
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
expression (str): 输入的字符串表达式,例如 'a = 3 + (b > 2) and c'
|
|
15
|
+
|
|
16
|
+
Returns:
|
|
17
|
+
list: 分解后的标记列表,例如 ['a = 3 + (b > 2)', 'and', 'c']
|
|
18
|
+
"""
|
|
19
|
+
tokens = [] # 存储最终的标记列表
|
|
20
|
+
current = "" # 当前正在构建的标记字符串
|
|
21
|
+
i = 0 # 当前字符的索引
|
|
22
|
+
length = len(expression) # 输入表达式的长度
|
|
23
|
+
|
|
24
|
+
def is_delimiter_match(expression, i, delimiter_len=3, delimiter="and"):
|
|
25
|
+
"""检查当前位置是否匹配指定的分隔符(and, or, not)
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
expression (str): 输入的表达式字符串
|
|
29
|
+
i (int): 当前检查的起始索引
|
|
30
|
+
delimiter_len (int): 分隔符的长度,默认为 3(适用于 'and' 和 'not')
|
|
31
|
+
delimiter (str): 要检查的分隔符,默认为 'and'
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
bool: 如果当前位置匹配分隔符且前后有空格,返回 True,否则返回 False
|
|
35
|
+
"""
|
|
36
|
+
# 检查索引是否超出范围
|
|
37
|
+
if not i + delimiter_len <= length:
|
|
38
|
+
return False
|
|
39
|
+
# 检查当前位置是否匹配指定分隔符(忽略大小写)
|
|
40
|
+
if not expression[i:i + delimiter_len].lower() == delimiter:
|
|
41
|
+
return False
|
|
42
|
+
|
|
43
|
+
# 检查分隔符前是否有一个空格(如果不是字符串开头)
|
|
44
|
+
if i - 1 >= 0:
|
|
45
|
+
if not expression[i - 1].lower() == ' ':
|
|
46
|
+
return False
|
|
47
|
+
|
|
48
|
+
# 检查分隔符后是否有一个空格(如果不是字符串结尾)
|
|
49
|
+
if i + delimiter_len + 1 <= length:
|
|
50
|
+
if not expression[i + delimiter_len].lower() == ' ':
|
|
51
|
+
return False
|
|
52
|
+
return True
|
|
53
|
+
|
|
54
|
+
# 遍历表达式的每个字符
|
|
55
|
+
while i < length:
|
|
56
|
+
char = expression[i] # 当前处理的字符
|
|
57
|
+
|
|
58
|
+
# 处理括号
|
|
59
|
+
if char in "()":
|
|
60
|
+
if current.strip(): # 如果当前标记有内容,先将其添加到 tokens
|
|
61
|
+
tokens.append(current.strip())
|
|
62
|
+
current = "" # 重置当前标记
|
|
63
|
+
tokens.append(char) # 将括号作为独立标记添加
|
|
64
|
+
i += 1 # 移动到下一个字符
|
|
65
|
+
continue
|
|
66
|
+
|
|
67
|
+
# 检查是否遇到 and, or, not 分隔符
|
|
68
|
+
if is_delimiter_match(expression, i, delimiter_len=3, delimiter="and"):
|
|
69
|
+
if current.strip(): # 如果当前标记有内容,先添加
|
|
70
|
+
tokens.append(current.strip())
|
|
71
|
+
current = "" # 重置当前标记
|
|
72
|
+
tokens.append("and") # 添加 'and' 标记
|
|
73
|
+
i += 3 # 跳过 'and' 的长度
|
|
74
|
+
continue
|
|
75
|
+
elif is_delimiter_match(expression, i, delimiter_len=2, delimiter="or"):
|
|
76
|
+
if current.strip(): # 如果当前标记有内容,先添加
|
|
77
|
+
tokens.append(current.strip())
|
|
78
|
+
current = "" # 重置当前标记
|
|
79
|
+
tokens.append("or") # 添加 'or' 标记
|
|
80
|
+
i += 2 # 跳过 'or' 的长度
|
|
81
|
+
continue
|
|
82
|
+
elif is_delimiter_match(expression, i, delimiter_len=3, delimiter="not"):
|
|
83
|
+
if current.strip(): # 如果当前标记有内容,先添加
|
|
84
|
+
tokens.append(current.strip())
|
|
85
|
+
current = "" # 重置当前标记
|
|
86
|
+
tokens.append("not") # 添加 'not' 标记
|
|
87
|
+
i += 3 # 跳过 'not' 的长度
|
|
88
|
+
continue
|
|
89
|
+
|
|
90
|
+
# 将非分隔符字符追加到当前标记中,包括空格
|
|
91
|
+
current += char
|
|
92
|
+
i += 1 # 移动到下一个字符
|
|
93
|
+
|
|
94
|
+
# 处理最后一个标记(如果有内容)
|
|
95
|
+
if current.strip():
|
|
96
|
+
tokens.append(current.strip())
|
|
97
|
+
|
|
98
|
+
return tokens # 返回标记列表
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def parse_expression(tokens):
|
|
104
|
+
"""递归下降解析表达式"""
|
|
105
|
+
|
|
106
|
+
def parse_or(tokens, pos):
|
|
107
|
+
"""解析 OR 级别(最低优先级)"""
|
|
108
|
+
left, pos = parse_and(tokens, pos)
|
|
109
|
+
while pos < len(tokens) and tokens[pos] == 'or':
|
|
110
|
+
pos += 1
|
|
111
|
+
if pos >= len(tokens):
|
|
112
|
+
raise ValueError("Incomplete expression after 'or'")
|
|
113
|
+
right, pos = parse_and(tokens, pos)
|
|
114
|
+
left = Node('or', [left, right])
|
|
115
|
+
return left, pos
|
|
116
|
+
|
|
117
|
+
def parse_and(tokens, pos):
|
|
118
|
+
"""解析 AND 级别(次高优先级)"""
|
|
119
|
+
left, pos = parse_not(tokens, pos)
|
|
120
|
+
while pos < len(tokens) and tokens[pos] == 'and':
|
|
121
|
+
pos += 1
|
|
122
|
+
if pos >= len(tokens):
|
|
123
|
+
raise ValueError("Incomplete expression after 'and'")
|
|
124
|
+
right, pos = parse_not(tokens, pos)
|
|
125
|
+
left = Node('and', [left, right])
|
|
126
|
+
return left, pos
|
|
127
|
+
|
|
128
|
+
def parse_not(tokens, pos):
|
|
129
|
+
"""解析 NOT 级别(最高优先级)"""
|
|
130
|
+
if pos < len(tokens) and tokens[pos] == 'not':
|
|
131
|
+
pos += 1
|
|
132
|
+
if pos >= len(tokens):
|
|
133
|
+
raise ValueError("Incomplete expression after 'not'")
|
|
134
|
+
child, pos = parse_primary(tokens, pos)
|
|
135
|
+
return Node('not', [child]), pos
|
|
136
|
+
return parse_primary(tokens, pos)
|
|
137
|
+
|
|
138
|
+
def parse_primary(tokens, pos):
|
|
139
|
+
"""解析基本单元(条件或括号表达式)"""
|
|
140
|
+
if pos >= len(tokens):
|
|
141
|
+
raise ValueError("Unexpected end of expression")
|
|
142
|
+
|
|
143
|
+
if tokens[pos] == '(':
|
|
144
|
+
pos += 1
|
|
145
|
+
subtree, pos = parse_or(tokens, pos)
|
|
146
|
+
if pos >= len(tokens) or tokens[pos] != ')':
|
|
147
|
+
raise ValueError("Missing closing parenthesis")
|
|
148
|
+
return subtree, pos + 1
|
|
149
|
+
else:
|
|
150
|
+
# 假设这是一个条件(如 A=1)
|
|
151
|
+
return Node(tokens[pos]), pos + 1
|
|
152
|
+
|
|
153
|
+
# 从头开始解析
|
|
154
|
+
tree, pos = parse_or(tokens, 0)
|
|
155
|
+
if pos < len(tokens):
|
|
156
|
+
raise ValueError(f"Extra tokens after expression: {tokens[pos:]}")
|
|
157
|
+
return tree
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# 测试代码
|
|
161
|
+
expressions = [
|
|
162
|
+
"not A=1 and B= 2",
|
|
163
|
+
"A=1 and (not B=2 or (C=3 or D=4))",
|
|
164
|
+
"A=1 and not (B=2 or C=3 and D=4 or E=5)",
|
|
165
|
+
"(A=1 and not (B=2 or C=3 or D=4))",
|
|
166
|
+
"A=1 and", # 不完整表达式
|
|
167
|
+
"and A=1", # 不完整表达式
|
|
168
|
+
]
|
|
169
|
+
|
|
170
|
+
for expr in expressions:
|
|
171
|
+
try:
|
|
172
|
+
print(f"\nExpression: {expr}")
|
|
173
|
+
tokens = tokenize(expr)
|
|
174
|
+
print("Tokens:", tokens)
|
|
175
|
+
tree = parse_expression(tokens)
|
|
176
|
+
print("Tree:", tree)
|
|
177
|
+
except ValueError as e:
|
|
178
|
+
print(f"Error: {e}")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import re
|
|
2
2
|
import regex
|
|
3
3
|
|
|
4
|
-
from re_common.v2.baselibrary.utils.stringutils import qj2bj, bj2qj, get_diacritic_variant
|
|
4
|
+
from re_common.v2.baselibrary.utils.stringutils import qj2bj, bj2qj, get_diacritic_variant, clean_html
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class StringClear(object):
|
|
@@ -67,7 +67,6 @@ class StringClear(object):
|
|
|
67
67
|
return self
|
|
68
68
|
|
|
69
69
|
def replace_dash_with_space(self):
|
|
70
|
-
# 横线换成空格 比 去除符号有时更有用
|
|
71
70
|
self.obj_str = self.obj_str.replace("-", " ")
|
|
72
71
|
return self
|
|
73
72
|
|
|
@@ -88,20 +87,9 @@ class StringClear(object):
|
|
|
88
87
|
|
|
89
88
|
def remove_html_tag(self):
|
|
90
89
|
import html
|
|
91
|
-
from parsel import Selector
|
|
92
90
|
|
|
93
91
|
self.obj_str = html.unescape(self.obj_str)
|
|
94
92
|
|
|
95
|
-
def clean_html(html):
|
|
96
|
-
sel = Selector(text=html, type='html')
|
|
97
|
-
# 移除脚本和样式
|
|
98
|
-
sel.xpath('//script').remove()
|
|
99
|
-
sel.xpath('//style').remove()
|
|
100
|
-
|
|
101
|
-
# 提取文本
|
|
102
|
-
text_nodes = sel.xpath('//text()').getall()
|
|
103
|
-
return ''.join(t.strip() for t in text_nodes if t.strip())
|
|
104
|
-
|
|
105
93
|
self.obj_str = clean_html(self.obj_str)
|
|
106
94
|
|
|
107
95
|
return self
|
|
@@ -117,7 +105,6 @@ def rel_clear(str_obj):
|
|
|
117
105
|
.to_str() # 防止其他类型传入 比如 int double
|
|
118
106
|
.qj_to_bj() # 全角转半角
|
|
119
107
|
.remove_html_tag() # html标签清理
|
|
120
|
-
.replace_dash_with_space() # 横线转空格 在 英文 title 中更有用
|
|
121
108
|
.remove_special_chars() # 移除特殊字符,仅保留字母、数字、空格和汉字 \w 已经包括所有 Unicode 字母 下划线 _ 会被保留
|
|
122
109
|
.collapse_spaces() # 移除多余空格,连续多个空格变一个
|
|
123
110
|
.lower() # 小写
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import re
|
|
2
|
+
import threading
|
|
2
3
|
|
|
3
4
|
import regex
|
|
4
5
|
import unicodedata
|
|
6
|
+
from html.parser import HTMLParser
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
def bj2qj(src):
|
|
@@ -25,6 +27,7 @@ def bj2qj(src):
|
|
|
25
27
|
|
|
26
28
|
return ''.join(buf)
|
|
27
29
|
|
|
30
|
+
|
|
28
31
|
def qj2bj(src):
|
|
29
32
|
"""
|
|
30
33
|
全角转半角
|
|
@@ -62,6 +65,7 @@ def get_diacritic_variant(char1):
|
|
|
62
65
|
# 判断基本字符是否相同
|
|
63
66
|
return base_char1
|
|
64
67
|
|
|
68
|
+
|
|
65
69
|
def get_alphabetic_ratio(text: str) -> float:
|
|
66
70
|
# 返回字母型字符所占比例
|
|
67
71
|
if not text:
|
|
@@ -93,4 +97,50 @@ def get_alphabetic_ratio(text: str) -> float:
|
|
|
93
97
|
alphabetic_chars = re.findall(alphabetic_pattern, clean_text)
|
|
94
98
|
|
|
95
99
|
# 返回字母型字符所占比例
|
|
96
|
-
return len(alphabetic_chars) / len(clean_text)
|
|
100
|
+
return len(alphabetic_chars) / len(clean_text)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class HTMLTextExtractor(HTMLParser):
|
|
104
|
+
_thread_local = threading.local() # 线程局部存储
|
|
105
|
+
|
|
106
|
+
def __init__(self):
|
|
107
|
+
super().__init__()
|
|
108
|
+
self.reset_state()
|
|
109
|
+
|
|
110
|
+
def handle_starttag(self, tag, attrs):
|
|
111
|
+
if tag in ('script', 'style'):
|
|
112
|
+
self.skip = True
|
|
113
|
+
|
|
114
|
+
def handle_endtag(self, tag):
|
|
115
|
+
if tag in ('script', 'style'):
|
|
116
|
+
self.skip = False
|
|
117
|
+
|
|
118
|
+
def handle_data(self, data):
|
|
119
|
+
if not self.skip and data.strip():
|
|
120
|
+
self.text.append(data)
|
|
121
|
+
|
|
122
|
+
def reset_state(self):
|
|
123
|
+
self.reset()
|
|
124
|
+
self.text = []
|
|
125
|
+
self.skip = False
|
|
126
|
+
|
|
127
|
+
def get_text(self):
|
|
128
|
+
return ''.join(self.text).strip()
|
|
129
|
+
|
|
130
|
+
@classmethod
|
|
131
|
+
def get_parser(cls):
|
|
132
|
+
# 每个线程获取独立实例
|
|
133
|
+
if not hasattr(cls._thread_local, 'parser'):
|
|
134
|
+
cls._thread_local.parser = cls()
|
|
135
|
+
return cls._thread_local.parser
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def clean_html(html):
|
|
139
|
+
parser = HTMLTextExtractor.get_parser()
|
|
140
|
+
parser.reset_state()
|
|
141
|
+
parser.feed(html)
|
|
142
|
+
parser.close()
|
|
143
|
+
return parser.get_text()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
@@ -184,6 +184,7 @@ re_common/v2/baselibrary/utils/author_smi.py
|
|
|
184
184
|
re_common/v2/baselibrary/utils/basedict.py
|
|
185
185
|
re_common/v2/baselibrary/utils/basehdfs.py
|
|
186
186
|
re_common/v2/baselibrary/utils/json_cls.py
|
|
187
|
+
re_common/v2/baselibrary/utils/n_ary_expression_tree.py
|
|
187
188
|
re_common/v2/baselibrary/utils/string_bool.py
|
|
188
189
|
re_common/v2/baselibrary/utils/string_clear.py
|
|
189
190
|
re_common/v2/baselibrary/utils/stringutils.py
|
|
@@ -24,8 +24,7 @@ re_common
|
|
|
24
24
|
# new 20250224
|
|
25
25
|
password_new = pypi-AgEIcHlwaS5vcmcCJDJkMzJhNWZkLTBkOTktNGE4Yi1iN2Q5LWU0ZjNjMGNiNzhjYwACEVsxLFsicmUtY29tbW9uIl1dAAIsWzIsWyIwYWIzYjIzMy0zZTlmLTQ1ZjAtYWQ5OC03NjJhNDM5NjNiZmUiXV0AAAYg0Pu6BqqupvhX7ad69d8e6XS8BmnLav6x6D9HJ-U3gko
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
pypi-AgEIcHlwaS5vcmcCJDBlMzc1OTU1LWVkOGItNDVjZS1iMGNhLTQwYmNmYmU3NmViMwACEVsxLFsicmUtY29tbW9uIl1dAAIsWzIsWyIwYWIzYjIzMy0zZTlmLTQ1ZjAtYWQ5OC03NjJhNDM5NjNiZmUiXV0AAAYgisva56cDT5J3a9EBb3paplusibupSRSfoZc_L8PUGDY
|
|
29
28
|
python setup.py sdist bdist_wheel
|
|
30
29
|
python -m twine upload dist/*
|
|
31
30
|
|
|
@@ -35,7 +34,7 @@ long_description = """
|
|
|
35
34
|
"""
|
|
36
35
|
setuptools.setup(
|
|
37
36
|
name="re_common",
|
|
38
|
-
version="10.0.
|
|
37
|
+
version="10.0.5",
|
|
39
38
|
author="vic",
|
|
40
39
|
author_email="xujiang5@163.com",
|
|
41
40
|
description="a library about all python projects",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/aiohttp_request.py
RENAMED
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/httpx_requet.py
RENAMED
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/all_requests/requests_request.py
RENAMED
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/batch_compre/bijiao_batch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py
RENAMED
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py
RENAMED
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/move_mongo/move_mongo_table.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mpandas/mpandasreadexcel.py
RENAMED
|
File without changes
|
{re_common-10.0.3 → re_common-10.0.5}/re_common/baselibrary/tools/mpandas/pandas_visualization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|