5. License Types

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

Table-1. Compare Different Licenses

Feature

Free

Basic

Pro

Group

CI

Big Script / Mix String 1

Y

Y

Y

Y

BCC / RFT / FLY mode 2

Y

Y

Y

Offline build 3

Y

Maximum build devices 4

100

100

200

0

Unlimited local dockers 5

Y

Work in CI/CD pipeline 6

Y

Y

Y

Notes

1
  • Big Script: file size exceeds a certain value.

  • Mix Str: obfuscating string constant in script

2
  • 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

3

Offline build: the build device need not be online to verify Pyarmor License

4

Maximum devices could install Pyarmor, each docker run will be taken as one new build device, CI license only works in CI/CD pipeline

5

Unlimited local dockers: run docker container in local machine, may be offline or in private network

6

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

5.1. 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 Pro License still could be used in CI/CD pipeline for low volume (100 runs per month)

    Pyarmor CI License has rate limit in CI/CD pipeline

In details check Pyarmor EULA

5.2. 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

5.3. 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:

  • Online documentation

  • Checklist and 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.

5.4. 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:

All of these license are only for Python 3.7+, if need Python < 3.7, please purchase old license <https://jondy.github.io/paypal/obsolete.html>

5.5. Refund policy

If activation file isn’t used, and purchasing date is in 30 days, refund is acceptable.

Out of 30 days, or activation file has been used, refund request will be rejected.

5.6. Appendix

5.6.1. 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.

5.6.2. Which license type is right for me

All of the following licenses are only for Python 3.7+

Table-2. Select Different Licenses

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

5.6.3. 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

    1. 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

    2. 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

    3. 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

    4. 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

    1. case 1: need obfuscate backend C, but frontend of A and B need not

      • one license for backend C is OK

    2. 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

5.6.4. 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.