maya-umbrella


Namemaya-umbrella JSON
Version 0.13.0 PyPI version JSON
download
home_pagehttps://github.com/loonghao/maya_umbrella
SummaryCheck and fix maya virus.
upload_time2024-05-16 16:39:58
maintainerNone
docs_urlNone
authorlonghao
requires_python!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7
licenseMIT
keywords notifiers python maya dcc
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            # maya-umbrella

[![Python Version](https://img.shields.io/pypi/pyversions/maya-umbrella)](https://img.shields.io/pypi/pyversions/maya-umbrella)
[![Nox](https://img.shields.io/badge/%F0%9F%A6%8A-Nox-D85E00.svg)](https://github.com/wntrblm/nox)
[![PyPI Version](https://img.shields.io/pypi/v/maya-umbrella?color=green)](https://pypi.org/project/maya-umbrella/)
[![Downloads](https://static.pepy.tech/badge/maya-umbrella)](https://pepy.tech/project/maya-umbrella)
[![Downloads](https://static.pepy.tech/badge/maya-umbrella/month)](https://pepy.tech/project/maya-umbrella)
[![Downloads](https://static.pepy.tech/badge/maya-umbrella/week)](https://pepy.tech/project/maya-umbrella)
[![License](https://img.shields.io/pypi/l/maya-umbrella)](https://pypi.org/project/maya-umbrella/)
[![PyPI Format](https://img.shields.io/pypi/format/maya-umbrella)](https://pypi.org/project/maya-umbrella/)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/loonghao/maya-umbrella/graphs/commit-activity)
[![maya-2024](https://img.shields.io/badge/maya-2024-green)](https://img.shields.io/badge/maya-2024-green)
[![maya-2023](https://img.shields.io/badge/maya-2023-green)](https://img.shields.io/badge/maya-2023-green)
[![maya-2022](https://img.shields.io/badge/maya-2022-green)](https://img.shields.io/badge/maya-2022-green)
[![maya-2021](https://img.shields.io/badge/maya-2021-green)](https://img.shields.io/badge/maya-2021-green)
[![maya-2020](https://img.shields.io/badge/maya-2020-green)](https://img.shields.io/badge/maya-2020-green)
[![maya-2019](https://img.shields.io/badge/maya-2019-green)](https://img.shields.io/badge/maya-2019-green)
[![maya-2018](https://img.shields.io/badge/maya-2018-green)](https://img.shields.io/badge/maya-2018-green)

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

This tool is designed to provide a robust solution for identifying and resolving any potential viruses within Autodesk
Maya.
It ensures a secure and seamless user experience by proactively scanning for threats and effectively neutralizing them.

It can be provided as an API for seamless integration into your existing pipeline.

# 安装

## pip 安装
maya_umbrella是以标准pipy包去发布的,所以我们可以通过pip install去安装
```shell
your/maya-root/mayapy -m pip install maya-umbrella
```
## 一键安装
在release里面下载对应版本的zip包,解压后双击`install.bat`即可安装

更新版本
```shell
your/maya-root/mayapy -m pip install maya-umbrella --upgrade
```
卸载
```shell
your/maya-root/mayapy -m pip uninstall  maya-umbrella
```

# 开发环境设置

Set up the development environment using a virtual environment,
and it is recommended to use Python 3.8 or higher versions.

通过虚拟环境去设置开发环境, 推荐python-3.8以上的版本

通过pip安装相关开发依赖

```shell
pip install -r requirements-dev.txt
```

# 开发调试


## 在maya中测试

通过`nox -s maya -- <maya version>`, 启动maya.
nox会动态根据你本地安装得maya去注册nox session, 比如你本地安装了`maya-2020`,
那么通过可以启动带有测试环境的maya
```shell
nox -s maya -- 2018
```

**注意:maya 与 版本号之间有 俩个`-`**

启动maya后在脚本编辑器中执行下面得代码,就会动态的从`<repo>/tests/virus/`里面去open ma文件去进行测试.

```python
import manual_test_in_maya

manual_test_in_maya.start()
```

也可以通过pytest去执行对应的测试,也需要本地安装了对应的maya

```shell
nox -s maya -- 2018 --test
```

**注意:在maya-2022 (PY2) 以下的版本可能会出现命令行crash的情况**


## 增加新的疫苗

在`<repo>/maya_umbrella/vaccines/` 新建一个py, 因为有很多病毒没有具体的名字代号,我们统一以`vaccine<id>.py`
继承`from maya_umbrella.vaccine import AbstractVaccine`并且class名字叫`Vaccine`即可, 然后去写具体的收集病毒逻辑

## 代码检查

我们可以利用封装好的`nox`命令去执行进行代码检查

```shell
nox -s lint
```

进行代码整理
```shell
nox -s lint-fix
```

# 生成安装包

执行下面的命令可以在<repo>/.zip下面创建zip,参数 `--version` 当前工具的版本号

**注意:`make-zip` 与 `--version`之间有 俩个`-`**

```shell
nox -s make-zip -- --version 0.5.0
```

# 环境变量

我们可以通过下列环境变量去修改maya_umbrella的一些设置,方便有pipeline的公司可以更好的集成

修改maya umbrella的日志保存目录,默认是windows temp目录

```shell
MAYA_UMBRELLA_LOG_ROOT
```

修改maya umbrella的日志文件名称, 默认是`maya_umbrella`

```shell
MAYA_UMBRELLA_LOG_NAME
```

设置日志级别,默认是info, 可以是debug可以看到更多的日志信息

```shell
MAYA_UMBRELLA_LOG_LEVEL
```
修改杀毒后文件的备份文件夹名称, 默认是`_virus`
比如:
你文件路径是  `c:/your/path/file.ma`
那么备份文件路径是 `c:/your/path/_virus/file.ma`
```shell
MAYA_UMBRELLA_BACKUP_FOLDER_NAME
```
默认的显示语言,包含日志打印输出等,默认是根据你当前maya的界面语言来设置的,当然我们也可以通过下面的环境变量去设置
```shell
MAYA_UMBRELLA_LANG
```

忽略保存到备份文件夹,*请注意,如果你不清楚这个会导致的后果请不要轻易修改*,默认批量杀毒后会把源文件自动备份到当前文件的备份文件夹.
```shell
MAYA_UMBRELLA_IGNORE_BACKUP
```

如果忽略请设置为
```shell
SET MAYA_UMBRELLA_IGNORE_BACKUP=true
```

如果是便携版Maya,可以通过添加 `MAYA_LOCATION` 环境变量指定Maya路径
```shell
SET MAYA_LOCATION=d:/your/path/maya_version/
```
也可以通过命令行指定目录

```shell
nox -s maya -- 2018 --install-root /your/local/maya/root

```

# API
获取当前场景没有被修复的病毒文件

```python
from maya_umbrella import MayaVirusDefender

api = MayaVirusDefender()
print(api.get_unfixed_references())
```

批量修复文件, 通过正则表达式
```python
from maya_umbrella import MayaVirusScanner

api = MayaVirusScanner()
print(api.scan_files_from_pattern("your/path/*.m[ab]"))

```

# 案例
如果你想要快速通过maya standalone去批量清理maya文件,
可以`下载`或者`git clone`当前`main`分支的工程,
根据上面指引设置好开发环境,
通过`nox`命令去启动maya `standalone`环境,maya版本根据你当前本地安装的maya为准,
比如你本地安装了`2018`,
那么就是 `nox -s maya -- 2018 --standalone`
下面的语法是启动一个maya-2020的环境去动态从`c:/test`文件夹下去查杀病毒

```shell
nox -s maya -- 2018 --standalone --pattern c:/test/*.m[ab]
```

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/loonghao"><img src="https://avatars1.githubusercontent.com/u/13111745?v=4?s=100" width="100px;" alt="Hal"/><br /><sub><b>Hal</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=loonghao" title="Code">💻</a> <a href="#infra-loonghao" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/loonghao/maya_umbrella/commits?author=loonghao" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/hotwinter0"><img src="https://avatars.githubusercontent.com/u/106237305?v=4?s=100" width="100px;" alt="hotwinter0"/><br /><sub><b>hotwinter0</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=hotwinter0" title="Tests">⚠️</a> <a href="https://github.com/loonghao/maya_umbrella/commits?author=hotwinter0" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/lingyunfx"><img src="https://avatars.githubusercontent.com/u/73666629?v=4?s=100" width="100px;" alt="lingyunfx"/><br /><sub><b>lingyunfx</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=lingyunfx" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/yjjjj"><img src="https://avatars.githubusercontent.com/u/12741735?v=4?s=100" width="100px;" alt="yjjjj"/><br /><sub><b>yjjjj</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=yjjjj" title="Tests">⚠️</a> <a href="https://github.com/loonghao/maya_umbrella/commits?author=yjjjj" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/uncleschen"><img src="https://avatars.githubusercontent.com/u/37014389?v=4?s=100" width="100px;" alt="Unclechen"/><br /><sub><b>Unclechen</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=uncleschen" title="Tests">⚠️</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/CGRnDStudio"><img src="https://avatars.githubusercontent.com/u/8320794?v=4?s=100" width="100px;" alt="andyvfx"/><br /><sub><b>andyvfx</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=CGRnDStudio" title="Code">💻</a></td>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/cundesi"><img src="https://avatars.githubusercontent.com/u/15829469?v=4?s=100" width="100px;" alt="cundesi"/><br /><sub><b>cundesi</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=cundesi" title="Code">💻</a></td>
    </tr>
    <tr>
      <td align="center" valign="top" width="14.28%"><a href="https://github.com/Wenfeng-Zhang"><img src="https://avatars.githubusercontent.com/u/54899080?v=4?s=100" width="100px;" alt="Wenfeng Zhang"/><br /><sub><b>Wenfeng Zhang</b></sub></a><br /><a href="https://github.com/loonghao/maya_umbrella/commits?author=Wenfeng-Zhang" title="Tests">⚠️</a> <a href="https://github.com/loonghao/maya_umbrella/commits?author=Wenfeng-Zhang" title="Code">💻</a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://allcontributors.org) specification.
Contributions of any kind are welcome!


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/loonghao/maya_umbrella",
    "name": "maya-umbrella",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7",
    "maintainer_email": null,
    "keywords": "notifiers, python, Maya, dcc",
    "author": "longhao",
    "author_email": "hal.long@outlook.com",
    "download_url": "https://files.pythonhosted.org/packages/19/08/d75b0173bcf7f28442a1c508bc1e826e5452948d0ef8db3815e908e7f2db/maya_umbrella-0.13.0.tar.gz",
    "platform": null,
    "description": "# maya-umbrella\n\n[![Python Version](https://img.shields.io/pypi/pyversions/maya-umbrella)](https://img.shields.io/pypi/pyversions/maya-umbrella)\n[![Nox](https://img.shields.io/badge/%F0%9F%A6%8A-Nox-D85E00.svg)](https://github.com/wntrblm/nox)\n[![PyPI Version](https://img.shields.io/pypi/v/maya-umbrella?color=green)](https://pypi.org/project/maya-umbrella/)\n[![Downloads](https://static.pepy.tech/badge/maya-umbrella)](https://pepy.tech/project/maya-umbrella)\n[![Downloads](https://static.pepy.tech/badge/maya-umbrella/month)](https://pepy.tech/project/maya-umbrella)\n[![Downloads](https://static.pepy.tech/badge/maya-umbrella/week)](https://pepy.tech/project/maya-umbrella)\n[![License](https://img.shields.io/pypi/l/maya-umbrella)](https://pypi.org/project/maya-umbrella/)\n[![PyPI Format](https://img.shields.io/pypi/format/maya-umbrella)](https://pypi.org/project/maya-umbrella/)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/loonghao/maya-umbrella/graphs/commit-activity)\n[![maya-2024](https://img.shields.io/badge/maya-2024-green)](https://img.shields.io/badge/maya-2024-green)\n[![maya-2023](https://img.shields.io/badge/maya-2023-green)](https://img.shields.io/badge/maya-2023-green)\n[![maya-2022](https://img.shields.io/badge/maya-2022-green)](https://img.shields.io/badge/maya-2022-green)\n[![maya-2021](https://img.shields.io/badge/maya-2021-green)](https://img.shields.io/badge/maya-2021-green)\n[![maya-2020](https://img.shields.io/badge/maya-2020-green)](https://img.shields.io/badge/maya-2020-green)\n[![maya-2019](https://img.shields.io/badge/maya-2019-green)](https://img.shields.io/badge/maya-2019-green)\n[![maya-2018](https://img.shields.io/badge/maya-2018-green)](https://img.shields.io/badge/maya-2018-green)\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[![All Contributors](https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square)](#contributors-)\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\nThis tool is designed to provide a robust solution for identifying and resolving any potential viruses within Autodesk\nMaya.\nIt ensures a secure and seamless user experience by proactively scanning for threats and effectively neutralizing them.\n\nIt can be provided as an API for seamless integration into your existing pipeline.\n\n# \u5b89\u88c5\n\n## pip \u5b89\u88c5\nmaya_umbrella\u662f\u4ee5\u6807\u51c6pipy\u5305\u53bb\u53d1\u5e03\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7pip install\u53bb\u5b89\u88c5\n```shell\nyour/maya-root/mayapy -m pip install maya-umbrella\n```\n## \u4e00\u952e\u5b89\u88c5\n\u5728release\u91cc\u9762\u4e0b\u8f7d\u5bf9\u5e94\u7248\u672c\u7684zip\u5305\uff0c\u89e3\u538b\u540e\u53cc\u51fb`install.bat`\u5373\u53ef\u5b89\u88c5\n\n\u66f4\u65b0\u7248\u672c\n```shell\nyour/maya-root/mayapy -m pip install maya-umbrella --upgrade\n```\n\u5378\u8f7d\n```shell\nyour/maya-root/mayapy -m pip uninstall  maya-umbrella\n```\n\n# \u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\n\nSet up the development environment using a virtual environment,\nand it is recommended to use Python 3.8 or higher versions.\n\n\u901a\u8fc7\u865a\u62df\u73af\u5883\u53bb\u8bbe\u7f6e\u5f00\u53d1\u73af\u5883, \u63a8\u8350python-3.8\u4ee5\u4e0a\u7684\u7248\u672c\n\n\u901a\u8fc7pip\u5b89\u88c5\u76f8\u5173\u5f00\u53d1\u4f9d\u8d56\n\n```shell\npip install -r requirements-dev.txt\n```\n\n# \u5f00\u53d1\u8c03\u8bd5\n\n\n## \u5728maya\u4e2d\u6d4b\u8bd5\n\n\u901a\u8fc7`nox -s maya -- <maya version>`, \u542f\u52a8maya.\nnox\u4f1a\u52a8\u6001\u6839\u636e\u4f60\u672c\u5730\u5b89\u88c5\u5f97maya\u53bb\u6ce8\u518cnox session, \u6bd4\u5982\u4f60\u672c\u5730\u5b89\u88c5\u4e86`maya-2020`\uff0c\n\u90a3\u4e48\u901a\u8fc7\u53ef\u4ee5\u542f\u52a8\u5e26\u6709\u6d4b\u8bd5\u73af\u5883\u7684maya\n```shell\nnox -s maya -- 2018\n```\n\n**\u6ce8\u610f\uff1amaya \u4e0e \u7248\u672c\u53f7\u4e4b\u95f4\u6709 \u4fe9\u4e2a`-`**\n\n\u542f\u52a8maya\u540e\u5728\u811a\u672c\u7f16\u8f91\u5668\u4e2d\u6267\u884c\u4e0b\u9762\u5f97\u4ee3\u7801\uff0c\u5c31\u4f1a\u52a8\u6001\u7684\u4ece`<repo>/tests/virus/`\u91cc\u9762\u53bbopen ma\u6587\u4ef6\u53bb\u8fdb\u884c\u6d4b\u8bd5.\n\n```python\nimport manual_test_in_maya\n\nmanual_test_in_maya.start()\n```\n\n\u4e5f\u53ef\u4ee5\u901a\u8fc7pytest\u53bb\u6267\u884c\u5bf9\u5e94\u7684\u6d4b\u8bd5\uff0c\u4e5f\u9700\u8981\u672c\u5730\u5b89\u88c5\u4e86\u5bf9\u5e94\u7684maya\n\n```shell\nnox -s maya -- 2018 --test\n```\n\n**\u6ce8\u610f\uff1a\u5728maya-2022 (PY2) \u4ee5\u4e0b\u7684\u7248\u672c\u53ef\u80fd\u4f1a\u51fa\u73b0\u547d\u4ee4\u884ccrash\u7684\u60c5\u51b5**\n\n\n## \u589e\u52a0\u65b0\u7684\u75ab\u82d7\n\n\u5728`<repo>/maya_umbrella/vaccines/` \u65b0\u5efa\u4e00\u4e2apy, \u56e0\u4e3a\u6709\u5f88\u591a\u75c5\u6bd2\u6ca1\u6709\u5177\u4f53\u7684\u540d\u5b57\u4ee3\u53f7\uff0c\u6211\u4eec\u7edf\u4e00\u4ee5`vaccine<id>.py`\n\u7ee7\u627f`from maya_umbrella.vaccine import AbstractVaccine`\u5e76\u4e14class\u540d\u5b57\u53eb`Vaccine`\u5373\u53ef, \u7136\u540e\u53bb\u5199\u5177\u4f53\u7684\u6536\u96c6\u75c5\u6bd2\u903b\u8f91\n\n## \u4ee3\u7801\u68c0\u67e5\n\n\u6211\u4eec\u53ef\u4ee5\u5229\u7528\u5c01\u88c5\u597d\u7684`nox`\u547d\u4ee4\u53bb\u6267\u884c\u8fdb\u884c\u4ee3\u7801\u68c0\u67e5\n\n```shell\nnox -s lint\n```\n\n\u8fdb\u884c\u4ee3\u7801\u6574\u7406\n```shell\nnox -s lint-fix\n```\n\n# \u751f\u6210\u5b89\u88c5\u5305\n\n\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\u53ef\u4ee5\u5728<repo>/.zip\u4e0b\u9762\u521b\u5efazip\uff0c\u53c2\u6570 `--version` \u5f53\u524d\u5de5\u5177\u7684\u7248\u672c\u53f7\n\n**\u6ce8\u610f\uff1a`make-zip` \u4e0e `--version`\u4e4b\u95f4\u6709 \u4fe9\u4e2a`-`**\n\n```shell\nnox -s make-zip -- --version 0.5.0\n```\n\n# \u73af\u5883\u53d8\u91cf\n\n\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4e0b\u5217\u73af\u5883\u53d8\u91cf\u53bb\u4fee\u6539maya_umbrella\u7684\u4e00\u4e9b\u8bbe\u7f6e\uff0c\u65b9\u4fbf\u6709pipeline\u7684\u516c\u53f8\u53ef\u4ee5\u66f4\u597d\u7684\u96c6\u6210\n\n\u4fee\u6539maya umbrella\u7684\u65e5\u5fd7\u4fdd\u5b58\u76ee\u5f55\uff0c\u9ed8\u8ba4\u662fwindows temp\u76ee\u5f55\n\n```shell\nMAYA_UMBRELLA_LOG_ROOT\n```\n\n\u4fee\u6539maya umbrella\u7684\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0, \u9ed8\u8ba4\u662f`maya_umbrella`\n\n```shell\nMAYA_UMBRELLA_LOG_NAME\n```\n\n\u8bbe\u7f6e\u65e5\u5fd7\u7ea7\u522b\uff0c\u9ed8\u8ba4\u662finfo, \u53ef\u4ee5\u662fdebug\u53ef\u4ee5\u770b\u5230\u66f4\u591a\u7684\u65e5\u5fd7\u4fe1\u606f\n\n```shell\nMAYA_UMBRELLA_LOG_LEVEL\n```\n\u4fee\u6539\u6740\u6bd2\u540e\u6587\u4ef6\u7684\u5907\u4efd\u6587\u4ef6\u5939\u540d\u79f0\uff0c \u9ed8\u8ba4\u662f`_virus`\n\u6bd4\u5982:\n\u4f60\u6587\u4ef6\u8def\u5f84\u662f  `c:/your/path/file.ma`\n\u90a3\u4e48\u5907\u4efd\u6587\u4ef6\u8def\u5f84\u662f `c:/your/path/_virus/file.ma`\n```shell\nMAYA_UMBRELLA_BACKUP_FOLDER_NAME\n```\n\u9ed8\u8ba4\u7684\u663e\u793a\u8bed\u8a00\uff0c\u5305\u542b\u65e5\u5fd7\u6253\u5370\u8f93\u51fa\u7b49\uff0c\u9ed8\u8ba4\u662f\u6839\u636e\u4f60\u5f53\u524dmaya\u7684\u754c\u9762\u8bed\u8a00\u6765\u8bbe\u7f6e\u7684\uff0c\u5f53\u7136\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u7684\u73af\u5883\u53d8\u91cf\u53bb\u8bbe\u7f6e\n```shell\nMAYA_UMBRELLA_LANG\n```\n\n\u5ffd\u7565\u4fdd\u5b58\u5230\u5907\u4efd\u6587\u4ef6\u5939\uff0c*\u8bf7\u6ce8\u610f\uff0c\u5982\u679c\u4f60\u4e0d\u6e05\u695a\u8fd9\u4e2a\u4f1a\u5bfc\u81f4\u7684\u540e\u679c\u8bf7\u4e0d\u8981\u8f7b\u6613\u4fee\u6539*\uff0c\u9ed8\u8ba4\u6279\u91cf\u6740\u6bd2\u540e\u4f1a\u628a\u6e90\u6587\u4ef6\u81ea\u52a8\u5907\u4efd\u5230\u5f53\u524d\u6587\u4ef6\u7684\u5907\u4efd\u6587\u4ef6\u5939.\n```shell\nMAYA_UMBRELLA_IGNORE_BACKUP\n```\n\n\u5982\u679c\u5ffd\u7565\u8bf7\u8bbe\u7f6e\u4e3a\n```shell\nSET MAYA_UMBRELLA_IGNORE_BACKUP=true\n```\n\n\u5982\u679c\u662f\u4fbf\u643a\u7248Maya\uff0c\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0 `MAYA_LOCATION` \u73af\u5883\u53d8\u91cf\u6307\u5b9aMaya\u8def\u5f84\n```shell\nSET MAYA_LOCATION=d:/your/path/maya_version/\n```\n\u4e5f\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4\u884c\u6307\u5b9a\u76ee\u5f55\n\n```shell\nnox -s maya -- 2018 --install-root /your/local/maya/root\n\n```\n\n# API\n\u83b7\u53d6\u5f53\u524d\u573a\u666f\u6ca1\u6709\u88ab\u4fee\u590d\u7684\u75c5\u6bd2\u6587\u4ef6\n\n```python\nfrom maya_umbrella import MayaVirusDefender\n\napi = MayaVirusDefender()\nprint(api.get_unfixed_references())\n```\n\n\u6279\u91cf\u4fee\u590d\u6587\u4ef6, \u901a\u8fc7\u6b63\u5219\u8868\u8fbe\u5f0f\n```python\nfrom maya_umbrella import MayaVirusScanner\n\napi = MayaVirusScanner()\nprint(api.scan_files_from_pattern(\"your/path/*.m[ab]\"))\n\n```\n\n# \u6848\u4f8b\n\u5982\u679c\u4f60\u60f3\u8981\u5feb\u901f\u901a\u8fc7maya standalone\u53bb\u6279\u91cf\u6e05\u7406maya\u6587\u4ef6\uff0c\n\u53ef\u4ee5`\u4e0b\u8f7d`\u6216\u8005`git clone`\u5f53\u524d`main`\u5206\u652f\u7684\u5de5\u7a0b\uff0c\n\u6839\u636e\u4e0a\u9762\u6307\u5f15\u8bbe\u7f6e\u597d\u5f00\u53d1\u73af\u5883,\n\u901a\u8fc7`nox`\u547d\u4ee4\u53bb\u542f\u52a8maya `standalone`\u73af\u5883\uff0cmaya\u7248\u672c\u6839\u636e\u4f60\u5f53\u524d\u672c\u5730\u5b89\u88c5\u7684maya\u4e3a\u51c6\uff0c\n\u6bd4\u5982\u4f60\u672c\u5730\u5b89\u88c5\u4e86`2018`,\n\u90a3\u4e48\u5c31\u662f `nox -s maya -- 2018 --standalone`\n\u4e0b\u9762\u7684\u8bed\u6cd5\u662f\u542f\u52a8\u4e00\u4e2amaya-2020\u7684\u73af\u5883\u53bb\u52a8\u6001\u4ece`c:/test`\u6587\u4ef6\u5939\u4e0b\u53bb\u67e5\u6740\u75c5\u6bd2\n\n```shell\nnox -s maya -- 2018 --standalone --pattern c:/test/*.m[ab]\n```\n\n## Contributors \u2728\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/loonghao\"><img src=\"https://avatars1.githubusercontent.com/u/13111745?v=4?s=100\" width=\"100px;\" alt=\"Hal\"/><br /><sub><b>Hal</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=loonghao\" title=\"Code\">\ud83d\udcbb</a> <a href=\"#infra-loonghao\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">\ud83d\ude87</a> <a href=\"https://github.com/loonghao/maya_umbrella/commits?author=loonghao\" title=\"Tests\">\u26a0\ufe0f</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/hotwinter0\"><img src=\"https://avatars.githubusercontent.com/u/106237305?v=4?s=100\" width=\"100px;\" alt=\"hotwinter0\"/><br /><sub><b>hotwinter0</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=hotwinter0\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/loonghao/maya_umbrella/commits?author=hotwinter0\" title=\"Code\">\ud83d\udcbb</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/lingyunfx\"><img src=\"https://avatars.githubusercontent.com/u/73666629?v=4?s=100\" width=\"100px;\" alt=\"lingyunfx\"/><br /><sub><b>lingyunfx</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=lingyunfx\" title=\"Tests\">\u26a0\ufe0f</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/yjjjj\"><img src=\"https://avatars.githubusercontent.com/u/12741735?v=4?s=100\" width=\"100px;\" alt=\"yjjjj\"/><br /><sub><b>yjjjj</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=yjjjj\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/loonghao/maya_umbrella/commits?author=yjjjj\" title=\"Code\">\ud83d\udcbb</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/uncleschen\"><img src=\"https://avatars.githubusercontent.com/u/37014389?v=4?s=100\" width=\"100px;\" alt=\"Unclechen\"/><br /><sub><b>Unclechen</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=uncleschen\" title=\"Tests\">\u26a0\ufe0f</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/CGRnDStudio\"><img src=\"https://avatars.githubusercontent.com/u/8320794?v=4?s=100\" width=\"100px;\" alt=\"andyvfx\"/><br /><sub><b>andyvfx</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=CGRnDStudio\" title=\"Code\">\ud83d\udcbb</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/cundesi\"><img src=\"https://avatars.githubusercontent.com/u/15829469?v=4?s=100\" width=\"100px;\" alt=\"cundesi\"/><br /><sub><b>cundesi</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=cundesi\" title=\"Code\">\ud83d\udcbb</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Wenfeng-Zhang\"><img src=\"https://avatars.githubusercontent.com/u/54899080?v=4?s=100\" width=\"100px;\" alt=\"Wenfeng Zhang\"/><br /><sub><b>Wenfeng Zhang</b></sub></a><br /><a href=\"https://github.com/loonghao/maya_umbrella/commits?author=Wenfeng-Zhang\" title=\"Tests\">\u26a0\ufe0f</a> <a href=\"https://github.com/loonghao/maya_umbrella/commits?author=Wenfeng-Zhang\" title=\"Code\">\ud83d\udcbb</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://allcontributors.org) specification.\nContributions of any kind are welcome!\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Check and fix maya virus.",
    "version": "0.13.0",
    "project_urls": {
        "Documentation": "https://github.com/loonghao/maya_umbrella",
        "Homepage": "https://github.com/loonghao/maya_umbrella",
        "Repository": "https://github.com/loonghao/maya_umbrella"
    },
    "split_keywords": [
        "notifiers",
        " python",
        " maya",
        " dcc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f556b20e610bdae2fbee73d5194edaebcf5378497282fb43a49f2ee2b44c43e",
                "md5": "dbbc4ba226cf9a775416da5220f52851",
                "sha256": "dad2907cef2e069306a2ec6e9979d8361db794b768aee0154fb97fb5dd32940d"
            },
            "downloads": -1,
            "filename": "maya_umbrella-0.13.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "dbbc4ba226cf9a775416da5220f52851",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7",
            "size": 41005,
            "upload_time": "2024-05-16T16:39:56",
            "upload_time_iso_8601": "2024-05-16T16:39:56.884346Z",
            "url": "https://files.pythonhosted.org/packages/4f/55/6b20e610bdae2fbee73d5194edaebcf5378497282fb43a49f2ee2b44c43e/maya_umbrella-0.13.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1908d75b0173bcf7f28442a1c508bc1e826e5452948d0ef8db3815e908e7f2db",
                "md5": "44f2f1f8caea1d506a086b6a93651c3a",
                "sha256": "a43b0420d80ce9109f9226317245bcb42aa448263865c077831de464b337f73e"
            },
            "downloads": -1,
            "filename": "maya_umbrella-0.13.0.tar.gz",
            "has_sig": false,
            "md5_digest": "44f2f1f8caea1d506a086b6a93651c3a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7",
            "size": 34821,
            "upload_time": "2024-05-16T16:39:58",
            "upload_time_iso_8601": "2024-05-16T16:39:58.684845Z",
            "url": "https://files.pythonhosted.org/packages/19/08/d75b0173bcf7f28442a1c508bc1e826e5452948d0ef8db3815e908e7f2db/maya_umbrella-0.13.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-16 16:39:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "loonghao",
    "github_project": "maya_umbrella",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": true,
    "lcname": "maya-umbrella"
}
        
Elapsed time: 0.26135s