=============== License Types =============== .. contents:: Contents :depth: 2 :local: :backlinks: top .. highlight:: console This documentation is only apply to Pyarmor_ 8.0 plus. Pyarmor is published in `PyPI`_, free trial version never expires. Try it by the following commands:: $ pip install pyarmor $ pyarmor gen foo.py $ python dist/foo.py There are some limitations in free version, for example, can't obfuscate big scripts etc. These limitations can be unlocked by different license types. Pyarmor has 4 kind of licenses: - Basic - Pro: Irreversible Obfuscation - Group: Offline build - CI: for CI/CD pipeline, new in v9.0 .. list-table:: Table-1. Compare Different Licenses :widths: 40 12 12 12 12 12 :header-rows: 1 :stub-columns: 1 * - Feature - Free - Basic - Pro - Group - CI * - Big Script / Mix String [#]_ - - Y - Y - Y - Y * - BCC / RFT / FLY mode [#]_ - - - Y - Y - Y * - Offline build [#]_ - - - - Y - * - Maximum build devices [#]_ - - 100 - 100 - 200 - 0 * - Unlimited local dockers [#]_ - - - - Y - * - Work in CI/CD pipeline [#]_ - Y - Y - - - Y .. rubric:: Notes .. [#] - Big Script: file size exceeds a certain value. - Mix Str: obfuscating string constant in script .. [#] - RFT Mode: renaming function/class/method/variable in Python scripts - BCC Mode: Transforming some Python functions in scripts to c functions, compile them to machine instructions directly .. [#] Offline build: the build device need not be online to verify Pyarmor License .. [#] Maximum devices could install Pyarmor, each docker run will be taken as one new build device, CI license only works in CI/CD pipeline .. [#] Unlimited local dockers: run docker container in local machine, may be offline or in private network .. [#] Work in CI/CD pipeline: it need special option to register Pyarmor in CI/CD pipeline. .. important:: CI license doesn't work in the runner which has its own disk. If the runner is not docker container, use Pro license instead. .. important:: All Pyarmor Licenses are only used to generate the obfuscated scripts in build device It need neither install Pyarmor nor verify Pyarmor License to execute obfuscated scripts The obfuscated scripts are generated by Pyarmor, but they are completely independent of Pyarmor You can take them as normal Python scripts, so what the obfuscated scripts do is controlled by you, not by Pyarmor Terms of Use ============ 1. Only use Pyarmor on your own scripts In any case, even you have purchased Pyarmor License, it's not allowed to obfuscate other scripts of which you haven't property. For example, call pyarmor in your app to obfuscate your customer's scripts, provide obfuscation services based on Pyarmor by website etc. 2. No profit no license required Free version can be used to obfuscate your scripts which COULD NOT make lot of money for you. Otherwise it need purchase Pyarmor License. 3. One product one license One product means one kind of product, not one copy of product. For example, Micorsoft Excel is one product, even it's installed on countless devices Each license has an unique number, the format is ``pyarmor-vax-xxxxxx``, which x stands for a digital. 4. Pay once Except CI License, all the other licenses work forever with Pyarmor version when this license is purchased, but **may not work in future Pyarmor versions** 5. Fair use If you have purchased Pyarmor License for one product, but you have another product, and the total revenue of the other project is less than 100 x Pyarmor License fee, you could rent this license in your aother product Pyarmor CI License has rate limit in CI/CD pipeline: - 1 run per second - 100 runs per hour - 1,000 runs per day - 10,000 runs per month In details check `Pyarmor EULA`_ .. seealso:: :doc:`Using Pyarmor Licenses ` Privacy ======= License No. and product name will be embedded into obfuscated scripts, all the other user's information, for example, regname, email are not For Pyarmor Basic and Pro License, only Pyarmor License file, serial number of hard disk, Ethernet address, IPv4/IPv6 address, and hostname will be sent to Pyarmor License Server for verification When using Basic or CI License in CI/CD pipeline, some information about docker like docker name, ethernet address, IPv4/IPv6 address, and license information will be sent to Pyarmor License Server for verification No any user script will be uploaded to Pyarmor License Server Technical Support ================= License fees only for unlock features, not include technical supports Users need to learn Pyarmor features and how to use it by themself. Generally Pyarmor Team won't help to debug users' case and teach them how to use Pyarmor Pyarmor provides comprehensive learning systems, including but not limited to the following ways: - :doc:`Online documentation ` - :doc:`Checklist ` and :doc:`FAQs ` could fix 90% issues reported to Pyarmor Team - `Discussions`_ in Pyarmor project home - Full examples to show each option usage and common cases by command ``pyarmor man`` - Learn Pyarmor concepts by figure and animations in EKE Learning Platform (coming soon) Rome was not bulit in a day. Pyarmor Team keeps improving documentation and learning systems according to users feedback to make it easy and effects Report bugs and request new features in Pyarmor project home, Email to pyarmor@163.com is only for security and private issues, there may no reply for common technical issues. Pyarmor team generally will handle submitted issues within 24 hours (working time), but may be extended during holidays or special circumstances Pyarmor Team doesn't provide any instant technical support by telphone or other similar tools. Purchasing license ================== If you have Pyarmor 8.6+ installed, this command also could open shopping cart:: $ pyarmor reg --buy Open `Pyarmor Shopping Cart`_ in any web browser: https://jondy.github.io/paypal/index.html All of these license are only for Pyarmor 8.0+ with Python 3.7+, if need work with Pyarmor 7.x which supports Python < 3.7, please purchase `Pyarmor Old License`: https://jondy.github.io/paypal/obsolete.html Refund policy ============= If activation file isn't used, and purchasing date is in 30 days, refund is acceptable. - If purchasing order from reseller, contact your reseller - For other cases, email to pyarmor@163.com - Pyarmor Team may charge 5% fee for some refund cases. Out of 30 days, or activation file has been used, refund request will be rejected. Appendix ======== What is one product ------------------- First of all, if not for sale, all the Python scripts are belong to one product "non-profits". One product in Pyarmor world means a product name and everything that makes up this name. It includes all the devices to develop, build, debug, test product. It also includes product current version, history versions and all the future versions. One product may has several variants, each variant name is composed of product name plus feature name. As long as the proportion of the variable part is far less than that of the common part, they're considered as "one product". Pyarmor is one product, it includes: * Pyarmor basic, Pyarmor pro, and Pyarmor group * pyarmor-webui which provides graphics interface for pyarmor. * the order system of Pyarmor is a Django's app running in cloud-server. This Django's app also belongs to one product Pyarmor. * the laptop used to develop Pyarmor, the PCs used to test Pyarmor, the cloud-server to serve order system of Pyarmor, all of them belong to one product Pyarmor. * Pyarmor 7.x, Pyarmor 8.x and Pyarmor 9.x Microsoft Office is not one product, because each product in Microsoft Office is functional independence. For example, Microsoft Word and Microsoft Excel belong to Microsoft Office, but they're totally different. Microsoft Word is one product, and Microsoft Word 2003,Word 2007 etc. are belong to one product Microsoft word. .. _select-license-type: Which license type is right for me ---------------------------------- All of the following licenses are only for Python 3.7+ .. list-table:: Table-2. Select Different Licenses :widths: 40 12 12 12 12 12 :header-rows: 1 :stub-columns: 1 * - Condition - Free - Basic - Pro - Group - CI * - Less than 100 runs per month in CI/CD pipeline - Y - Y - Y - - Y * - More than 100 runs per month in CI/CD pipeline - Y - Y - - - Y * - Need offline obfuscation - Y - - - Y - * - Need irreversible obfuscation - - - Y - Y - Y * - Less than 100 runs per month in local dockers - Y - Y - Y - Y - Y * - More than 100 runs per month in local dockers - Y - Y - - Y - Y .. _how-many-licenses-required: How many licenses are required ------------------------------ 1. List all the products which are sold separately - If the sales revenue of the product is less than 100 x Pyarmor license fee, there is no need to list the product - If no more than 2 products left, one license is OK 2. How to tell diffenent product could be taken as one proudct in Pyarmor view Suppose there are 2 products in step 1: X and Y a. case 1, X and Y could use one license - Y includes whole X features - The extra features of Y is related to X features For example, Pyarmor Basic (X), Pyarmor Pro (Y) could use one license because - Pyarmor Pro includes all the features of Pyarmor Basic - The extra features of Pyarmor Pro is irreversible obfuscation which is an enhancement of Pyarmor Basic b. case 2, X and Y need 2 licenses - Y includes whole X features - But X features is very small in the Y features For example, X is a facial recognition product, B is an attendance management system that uses facial recognition functionality c. case 3, X and Y could use one license - Y is a functional supplement for product X For example, X is CAD Editor, Y is CAD Tool which is used to convert CAD file to PDF file d. case 4, X and Y need 2 licenses - The functions of X and Y are almost independent For example, Microsoft Word (X), Micorsoft Excel (Y) are 2 products, even they're belong to Micorsoft Office Suite 3. Regard to shared backend system There are 2 product A and B, share one backend engineer C a. case 1: need obfuscate backend C, but frontend of A and B need not - one license for backend C is OK b. case 2: need obfuscate backend C, and the frontend of A and B - 2 licenses, one for A, another for B - C need not new license, use any license for A or B 4. Many products need use one license in technical If there are many products (in Pyarmor view) need use one Pyarmor license in development view, it should - Purchase many licenses - Register each product with different license once - Use one of registeration file to generate the obfuscated scripts for all the products .. _how-to-upgrade-license: How to upgrade Pyarmor Licenses ------------------------------- Now it doesn't support to upgrade one Pyarmor License to any other Pyarmor License. For example, upgrade Pyarmor Basic to Pyarmor Pro by paying price difference There are only the following special cases - Pyarmor Old License used by Pyarmor <= 7.x could be upgrade to Pyarmor Basic License in some conditions - If upgrading Pyarmor v8 to v9, Pyarmor License need to be re-activated Please refer to `What need to do after upgrading Pyarmor `_ In short, if it could be upgraded successfully by the guide in the documentation, it's OK. If something is wrong, this license can't be upgraded. Pyarmor Team doesn't handle this kind of request, there may be no any reply. Q & A ----- **I have just started selling my product, do I can use Pyarmor trial version to product it** Before the value of sales exceed 100 x Pyarmor license fee, Pyarmor trial version can be used to obfuscate the product. After the value of sales exceed, it need purchase Pyarmor license. **I noticed that the pricing table lists "0 Maximum build devices," for the CI/CD plan which has left me a bit confused. Could you please clarify what this means?** It means CI License only works in CI/CD pipeline, can’t be used in local device. **If we are using the product in our CI/CD environment we can deploy it to unlimited number of kubernetes pods** If the product means the obfuscated scripts, Pyarmor has no any limitation on it. Pyarmor License is only apply to build machine in which to generate the obfuscated scripts. .. include:: _common_definitions.txt