Repository: seata/fescar-python (language: python)

Issue:
add apache license
todo:
1 add apache license on every files;
2 add NOTICE as https://github.com/apache/dubbo-go/blob/3.0/NOTICE;


Discussion / hints:
example https://github.com/seata/seata-go/pull/146

Fix patch:
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
new file mode 100644
index 0000000..3e01441
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -0,0 +1,19 @@
+---
+name: Bug Report
+about: Report a bug
+labels: kind/bug
+
+---
+
+<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!
+
+-->
+
+
+**What happened**:
+
+**What you expected to happen**:
+
+**How to reproduce it (as minimally and precisely as possible)**:
+
+**Anything else we need to know?**:
diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md
new file mode 100644
index 0000000..6d1a6d9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/enhancement.md
@@ -0,0 +1,11 @@
+---
+name: Enhancement Request
+about: Suggest an enhancement
+labels: kind/feature
+
+---
+<!-- Please only use this template for submitting enhancement requests -->
+
+**What would you like to be added**:
+
+**Why is this needed**:
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..3eb1ec0
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,24 @@
+<!--  Thanks for sending a pull request! 
+-->
+
+**What this PR does**:
+
+**Which issue(s) this PR fixes**:
+<!--
+*Automatically closes linked issue when PR is merged.
+Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
+_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
+-->
+Fixes #
+
+**Special notes for your reviewer**:
+
+**Does this PR introduce a user-facing change?**:
+<!--
+If no, just write "NONE" in the release-note block below.
+If yes, a release note is required:
+Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
+-->
+```release-note
+
+```
\ No newline at end of file
diff --git a/.github/auto-comment.yml b/.github/auto-comment.yml
new file mode 100644
index 0000000..8291eb8
--- /dev/null
+++ b/.github/auto-comment.yml
@@ -0,0 +1,26 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Comment to a new issue.
+issueOpened: >
+  Thank your for raising a issue. We will try and get back to you as soon as possible.
+  Please make sure you have given us as much context as possible.
+pullRequestOpened: >
+  Thank your for raising your pull request.
+  Please make sure you have followed our contributing guidelines. We will review it as soon as possible
diff --git a/.github/licenserc.yml b/.github/licenserc.yml
new file mode 100644
index 0000000..3062e83
--- /dev/null
+++ b/.github/licenserc.yml
@@ -0,0 +1,49 @@
+header:
+  license:
+    spdx-id: Apache-2.0
+    copyright-owner: Apache Software Foundation
+  content:
+     Licensed to the Apache Software Foundation (ASF) under one or more
+     contributor license agreements.  See the NOTICE file distributed with
+     this work for additional information regarding copyright ownership.
+     The ASF licenses this file to You under the Apache License, Version 2.0
+     (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
+      
+      http://www.apache.org/licenses/LICENSE-2.0
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+
+  pattern:
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+  paths-ignore:
+    - 'LICENSE'
+    - 'NOTICE'
+    - '.github/'
+    - 'tool/'
+    - '**/*.md'
+    - '**/*.txt'
+    - '**/*.yaml'
+    - '**/*.yml'
+    - '**/*.gitignore'
+    - '**/*.ini'
+    - '**/*.in'
+    - '**/*.cfg'
+    - '**/*.proto'
+  comment: on-failure
diff --git a/.github/workflows/license-checker.yml b/.github/workflows/license-checker.yml
new file mode 100644
index 0000000..2cafc5e
--- /dev/null
+++ b/.github/workflows/license-checker.yml
@@ -0,0 +1,44 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+name: License checker
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+  pull_request_target:
+    branches:
+      - master
+
+jobs:
+  check-license:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - name: Check License Header
+        uses: apache/skywalking-eyes@main
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          log: info
+          config: .github/licenserc.yml
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..cac5ddc
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,28 @@
+exclude: 'docs/|ext/'
+
+repos:
+- repo: https://github.com/pre-commit/pre-commit-hooks
+  rev: v4.0.1
+  hooks:
+  - id: check-yaml
+  - id: debug-statements
+  - id: end-of-file-fixer
+  - id: trailing-whitespace
+- repo: https://github.com/PyCQA/isort
+  rev: 5.10.1
+  hooks:
+    - id: isort
+- repo: https://github.com/psf/black
+  rev: 22.3.0
+  hooks:
+    - id: black
+      exclude: tests/test_lowlevel.py
+- repo: https://github.com/asottile/pyupgrade
+  rev: v2.31.1
+  hooks:
+    - id: pyupgrade
+      args: [--py37-plus]
+- repo: https://gitlab.com/pycqa/flake8
+  rev: 4.0.1
+  hooks:
+    - id: flake8
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..8683079
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,184 @@
+# Contributing to seata-python
+
+It is warmly welcomed if you have interest to hack on seata-python. First, we encourage this kind of willing very much. And here is a list of contributing guide for you.
+
+[[中文贡献文档](./CONTRIBUTING_CN.md)]
+
+## Topics
+
+* [Reporting general issues](#reporting-general-issues)
+* [Code and doc contribution](#code-and-doc-contribution)
+* [Test case contribution](#test-case-contribution)
+* [Engage to help anything](#engage-to-help-anything)
+* [Code Style](#code-style)
+
+## Reporting general issues
+
+To be honest, we regard every user of seata-python as a very kind contributor. After experiencing seata-python, you may have some feedback for the project. Then feel free to open an issue via [NEW ISSUE](https://github.com/seata/seata-python/issues/new/choose).
+
+Since we collaborate project seata-python in a distributed way, we appreciate **WELL-WRITTEN**, **DETAILED**, **EXPLICIT** issue reports. To make the communication more efficient, we wish everyone could search if your issue is an existing one in the searching list. If you find it existing, please add your details in comments under the existing issue instead of opening a brand new one.
+
+To make the issue details as standard as possible, we setup an [ISSUE TEMPLATE](./.github/ISSUE_TEMPLATE) for issue reporters. Please **BE SURE** to follow the instructions to fill fields in template.
+
+There are a lot of cases when you could open an issue:
+
+* bug report
+* feature request
+* performance issues
+* feature proposal
+* feature design
+* help wanted
+* doc incomplete
+* test improvement
+* any questions on project
+* and so on
+
+Also we must remind that when filling a new issue, please remember to remove the sensitive data from your post. Sensitive data could be password, secret key, network locations, private business data and so on.
+
+## Code and doc contribution
+
+Every action to make project seata-python better is encouraged. On GitHub, every improvement for seata-pyhton could be via a PR (short for pull request).
+
+* If you find a typo, try to fix it!
+* If you find a bug, try to fix it!
+* If you find some redundant codes, try to remove them!
+* If you find some test cases missing, try to add them!
+* If you could enhance a feature, please **DO NOT** hesitate!
+* If you find code implicit, try to add comments to make it clear!
+* If you find code ugly, try to refactor that!
+* If you can help to improve documents, it could not be better!
+* If you find document incorrect, just do it and fix that!
+* ...
+
+Actually it is impossible to list them completely. Just remember one principle:
+
+> WE ARE LOOKING FORWARD TO ANY PR FROM YOU.
+
+Since you are ready to improve seata-python with a PR, we suggest you could take a look at the PR rules here.
+
+* [Workspace Preparation](#workspace-preparation)
+* [Branch Definition](#branch-definition)
+* [Commit Rules](#commit-rules)
+* [PR Description](#pr-description)
+
+### Workspace Preparation
+
+To put forward a PR, we assume you have registered a GitHub ID. Then you could finish the preparation in the following steps:
+
+1. **FORK** seata-python to your repository. To make this work, you just need to click the button Fork in right-left of [seata/seata-python](https://github.com/seata/seata-python) main page. Then you will end up with your repository in `https://github.com/<your-username>/seata-python`, in which `your-username` is your GitHub username.
+
+1. **CLONE** your own repository to develop locally. Use `git clone git@github.com:<your-username>/seata-python.git` to clone repository to your local machine. Then you can create new branches to finish the change you wish to make.
+
+1. **Set Remote** upstream to be `git@github.com:seata/seata-python.git` using the following two commands:
+
+```bash
+git remote add upstream git@github.com:seata/seata-python.git
+git remote set-url --push upstream no-pushing
+```
+
+With this remote setting, you can check your git remote configuration like this:
+
+```shell
+$ git remote -v
+origin     git@github.com:<your-username>/seata-python.git (fetch)
+origin     git@github.com:<your-username>/seata-python.git (push)
+upstream   git@github.com:seata/seata-python.git (fetch)
+upstream   no-pushing (push)
+```
+
+Adding this, we can easily synchronize local branches with upstream branches.
+
+### Branch Definition
+
+Right now we assume every contribution via pull request is for [branch develop](https://github.com/seata/seata-python/tree/develop) in seata-python. Before contributing, be aware of branch definition would help a lot.
+
+As a contributor, keep in mind again that every contribution via pull request is for branch develop. While in project seata-python, there are several other branches, we generally call them release branches(such as 0.6.0,0.6.1), feature branches, hotfix branches and master branch.
+
+When officially releasing a version, there will be a release branch and named with the version number. 
+
+After the release, we will merge the commit of the release branch into the master branch.
+
+When we find that there is a bug in a certain version, we will decide to fix it in a later version or fix it in a specific hotfix version. When we decide to fix the hotfix version, we will checkout the hotfix branch based on the corresponding release branch, perform code repair and verification, and merge it into the develop branch and the master branch.
+
+For larger features, we will pull out the feature branch for development and verification.
+
+
+### Commit Rules
+
+Actually in seata-python, we take two rules serious when committing:
+
+* [Commit Message](#commit-message)
+* [Commit Content](#commit-content)
+
+#### Commit Message
+
+Commit message could help reviewers better understand what is the purpose of submitted PR. It could help accelerate the code review procedure as well. We encourage contributors to use **EXPLICIT** commit message rather than ambiguous message. In general, we advocate the following commit message type:
+
+* docs: xxxx. For example, "docs: add docs about seata-python cluster installation".
+* feature: xxxx.For example, "feature: support oracle in AT mode".
+* bugfix: xxxx. For example, "bugfix: fix error when input nil parameter".
+* refactor: xxxx. For example, "refactor: simplify to make codes more readable".
+* test: xxx. For example, "test: add unit test case for func InsertIntoArray".
+* other readable and explicit expression ways.
+
+On the other side, we discourage contributors from committing message like the following ways:
+
+* ~~fix bug~~
+* ~~update~~
+* ~~add doc~~
+
+If you get lost, please see [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) for a start.
+
+#### Commit Content
+
+Commit content represents all content changes included in one commit. We had better include things in one single commit which could support reviewer's complete review without any other commits' help. In another word, contents in one single commit can pass the CI to avoid code mess. In brief, there are three minor rules for us to keep in mind:
+
+* avoid very large change in a commit;
+* complete and reviewable for each commit.
+* check git config(`user.name`, `user.email`) when committing to ensure that it is associated with your GitHub ID.
+
+```bash
+git config --get user.name
+git config --get user.email
+```
+
+In addition, in the code change part, we suggest that all contributors should read the [code style of seata-python](#code-style).
+
+No matter commit message, or commit content, we do take more emphasis on code review.
+
+
+#### Format your code
+
+Before submitting the code, execute the script of formatting the code under the project root directory:
+
+~~~shell
+python -m pip install flake8
+flake8 path/seata-python
+~~~
+
+### PR Description
+
+PR is the only way to make change to seata-python project files. To help reviewers better get your purpose, PR description could not be too detailed. We encourage contributors to follow the [PR template](./.github/pull-request-template.md) to finish the pull request.
+
+## Test case contribution
+
+Any test case will be welcomed. Currently, seata-python functional test cases are of high priority.
+
+## Engage to help anything
+
+We choose GitHub as the primary place for seata-python to collaborate. So the latest updates of seata-python are always here. Although contributions via PR is an explicit way to help, we still call for any other ways.
+
+* reply to other's issues if you could;
+* help solve other user's problems;
+* help review other's PR design;
+* help review other's codes in PR;
+* discuss about seata-python to make things clearer;
+* advocate seata-python technology beyond GitHub;
+* write blogs on seata-python and so on.
+
+
+## Code Style
+
+Seata-python code style reference [Flask8](https://flake8.pycqa.org/en/latest/) 。
+
+In a word, **ANY HELP IS CONTRIBUTION.**
diff --git a/CONTRIBUTING_CN.md b/CONTRIBUTING_CN.md
new file mode 100644
index 0000000..a41998c
--- /dev/null
+++ b/CONTRIBUTING_CN.md
@@ -0,0 +1,184 @@
+# 为 seata-python 做贡献
+
+如果你有兴趣为 seata-python 贡献代码，我们会热烈欢迎。首先，我们非常鼓励这种意愿。这是为您提供的贡献指南列表。
+
+[[English Contributing Document](./CONTRIBUTING.md)]
+
+## 话题
+
+* [报告一般问题](#报告一般问题)
+
+[//]: # (* [代码和文档贡献]&#40;#代码和文档贡献&#41;)
+* [测试用例贡献](#测试用例贡献)
+* [参与帮助任何事情](#参与帮助任何事情)
+* [代码风格](#代码风格)
+
+## 报告一般问题
+
+老实说我们把每一个 seata-python 用户都视为非常善良的贡献者。在体验了 seata-python 之后，您可能会对项目有一些反馈。然后随时通过 [NEW ISSUE](https://github.com/seata/seata-python/issues/new/choose)打开一个问题。
+
+因为我们在一个分布式的方式合作项目 seata-python，我们欣赏写得很好的，详细的，准确的问题报告。为了让沟通更高效，我们希望每个人都可以搜索您的问题是否在搜索列表中。如果您发现它存在，请在现有问题下的评论中添加您的详细信息，而不是打开一个全新的问题。
+
+为了使问题细节尽可能标准，我们为问题报告者设置了一个[问题模板](./.github/ISSUE_TEMPLATE) 请务必按照说明填写模板中的字段。
+
+有很多情况你可以打开一个问题：
+
+* 错误报告
+* 功能要求
+* 性能问题
+* 功能提案
+* 功能设计
+* 需要帮助
+* 文档不完整
+* 测试改进
+* 关于项目的任何问题
+* 等等
+
+另外我们必须提醒的是，在填写新问题时，请记住从您的帖子中删除敏感数据。敏感数据可能是密码、密钥、网络位置、私人业务数据等。
+
+## 代码和文档贡献
+
+鼓励采取一切措施使 seata-python 项目变得更好。在 GitHub 上，seata-python 的每项改进都可以通过 PR（Pull Request 的缩写）实现。
+
+* 如果您发现错别字，请尝试修复它！
+* 如果您发现错误，请尝试修复它！
+* 如果您发现一些多余的代码，请尝试删除它们！
+* 如果您发现缺少一些测试用例，请尝试添加它们！
+* 如果您可以增强功能，请**不要**犹豫！
+* 如果您发现代码晦涩难懂，请尝试添加注释以使其更加易读！
+* 如果您发现代码丑陋，请尝试重构它！
+* 如果您能帮助改进文档，那就再好不过了！
+* 如果您发现文档不正确，只需执行并修复它！
+* ...
+
+实际上不可能完整地列出它们。记住一个原则：
+
+> 我们期待您的任何PR。
+
+由于您已准备好通过 PR 改进 seata-python，我们建议您可以在此处查看 PR 规则。
+
+* [工作区准备](#工作区准备)
+* [分支定义](#分支定义)
+* [提交规则](#提交规则)
+* [PR说明](#PR说明)
+
+### 工作区准备
+
+为了提出 PR，我们假设你已经注册了一个 GitHub ID。然后您可以通过以下步骤完成准备工作：
+
+1. **FORK** seata-python 到您的存储库。要完成这项工作，您只需单击 [seata/seata-python](https://github.com/seata/seata-python) 主页右侧的 Fork 按钮。然后你将在 中得到你的存储库`https://github.com/<your-username>/seata-python`，其中 your-username 是你的 GitHub 用户名。
+
+2. **克隆** 您自己的存储库以在本地开发. 用于 `git clone git@github.com:<your-username>/seata-python.git` 将存储库克隆到本地计算机。 然后您可以创建新分支来完成您希望进行的更改。
+
+3. **设置远程** 将上游设置为 `git@github.com:seata/seata-python.git` 使用以下两个命令：
+
+```bash
+git remote add upstream git@github.com:seata/seata-python.git
+git remote set-url --push upstream no-pushing
+```
+
+使用此远程设置，您可以像这样检查您的 git 远程配置：
+
+```shell
+$ git remote -v
+origin     git@github.com:<your-username>/seata-python.git (fetch)
+origin     git@github.com:<your-username>/seata-python.git (push)
+upstream   git@github.com:seata/seata-python.git (fetch)
+upstream   no-pushing (push)
+```
+
+添加这个，我们可以轻松地将本地分支与上游分支同步。
+
+### 分支定义
+
+现在我们假设通过拉取请求的每个贡献都是针对 seata-python 中的 [开发分支](https://github.com/seata/seata-python/tree/master) 。在贡献之前，请注意分支定义会很有帮助。
+
+作为贡献者，请再次记住，通过拉取请求的每个贡献都是针对分支开发的。而在 seata-python 项目中，还有其他几个分支，我们一般称它们为 release 分支（如0.6.0、0.6.1）、feature 分支、hotfix 分支和 master 分支。
+
+当正式发布一个版本时，会有一个发布分支并以版本号命名。
+
+在发布之后，我们会将发布分支的提交合并到主分支中。
+
+当我们发现某个版本有 bug 时，我们会决定在以后的版本中修复它，或者在特定的 hotfix 版本中修复它。当我们决定修复 hotfix 版本时，我们会根据对应的 release 分支 checkout hotfix 分支，进行代码修复和验证，合并到 develop 分支和 master 分支。
+
+对于较大的功能，我们将拉出功能分支进行开发和验证。
+
+
+### 提交规则
+
+实际上，在 seata-python 中，我们在提交时会认真对待两条规则：
+
+* [提交消息](#提交消息)
+* [提交内容](#提交内容)
+
+#### 提交消息
+
+提交消息可以帮助审稿人更好地理解提交 PR 的目的是什么。它还可以帮助加快代码审查过程。我们鼓励贡献者使用显式的提交信息，而不是模糊的信息。一般来说，我们提倡以下提交消息类型：
+
+* docs: xxxx. For example, "docs: add docs about seata-python cluster installation".
+* feature: xxxx.For example, "feature: support oracle in AT mode".
+* bugfix: xxxx. For example, "bugfix: fix error when input nil parameter".
+* refactor: xxxx. For example, "refactor: simplify to make codes more readable".
+* test: xxx. For example, "test: add unit test case for func InsertIntoArray".
+* 其他可读和显式的表达方式。
+
+另一方面，我们不鼓励贡献者通过以下方式提交消息：
+
+* ~~修复错误~~
+* ~~更新~~
+* ~~添加文档~~
+
+如果你不知道该怎么做，请参阅 [如何编写 Git 提交消息](http://chris.beams.io/posts/git-commit/) 作为开始。
+
+#### 提交内容
+
+提交内容表示一次提交中包含的所有内容更改。我们最好在一次提交中包含可以支持审阅者完整审查的内容，而无需任何其他提交的帮助。换句话说，一次提交中的内容可以通过 CI 以避免代码混乱。简而言之，我们需要牢记三个小规则：
+
+* 避免在提交中进行非常大的更改；
+* 每次提交都完整且可审查。
+* 提交时检查 git config(`user.name`, `user.email`) 以确保它与您的 GitHub ID 相关联。
+
+```bash
+git config --get user.name
+git config --get user.email
+```
+
+另外，在代码变更部分，我们建议所有贡献者阅读 seata-python 的 [代码风格](#代码风格)。
+
+无论是提交信息，还是提交内容，我们都更加重视代码审查。
+
+#### 格式化代码
+
+提交代码之前，在项目根目录下执行格式化代码的脚本：
+
+~~~shell
+python -m pip install flake8
+flake8 path/seata-python
+~~~
+
+
+### PR说明
+
+PR 是更改 seata-python 项目文件的唯一方法。为了帮助审查人更好地理解你的目的，PR 描述不能太详细。我们鼓励贡献者遵循 [PR 模板](./.github/PULL_REQUEST_TEMPLATE.md) 来完成拉取请求。
+
+## 测试用例贡献
+
+任何测试用例都会受到欢迎。目前，seata-python 功能测试用例是高优先级的。
+
+## 参与帮助任何事情
+
+我们选择 GitHub 作为 seata-python 协作的主要场所。所以 seata-python 的最新更新总是在这里。尽管通过 PR 贡献是一种明确的帮助方式，但我们仍然呼吁其他方式。
+
+* 如果可以的话，回复别人的问题；
+* 帮助解决其他用户的问题；
+* 帮助审查他人的 PR 设计；
+* 帮助审查其他人在 PR 中的代码；
+* 讨论 seata-python 以使事情更清楚；
+* 在Github之外宣传 seata-python 技术；
+* 写关于 seata-python 的博客等等。
+
+
+## 代码风格
+
+Seata-python 代码风格参考[Flake8](https://flake8.pycqa.org/en/latest/) 。
+
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..6de18fd
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,5 @@
+Seata-python
+Copyright 2019-2022 Seata.io Group.
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/README.md b/README.md
index cc2a736..48ae904 100644
--- a/README.md
+++ b/README.md
@@ -1,50 +1,46 @@
-# seata-python
-
-seata-python是一个seata分布式事务python版本的客户端，什么是seata访问https://seata.io
-
-## 项目介绍
-本人不是python开发者，主要是为了学习一下python才写的这个项目，目前项目基本完成，主要是完成seata AT模式
-项目里面有很多实现不合理的地方，欢迎各位大佬前来修改。谢谢！
-
-## 项目完成度
-1. seata-server 网络协议模块
-  - [x] TCP协议
-  - [ ] socket优化
-2. 封装Connection, Cursor处理前后置镜像
-  - [x] insert
-  - [x] delete
-  - [x] update
-3. 解析 sql 模块
-  - [x] insert
-  - [x] delete
-  - [x] update
-  - [x] select for update
-4. undo 回滚模块
-  - [x] insert
-  - [x] delete
-  - [x] update
-5. 优化代码结构
-  - [ ] TMClient 结构
-  - [ ] RMClient 结构
-  - [ ] 项目整体结构
-6. 配置集成
-  - [x] file
-  - [ ] nacos
-7. 其他
-  - [ ] 其他数据库
-  - [ ] GRPC 协议
-  - [ ] 等等
-
-## 项目依赖
-```
-Python3.7
-
-test:
-PyMySQL==1.0.2
-```
-
-## pip源配置
-```
-https://pypi.org/simple 默认
-https://pypi.tuna.tsinghua.edu.cn/simple/
-```
+
+# Seata-python: Simple Extensible Autonomous Transaction Architecture(python version)
+
+[![Build Status](https://github.com/seata/seata/workflows/build/badge.svg?branch=develop)](https://github.com/seata/seata/actions)
+[![license](https://img.shields.io/github/license/seata/seata.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
+
+[中文 🇨🇳](./README_CN.md)
+
+## What is seata-python?
+
+Seata is a very mature distributed transaction framework, and is the de facto standard platform for distributed transaction technology in the Java field. Seata-python is the implementation version of python language in Seata multilingual ecosystem, which realizes the interoperability between Java and python, so that python developers can also use seata-python to realize distributed transactions. Please visit the [official website of Seata](https://seata.io/en-us) to view the quick start and documentation.
+
+The principle of seata-python is consistent with that of Seata-java, which is composed of TM, RM and TC. The functions of TC reuse Java, and the functions of TM and RM will be aligned with Seata-java later. The overall process is as follows:
+
+![](https://user-images.githubusercontent.com/68344696/145942191-7a2d469f-94c8-4cd2-8c7e-46ad75683636.png)
+
+## TODO list
+
+- [ ] TCC
+- [ ] XA
+- [x] AT
+- [ ] SAGA
+- [ ] TM
+- [x] RPC communication
+- [ ] Transaction anti suspension
+- [ ] Null compensation
+- [ ] Configuration center
+- [ ] Registration Center
+- [ ] Metric monitoring
+- [x] Examples
+
+
+## How to run？
+
+1. First download [**seata java**](https://github.com/seata/seata/tree/v1.5.2) and  Start the TC service. For the specific process, refer to  [**seata deployment guide**](https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.ht ) Documentation
+2. Just execute the main function under samples/ in the root directory
+
+
+## How to join us？
+
+Seata-python is currently in the construction stage. Welcome colleagues in the industry to join the group and work with us to promote the construction of seata-python! If you want to contribute code to seata-python, you can refer to the  [**code contribution Specification**](./CONTRIBUTING.md)  document to understand the specifications of the community, or you can join our community DingTalk group: 44788121 and communicate together!
+
+
+## Licence
+
+Seata-python uses Apache license version 2.0. Please refer to the license file for more information.
diff --git a/README_CN.md b/README_CN.md
new file mode 100644
index 0000000..6dc40b6
--- /dev/null
+++ b/README_CN.md
@@ -0,0 +1,44 @@
+
+# seata-python: 简单的可扩展自主事务架构(Python版本)
+
+[![Build Status](https://github.com/seata/seata/workflows/build/badge.svg?branch=develop)](https://github.com/seata/seata/actions)
+[![license](https://img.shields.io/github/license/seata/seata.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
+
+[English 🇺🇸](./README.md)
+
+## 什么是 seata-python？
+
+Seata是一个非常成熟的分布式事务框架，在Java领域是事实上的分布式事务技术标准平台。Seata-python 是 seata 多语言生态中的Go语言实现版本，实现了 Java 和 Python 之间的互通，让 Python 开发者也能使用 seata-python 来实现分布式事务。请访问[Seata 官网](https://seata.io/zh-cn/)查看快速开始和文档。
+
+Seata-python 的原理和 Seata-java 保持一致，都是由 TM、RM 和 TC 组成，其中 TC 的功能复用 Java 的，TM和RM功能后面会和 Seata-java对齐，整体流程如下：
+
+![](https://user-images.githubusercontent.com/68344696/145942191-7a2d469f-94c8-4cd2-8c7e-46ad75683636.png)
+
+## 待办事项
+
+- [ ] TCC
+- [ ] XA
+- [x] AT
+- [ ] SAGA
+- [ ] TM
+- [x] RPC 通信
+- [ ] 事务防悬挂
+- [ ] 空补偿
+- [ ] 配置中心
+- [ ] 注册中心
+- [ ] Metric监控
+- [x] Sample例子
+
+
+## 如何运行项目？
+
+1. 首先下载 [**Seata Java**](https://github.com/seata/seata/tree/v1.5.2) 的源码，启动 TC 服务即可，具体流程参考 **[Seata部署指南](https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.ht)**文档
+2. 执行根目录下的 samples/ 下的 main 函数即可
+
+python# 如何给Seata-python贡献代码？
+
+Seata-python 目前正在建设阶段，欢迎行业同仁入群参与其中，与我们一起推动 seata-python 的建设！如果你想给 seata-python 贡献代码，可以参考 **[代码贡献规范](./CONTRIBUTING_CN.md)** 文档来了解社区的规范，也可以加入我们的社区钉钉群：44788121，一起沟通交流！
+
+## 协议
+
+Seata-python 使用 Apache 许可证2.0版本，请参阅 LICENSE 文件了解更多。
\ No newline at end of file
diff --git a/flask-sample/db.py b/flask-sample/db.py
index a6ee014..989693d 100644
--- a/flask-sample/db.py
+++ b/flask-sample/db.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -- coding: utf-8 --
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import pymysql
 from dbutils.pooled_db import PooledDB
 from seata.rm.datasource.DataSourceProxy import DataSourceProxy
diff --git a/seata/Boostrap.py b/seata/Boostrap.py
index 9d67e03..6695e3f 100644
--- a/seata/Boostrap.py
+++ b/seata/Boostrap.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 from seata.rm.RMClient import RMClient
diff --git a/seata/__init__.py b/seata/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/__init__.py
+++ b/seata/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/boot/GlobalTransactionScanner.py b/seata/boot/GlobalTransactionScanner.py
index 03bebf7..d83e67c 100644
--- a/seata/boot/GlobalTransactionScanner.py
+++ b/seata/boot/GlobalTransactionScanner.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.RMClient import RMClient
 from seata.tm.TMClient import TMClient
 from seata.config.Config import ConfigFactory
diff --git a/seata/boot/__init__.py b/seata/boot/__init__.py
index e69de29..d158c96 100644
--- a/seata/boot/__init__.py
+++ b/seata/boot/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/config/Config.py b/seata/config/Config.py
index 72641d7..8ca056a 100644
--- a/seata/config/Config.py
+++ b/seata/config/Config.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 import threading
 
diff --git a/seata/config/Configuration.py b/seata/config/Configuration.py
index 877a8c9..a851665 100644
--- a/seata/config/Configuration.py
+++ b/seata/config/Configuration.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 
 from seata.log.LogConfiguration import LogConfiguration
diff --git a/seata/config/FileConfig.py b/seata/config/FileConfig.py
index 2c15318..cc21305 100644
--- a/seata/config/FileConfig.py
+++ b/seata/config/FileConfig.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import yaml
 from loguru import logger
 
diff --git a/seata/config/NacosConfig.py b/seata/config/NacosConfig.py
index 8c4d6bc..11b6cee 100644
--- a/seata/config/NacosConfig.py
+++ b/seata/config/NacosConfig.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.config.Config import Config
 
 
diff --git a/seata/config/__init__.py b/seata/config/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/config/__init__.py
+++ b/seata/config/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/core/ByteBuffer.py b/seata/core/ByteBuffer.py
index bf6c965..3081d30 100644
--- a/seata/core/ByteBuffer.py
+++ b/seata/core/ByteBuffer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import struct
 
 
diff --git a/seata/core/Number.py b/seata/core/Number.py
index 878e380..6201e1e 100644
--- a/seata/core/Number.py
+++ b/seata/core/Number.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class Number(object):
     SHORT_MAX_VALUE = 32767
diff --git a/seata/core/__init__.py b/seata/core/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/core/__init__.py
+++ b/seata/core/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/core/c/Future.py b/seata/core/c/Future.py
index 0199865..df706ae 100644
--- a/seata/core/c/Future.py
+++ b/seata/core/c/Future.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 import time
 
diff --git a/seata/core/c/__init__.py b/seata/core/c/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/core/c/__init__.py
+++ b/seata/core/c/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/core/compressor/CompressorFactory.py b/seata/core/compressor/CompressorFactory.py
index efa6e87..fe2d3b1 100644
--- a/seata/core/compressor/CompressorFactory.py
+++ b/seata/core/compressor/CompressorFactory.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.NotSupportYetException import NotSupportYetException
 
 
diff --git a/seata/core/compressor/CompressorType.py b/seata/core/compressor/CompressorType.py
index 5e5cea5..7f50819 100644
--- a/seata/core/compressor/CompressorType.py
+++ b/seata/core/compressor/CompressorType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/core/compressor/DefaultCompressor.py b/seata/core/compressor/DefaultCompressor.py
index 247f2ee..6a40af5 100644
--- a/seata/core/compressor/DefaultCompressor.py
+++ b/seata/core/compressor/DefaultCompressor.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class DefaultCompressor(object):
diff --git a/seata/core/compressor/__init__.py b/seata/core/compressor/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/compressor/__init__.py
+++ b/seata/core/compressor/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/context/ContextCore.py b/seata/core/context/ContextCore.py
index 5e28e5b..2c49031 100644
--- a/seata/core/context/ContextCore.py
+++ b/seata/core/context/ContextCore.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 core = None
diff --git a/seata/core/context/RootContext.py b/seata/core/context/RootContext.py
index af1407d..787b0ae 100644
--- a/seata/core/context/RootContext.py
+++ b/seata/core/context/RootContext.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.context.ContextCore import ContextCore
diff --git a/seata/core/context/__init__.py b/seata/core/context/__init__.py
index e69de29..d158c96 100644
--- a/seata/core/context/__init__.py
+++ b/seata/core/context/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/model/BranchStatus.py b/seata/core/model/BranchStatus.py
index b22d230..db45f31 100644
--- a/seata/core/model/BranchStatus.py
+++ b/seata/core/model/BranchStatus.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/core/model/BranchType.py b/seata/core/model/BranchType.py
index ea2e9fb..355a6b4 100644
--- a/seata/core/model/BranchType.py
+++ b/seata/core/model/BranchType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/core/model/GlobalStatus.py b/seata/core/model/GlobalStatus.py
index 9b65bee..247db64 100644
--- a/seata/core/model/GlobalStatus.py
+++ b/seata/core/model/GlobalStatus.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/core/model/__init__.py b/seata/core/model/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/model/__init__.py
+++ b/seata/core/model/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/protocol/AbstractIdentifyRequestResponseCodec.py b/seata/core/protocol/AbstractIdentifyRequestResponseCodec.py
index f43867f..9b8097a 100644
--- a/seata/core/protocol/AbstractIdentifyRequestResponseCodec.py
+++ b/seata/core/protocol/AbstractIdentifyRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 
 
diff --git a/seata/core/protocol/AbstractResultMessageCodec.py b/seata/core/protocol/AbstractResultMessageCodec.py
index b9c3db7..e40a37c 100644
--- a/seata/core/protocol/AbstractResultMessageCodec.py
+++ b/seata/core/protocol/AbstractResultMessageCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.Number import Number
 from seata.core.protocol.ResultCode import ResultCode
diff --git a/seata/core/protocol/HeartbeatMessage.py b/seata/core/protocol/HeartbeatMessage.py
index bb7cedb..7a4853c 100644
--- a/seata/core/protocol/HeartbeatMessage.py
+++ b/seata/core/protocol/HeartbeatMessage.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware
 
diff --git a/seata/core/protocol/MergeResultMessage.py b/seata/core/protocol/MergeResultMessage.py
index cb6840d..0687204 100644
--- a/seata/core/protocol/MergeResultMessage.py
+++ b/seata/core/protocol/MergeResultMessage.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware
 
diff --git a/seata/core/protocol/MergeResultMessageCodec.py b/seata/core/protocol/MergeResultMessageCodec.py
index 7c28428..6ef3842 100644
--- a/seata/core/protocol/MergeResultMessageCodec.py
+++ b/seata/core/protocol/MergeResultMessageCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.ByteBuffer import ByteBuffer
diff --git a/seata/core/protocol/MergedWarpMessage.py b/seata/core/protocol/MergedWarpMessage.py
index 23b051c..67c30b5 100644
--- a/seata/core/protocol/MergedWarpMessage.py
+++ b/seata/core/protocol/MergedWarpMessage.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware
 
diff --git a/seata/core/protocol/MergedWarpMessageCodec.py b/seata/core/protocol/MergedWarpMessageCodec.py
index 30e3960..4c0b60d 100644
--- a/seata/core/protocol/MergedWarpMessageCodec.py
+++ b/seata/core/protocol/MergedWarpMessageCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.ByteBuffer import ByteBuffer
diff --git a/seata/core/protocol/MessageType.py b/seata/core/protocol/MessageType.py
index ddd7609..ff4dde1 100644
--- a/seata/core/protocol/MessageType.py
+++ b/seata/core/protocol/MessageType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class MessageType(object):
 
diff --git a/seata/core/protocol/MessageTypeAware.py b/seata/core/protocol/MessageTypeAware.py
index 0d3b8b5..54a428c 100644
--- a/seata/core/protocol/MessageTypeAware.py
+++ b/seata/core/protocol/MessageTypeAware.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class MessageTypeAware(object):
 
diff --git a/seata/core/protocol/ProtocolConstants.py b/seata/core/protocol/ProtocolConstants.py
index e4aa882..8a2bec7 100644
--- a/seata/core/protocol/ProtocolConstants.py
+++ b/seata/core/protocol/ProtocolConstants.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class ProtocolConstants(object):
     # Magic code
diff --git a/seata/core/protocol/RegisterRMRequestResponse.py b/seata/core/protocol/RegisterRMRequestResponse.py
index 00cc837..70a8603 100644
--- a/seata/core/protocol/RegisterRMRequestResponse.py
+++ b/seata/core/protocol/RegisterRMRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol import Version
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/RegisterRMRequestResponseCodec.py b/seata/core/protocol/RegisterRMRequestResponseCodec.py
index 0f0c583..af145f8 100644
--- a/seata/core/protocol/RegisterRMRequestResponseCodec.py
+++ b/seata/core/protocol/RegisterRMRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.AbstractIdentifyRequestResponseCodec import AbstractIdentifyRequestCodec, \
     AbstractIdentifyResponseCodec
diff --git a/seata/core/protocol/RegisterTMRequestResponse.py b/seata/core/protocol/RegisterTMRequestResponse.py
index def9e0c..06887f7 100644
--- a/seata/core/protocol/RegisterTMRequestResponse.py
+++ b/seata/core/protocol/RegisterTMRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol import Version
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/RegisterTMRequestResponseCodec.py b/seata/core/protocol/RegisterTMRequestResponseCodec.py
index a798deb..00f8f84 100644
--- a/seata/core/protocol/RegisterTMRequestResponseCodec.py
+++ b/seata/core/protocol/RegisterTMRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.AbstractIdentifyRequestResponseCodec import AbstractIdentifyRequestCodec, \
     AbstractIdentifyResponseCodec
diff --git a/seata/core/protocol/ResultCode.py b/seata/core/protocol/ResultCode.py
index 0849bdf..d65b442 100644
--- a/seata/core/protocol/ResultCode.py
+++ b/seata/core/protocol/ResultCode.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/core/protocol/RpcMessage.py b/seata/core/protocol/RpcMessage.py
index 18a2791..1de319d 100644
--- a/seata/core/protocol/RpcMessage.py
+++ b/seata/core/protocol/RpcMessage.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 atom = 0
diff --git a/seata/core/protocol/Version.py b/seata/core/protocol/Version.py
index 4248b5f..0b80b1f 100644
--- a/seata/core/protocol/Version.py
+++ b/seata/core/protocol/Version.py
@@ -1,6 +1,20 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 CURRENT = "1.0"
\ No newline at end of file
diff --git a/seata/core/protocol/__init__.py b/seata/core/protocol/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/protocol/__init__.py
+++ b/seata/core/protocol/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/protocol/transaction/AbstractBranchEndRequestResponseCodec.py b/seata/core/protocol/transaction/AbstractBranchEndRequestResponseCodec.py
index 9cec379..d5aa545 100644
--- a/seata/core/protocol/transaction/AbstractBranchEndRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/AbstractBranchEndRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchStatus import BranchStatus
 from seata.core.protocol.transaction.AbstractTransactionRequestResponseCodec import AbstractTransactionResponseCodec
 from seata.core.ByteBuffer import ByteBuffer
diff --git a/seata/core/protocol/transaction/AbstractGlobalEndRequestResponseCodec.py b/seata/core/protocol/transaction/AbstractGlobalEndRequestResponseCodec.py
index acd4a2f..54879ef 100644
--- a/seata/core/protocol/transaction/AbstractGlobalEndRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/AbstractGlobalEndRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.GlobalStatus import GlobalStatus
 from seata.core.protocol.transaction.AbstractTransactionRequestResponseCodec import AbstractTransactionResponseCodec
diff --git a/seata/core/protocol/transaction/AbstractTransactionRequestResponseCodec.py b/seata/core/protocol/transaction/AbstractTransactionRequestResponseCodec.py
index d681a82..5399415 100644
--- a/seata/core/protocol/transaction/AbstractTransactionRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/AbstractTransactionRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.AbstractResultMessageCodec import AbstractResultMessageCodec
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/BranchCommitRequestResponse.py b/seata/core/protocol/transaction/BranchCommitRequestResponse.py
index c221329..53e40d2 100644
--- a/seata/core/protocol/transaction/BranchCommitRequestResponse.py
+++ b/seata/core/protocol/transaction/BranchCommitRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/transaction/BranchCommitRequestResponseCodec.py b/seata/core/protocol/transaction/BranchCommitRequestResponseCodec.py
index 9c9d7ec..4ee4621 100644
--- a/seata/core/protocol/transaction/BranchCommitRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/BranchCommitRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractBranchEndRequestResponseCodec import AbstractBranchEndRequestCodec, \
     AbstractBranchEndResponseCodec
diff --git a/seata/core/protocol/transaction/BranchRegisterRequestResponse.py b/seata/core/protocol/transaction/BranchRegisterRequestResponse.py
index 93f5d6b..720820f 100644
--- a/seata/core/protocol/transaction/BranchRegisterRequestResponse.py
+++ b/seata/core/protocol/transaction/BranchRegisterRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/transaction/BranchRegisterRequestResponseCodec.py b/seata/core/protocol/transaction/BranchRegisterRequestResponseCodec.py
index a0231fd..50e2b3f 100644
--- a/seata/core/protocol/transaction/BranchRegisterRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/BranchRegisterRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.transaction.AbstractTransactionRequestResponseCodec import AbstractTransactionResponseCodec
diff --git a/seata/core/protocol/transaction/BranchReportRequestResponse.py b/seata/core/protocol/transaction/BranchReportRequestResponse.py
index b91fccd..b00b21d 100644
--- a/seata/core/protocol/transaction/BranchReportRequestResponse.py
+++ b/seata/core/protocol/transaction/BranchReportRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/transaction/BranchReportRequestResponseCodec.py b/seata/core/protocol/transaction/BranchReportRequestResponseCodec.py
index 086c265..3331cb3 100644
--- a/seata/core/protocol/transaction/BranchReportRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/BranchReportRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.BranchStatus import BranchStatus
 from seata.core.model.BranchType import BranchType
diff --git a/seata/core/protocol/transaction/BranchRollbackRequestResponse.py b/seata/core/protocol/transaction/BranchRollbackRequestResponse.py
index ea36507..7485deb 100644
--- a/seata/core/protocol/transaction/BranchRollbackRequestResponse.py
+++ b/seata/core/protocol/transaction/BranchRollbackRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/transaction/BranchRollbackRequestResponseCodec.py b/seata/core/protocol/transaction/BranchRollbackRequestResponseCodec.py
index 271c380..98527a4 100644
--- a/seata/core/protocol/transaction/BranchRollbackRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/BranchRollbackRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractBranchEndRequestResponseCodec import AbstractBranchEndRequestCodec, \
     AbstractBranchEndResponseCodec
diff --git a/seata/core/protocol/transaction/GlobalBeginRequestResponse.py b/seata/core/protocol/transaction/GlobalBeginRequestResponse.py
index 46e25a2..7c937af 100644
--- a/seata/core/protocol/transaction/GlobalBeginRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalBeginRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/GlobalBeginRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalBeginRequestResponseCodec.py
index 2ce9b7f..f2d33ed 100644
--- a/seata/core/protocol/transaction/GlobalBeginRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalBeginRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractTransactionRequestResponseCodec import AbstractTransactionResponseCodec
 from seata.core.util.ClassUtil import ClassUtil
diff --git a/seata/core/protocol/transaction/GlobalCommitRequestResponse.py b/seata/core/protocol/transaction/GlobalCommitRequestResponse.py
index 20b9e25..8e3d91d 100644
--- a/seata/core/protocol/transaction/GlobalCommitRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalCommitRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/GlobalCommitRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalCommitRequestResponseCodec.py
index d0e5a80..4d02ed7 100644
--- a/seata/core/protocol/transaction/GlobalCommitRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalCommitRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractGlobalEndRequestResponseCodec import AbstractGlobalEndRequestCodec, \
     AbstractGlobalEndResponseCodec
diff --git a/seata/core/protocol/transaction/GlobalLockQueryRequestResponse.py b/seata/core/protocol/transaction/GlobalLockQueryRequestResponse.py
index baeca58..0f51a2c 100644
--- a/seata/core/protocol/transaction/GlobalLockQueryRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalLockQueryRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
diff --git a/seata/core/protocol/transaction/GlobalLockQueryRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalLockQueryRequestResponseCodec.py
index c181d2f..1923448 100644
--- a/seata/core/protocol/transaction/GlobalLockQueryRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalLockQueryRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.transaction.AbstractTransactionRequestResponseCodec import AbstractTransactionResponseCodec
diff --git a/seata/core/protocol/transaction/GlobalReportRequestResponse.py b/seata/core/protocol/transaction/GlobalReportRequestResponse.py
index b2524b0..06d525c 100644
--- a/seata/core/protocol/transaction/GlobalReportRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalReportRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/GlobalReportRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalReportRequestResponseCodec.py
index 078267a..56d9a41 100644
--- a/seata/core/protocol/transaction/GlobalReportRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalReportRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.GlobalStatus import GlobalStatus
 from seata.core.protocol.transaction.AbstractGlobalEndRequestResponseCodec import AbstractGlobalEndRequestCodec, \
diff --git a/seata/core/protocol/transaction/GlobalRollbackRequestResponse.py b/seata/core/protocol/transaction/GlobalRollbackRequestResponse.py
index ffa3cb5..3096f58 100644
--- a/seata/core/protocol/transaction/GlobalRollbackRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalRollbackRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/GlobalRollbackRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalRollbackRequestResponseCodec.py
index 222c7ca..87c9d92 100644
--- a/seata/core/protocol/transaction/GlobalRollbackRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalRollbackRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractGlobalEndRequestResponseCodec import AbstractGlobalEndRequestCodec, \
     AbstractGlobalEndResponseCodec
diff --git a/seata/core/protocol/transaction/GlobalStatusRequestResponse.py b/seata/core/protocol/transaction/GlobalStatusRequestResponse.py
index 6e7e592..ea205bb 100644
--- a/seata/core/protocol/transaction/GlobalStatusRequestResponse.py
+++ b/seata/core/protocol/transaction/GlobalStatusRequestResponse.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware, ResultMessage
 from seata.exception.TransactionExceptionCode import TransactionExceptionCode
diff --git a/seata/core/protocol/transaction/GlobalStatusRequestResponseCodec.py b/seata/core/protocol/transaction/GlobalStatusRequestResponseCodec.py
index 5370421..ebd9c01 100644
--- a/seata/core/protocol/transaction/GlobalStatusRequestResponseCodec.py
+++ b/seata/core/protocol/transaction/GlobalStatusRequestResponseCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.transaction.AbstractGlobalEndRequestResponseCodec import AbstractGlobalEndRequestCodec, \
     AbstractGlobalEndResponseCodec
diff --git a/seata/core/protocol/transaction/UndoLogDeleteRequest.py b/seata/core/protocol/transaction/UndoLogDeleteRequest.py
index 200c78a..6bea474 100644
--- a/seata/core/protocol/transaction/UndoLogDeleteRequest.py
+++ b/seata/core/protocol/transaction/UndoLogDeleteRequest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.core.protocol.MessageType import MessageType
 from seata.core.protocol.MessageTypeAware import MessageTypeAware
diff --git a/seata/core/protocol/transaction/UndoLogDeleteRequestCodec.py b/seata/core/protocol/transaction/UndoLogDeleteRequestCodec.py
index 53477a6..36aab7a 100644
--- a/seata/core/protocol/transaction/UndoLogDeleteRequestCodec.py
+++ b/seata/core/protocol/transaction/UndoLogDeleteRequestCodec.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.model.BranchType import BranchType
 from seata.core.util.ClassUtil import ClassUtil
diff --git a/seata/core/protocol/transaction/__init__.py b/seata/core/protocol/transaction/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/protocol/transaction/__init__.py
+++ b/seata/core/protocol/transaction/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/rpc/Address.py b/seata/core/rpc/Address.py
index ec5bff2..cfd2b72 100644
--- a/seata/core/rpc/Address.py
+++ b/seata/core/rpc/Address.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class Address:
diff --git a/seata/core/rpc/__init__.py b/seata/core/rpc/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/rpc/__init__.py
+++ b/seata/core/rpc/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/rpc/v1/ChannelManager.py b/seata/core/rpc/v1/ChannelManager.py
index 51c5b35..b36776b 100644
--- a/seata/core/rpc/v1/ChannelManager.py
+++ b/seata/core/rpc/v1/ChannelManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import queue
 import selectors
 import socket
diff --git a/seata/core/rpc/v1/HeadMapSerializer.py b/seata/core/rpc/v1/HeadMapSerializer.py
index 8d9d9f4..ec1d2dd 100644
--- a/seata/core/rpc/v1/HeadMapSerializer.py
+++ b/seata/core/rpc/v1/HeadMapSerializer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class HeadMapSerializer(object):
diff --git a/seata/core/rpc/v1/ProtocolV1.py b/seata/core/rpc/v1/ProtocolV1.py
index acddd6e..597147d 100644
--- a/seata/core/rpc/v1/ProtocolV1.py
+++ b/seata/core/rpc/v1/ProtocolV1.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.ByteBuffer import ByteBuffer
diff --git a/seata/core/rpc/v1/RemotingClient.py b/seata/core/rpc/v1/RemotingClient.py
index ae9e8a9..e769459 100644
--- a/seata/core/rpc/v1/RemotingClient.py
+++ b/seata/core/rpc/v1/RemotingClient.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import time
 
 from loguru import logger
diff --git a/seata/core/rpc/v1/RmRemotingClient.py b/seata/core/rpc/v1/RmRemotingClient.py
index 0fed824..8e21af7 100644
--- a/seata/core/rpc/v1/RmRemotingClient.py
+++ b/seata/core/rpc/v1/RmRemotingClient.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 from loguru import logger
diff --git a/seata/core/rpc/v1/TmRemotingClient.py b/seata/core/rpc/v1/TmRemotingClient.py
index 0341f84..d78a5a7 100644
--- a/seata/core/rpc/v1/TmRemotingClient.py
+++ b/seata/core/rpc/v1/TmRemotingClient.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 from loguru import logger
diff --git a/seata/core/rpc/v1/__init__.py b/seata/core/rpc/v1/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/rpc/v1/__init__.py
+++ b/seata/core/rpc/v1/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/serializer/SerializerFactory.py b/seata/core/serializer/SerializerFactory.py
index 7c77ab8..6c33e8f 100644
--- a/seata/core/serializer/SerializerFactory.py
+++ b/seata/core/serializer/SerializerFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.NotSupportYetException import NotSupportYetException
 
 
diff --git a/seata/core/serializer/__init__.py b/seata/core/serializer/__init__.py
index b21f691..d158c96 100644
--- a/seata/core/serializer/__init__.py
+++ b/seata/core/serializer/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/core/serializer/seata/MessageCodecFactory.py b/seata/core/serializer/seata/MessageCodecFactory.py
index 4614528..874e5e1 100644
--- a/seata/core/serializer/seata/MessageCodecFactory.py
+++ b/seata/core/serializer/seata/MessageCodecFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.MergeResultMessage import MergeResultMessage
 from seata.core.protocol.MergeResultMessageCodec import MergeResultMessageCodec
 from seata.core.protocol.MergedWarpMessage import MergedWarpMessage
diff --git a/seata/core/serializer/seata/SeataSerializer.py b/seata/core/serializer/seata/SeataSerializer.py
index 6a5d9da..cdc2c44 100644
--- a/seata/core/serializer/seata/SeataSerializer.py
+++ b/seata/core/serializer/seata/SeataSerializer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.ByteBuffer import ByteBuffer
 from seata.core.protocol.MessageTypeAware import MessageTypeAware
 from seata.core.serializer.seata.MessageCodecFactory import MessageCodecFactory
diff --git a/seata/core/serializer/seata/__init__.py b/seata/core/serializer/seata/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/core/serializer/seata/__init__.py
+++ b/seata/core/serializer/seata/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/core/util/ClassUtil.py b/seata/core/util/ClassUtil.py
index 5dba324..fdeb2a6 100644
--- a/seata/core/util/ClassUtil.py
+++ b/seata/core/util/ClassUtil.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 import enum
 
diff --git a/seata/core/util/__init__.py b/seata/core/util/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/core/util/__init__.py
+++ b/seata/core/util/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/exception/NotSupportYetException.py b/seata/exception/NotSupportYetException.py
index e359d4f..d12a489 100644
--- a/seata/exception/NotSupportYetException.py
+++ b/seata/exception/NotSupportYetException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class NotSupportYetException(RuntimeError):
     pass
\ No newline at end of file
diff --git a/seata/exception/RmTransactionException.py b/seata/exception/RmTransactionException.py
index 2b1b901..6cb5b92 100644
--- a/seata/exception/RmTransactionException.py
+++ b/seata/exception/RmTransactionException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.TransactionException import TransactionException
 
 
diff --git a/seata/exception/ShouldNeverHappenException.py b/seata/exception/ShouldNeverHappenException.py
index 5148c4f..92a91b0 100644
--- a/seata/exception/ShouldNeverHappenException.py
+++ b/seata/exception/ShouldNeverHappenException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class ShouldNeverHappenException(RuntimeError):
     pass
\ No newline at end of file
diff --git a/seata/exception/TmTransactionException.py b/seata/exception/TmTransactionException.py
index b676da8..e463d20 100644
--- a/seata/exception/TmTransactionException.py
+++ b/seata/exception/TmTransactionException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.TransactionException import TransactionException
 
 
diff --git a/seata/exception/TransactionException.py b/seata/exception/TransactionException.py
index f114767..59d38f4 100644
--- a/seata/exception/TransactionException.py
+++ b/seata/exception/TransactionException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class TransactionException(Exception):
 
diff --git a/seata/exception/TransactionExceptionCode.py b/seata/exception/TransactionExceptionCode.py
index 613af63..a5f88be 100644
--- a/seata/exception/TransactionExceptionCode.py
+++ b/seata/exception/TransactionExceptionCode.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/exception/__init__.py b/seata/exception/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/exception/__init__.py
+++ b/seata/exception/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/log/LogConfiguration.py b/seata/log/LogConfiguration.py
index 70ff09f..15d3380 100644
--- a/seata/log/LogConfiguration.py
+++ b/seata/log/LogConfiguration.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 
 from loguru import logger
diff --git a/seata/log/__init__.py b/seata/log/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/log/__init__.py
+++ b/seata/log/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/registry/FileRegistry.py b/seata/registry/FileRegistry.py
index 460f498..2d22938 100644
--- a/seata/registry/FileRegistry.py
+++ b/seata/registry/FileRegistry.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.config.Config import ConfigFactory
 from seata.core.rpc.Address import Address
 from seata.registry.Registry import Registry
diff --git a/seata/registry/NacosRegistry.py b/seata/registry/NacosRegistry.py
index abe68b8..4a1eedc 100644
--- a/seata/registry/NacosRegistry.py
+++ b/seata/registry/NacosRegistry.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.registry.Registry import Registry
 
 
diff --git a/seata/registry/Registry.py b/seata/registry/Registry.py
index d0a810b..2597162 100644
--- a/seata/registry/Registry.py
+++ b/seata/registry/Registry.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 from seata.exception.NotSupportYetException import NotSupportYetException
diff --git a/seata/registry/__init__.py b/seata/registry/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/registry/__init__.py
+++ b/seata/registry/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/DefaultResourceManager.py b/seata/rm/DefaultResourceManager.py
index 5ca2714..7e88378 100644
--- a/seata/rm/DefaultResourceManager.py
+++ b/seata/rm/DefaultResourceManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.BranchType import BranchType
 from seata.rm.datasource.DataSourceResourceManager import DataSourceResourceManager
 
diff --git a/seata/rm/RMClient.py b/seata/rm/RMClient.py
index ce736f9..ef51361 100644
--- a/seata/rm/RMClient.py
+++ b/seata/rm/RMClient.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 
 from seata.core.rpc.v1.RmRemotingClient import RmRemotingClient
diff --git a/seata/rm/RMHandlerAT.py b/seata/rm/RMHandlerAT.py
index 4c3ec8f..694e770 100644
--- a/seata/rm/RMHandlerAT.py
+++ b/seata/rm/RMHandlerAT.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import datetime
 
 from loguru import logger
diff --git a/seata/rm/__init__.py b/seata/rm/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/__init__.py
+++ b/seata/rm/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/AsyncWorker.py b/seata/rm/datasource/AsyncWorker.py
index 9e4e340..16594b4 100644
--- a/seata/rm/datasource/AsyncWorker.py
+++ b/seata/rm/datasource/AsyncWorker.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import queue
 import threading
 import time
diff --git a/seata/rm/datasource/ColumnUtils.py b/seata/rm/datasource/ColumnUtils.py
index e2f672a..e6c20e3 100644
--- a/seata/rm/datasource/ColumnUtils.py
+++ b/seata/rm/datasource/ColumnUtils.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/rm/datasource/ConnectionContext.py b/seata/rm/datasource/ConnectionContext.py
index bcb4f7e..c17dd02 100644
--- a/seata/rm/datasource/ConnectionContext.py
+++ b/seata/rm/datasource/ConnectionContext.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 
 
diff --git a/seata/rm/datasource/ConnectionProxy.py b/seata/rm/datasource/ConnectionProxy.py
index be3c7c5..8afc989 100644
--- a/seata/rm/datasource/ConnectionProxy.py
+++ b/seata/rm/datasource/ConnectionProxy.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.config.Config import ConfigFactory
diff --git a/seata/rm/datasource/CursorProxy.py b/seata/rm/datasource/CursorProxy.py
index d09e3a9..aab546b 100644
--- a/seata/rm/datasource/CursorProxy.py
+++ b/seata/rm/datasource/CursorProxy.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.executor.CursorCallback import CursorCallback
 from seata.rm.datasource.executor.ExecuteTemplate import ExecuteTemplate
 
diff --git a/seata/rm/datasource/DataCompareUtil.py b/seata/rm/datasource/DataCompareUtil.py
index e2c4995..ca596e4 100644
--- a/seata/rm/datasource/DataCompareUtil.py
+++ b/seata/rm/datasource/DataCompareUtil.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class DataCompareUtil:
diff --git a/seata/rm/datasource/DataSourceProxy.py b/seata/rm/datasource/DataSourceProxy.py
index 6da9598..aac4a19 100644
--- a/seata/rm/datasource/DataSourceProxy.py
+++ b/seata/rm/datasource/DataSourceProxy.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from dbutils.pooled_db import PooledDB
 
 from seata.core.model.BranchType import BranchType
diff --git a/seata/rm/datasource/DataSourceResourceManager.py b/seata/rm/datasource/DataSourceResourceManager.py
index e2b914c..0c3b697 100644
--- a/seata/rm/datasource/DataSourceResourceManager.py
+++ b/seata/rm/datasource/DataSourceResourceManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.context.RootContext import RootContext
diff --git a/seata/rm/datasource/Types.py b/seata/rm/datasource/Types.py
index 60d8cc0..28c5950 100644
--- a/seata/rm/datasource/Types.py
+++ b/seata/rm/datasource/Types.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class Types:
diff --git a/seata/rm/datasource/__init__.py b/seata/rm/datasource/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/__init__.py
+++ b/seata/rm/datasource/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/exception/SQLException.py b/seata/rm/datasource/exception/SQLException.py
index daf3368..f2c16a9 100644
--- a/seata/rm/datasource/exception/SQLException.py
+++ b/seata/rm/datasource/exception/SQLException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class SQLException(RuntimeError):
     pass
diff --git a/seata/rm/datasource/exception/__init__.py b/seata/rm/datasource/exception/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/exception/__init__.py
+++ b/seata/rm/datasource/exception/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/executor/CursorCallback.py b/seata/rm/datasource/executor/CursorCallback.py
index 3f43fc9..0c2867e 100644
--- a/seata/rm/datasource/executor/CursorCallback.py
+++ b/seata/rm/datasource/executor/CursorCallback.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class CursorCallback:
diff --git a/seata/rm/datasource/executor/ExecuteTemplate.py b/seata/rm/datasource/executor/ExecuteTemplate.py
index 9ddf92d..dced68d 100644
--- a/seata/rm/datasource/executor/ExecuteTemplate.py
+++ b/seata/rm/datasource/executor/ExecuteTemplate.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.context.RootContext import RootContext
 from seata.core.model.BranchType import BranchType
 from seata.rm.datasource.executor.PlainExecutor import PlainExecutor
diff --git a/seata/rm/datasource/executor/Executor.py b/seata/rm/datasource/executor/Executor.py
index 6c0324e..93d5918 100644
--- a/seata/rm/datasource/executor/Executor.py
+++ b/seata/rm/datasource/executor/Executor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import time
 
 from loguru import logger
diff --git a/seata/rm/datasource/executor/LockConflictException.py b/seata/rm/datasource/executor/LockConflictException.py
index 70921a3..37259d2 100644
--- a/seata/rm/datasource/executor/LockConflictException.py
+++ b/seata/rm/datasource/executor/LockConflictException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class LockConflictException(RuntimeError):
diff --git a/seata/rm/datasource/executor/LockWaitTimeoutException.py b/seata/rm/datasource/executor/LockWaitTimeoutException.py
index 302d528..0b7d564 100644
--- a/seata/rm/datasource/executor/LockWaitTimeoutException.py
+++ b/seata/rm/datasource/executor/LockWaitTimeoutException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class LockWaitTimeoutException(RuntimeError):
     pass
diff --git a/seata/rm/datasource/executor/PlainExecutor.py b/seata/rm/datasource/executor/PlainExecutor.py
index 3fb4a67..4eac843 100644
--- a/seata/rm/datasource/executor/PlainExecutor.py
+++ b/seata/rm/datasource/executor/PlainExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class PlainExecutor(object):
diff --git a/seata/rm/datasource/executor/__init__.py b/seata/rm/datasource/executor/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/executor/__init__.py
+++ b/seata/rm/datasource/executor/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/executor/mysql/MySQLDeleteExecutor.py b/seata/rm/datasource/executor/mysql/MySQLDeleteExecutor.py
index 412729c..f33f5e7 100644
--- a/seata/rm/datasource/executor/mysql/MySQLDeleteExecutor.py
+++ b/seata/rm/datasource/executor/mysql/MySQLDeleteExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.executor.Executor import DeleteExecutor
 
 
diff --git a/seata/rm/datasource/executor/mysql/MySQLInsertExecutor.py b/seata/rm/datasource/executor/mysql/MySQLInsertExecutor.py
index 6c7cbd1..a8dd8f3 100644
--- a/seata/rm/datasource/executor/mysql/MySQLInsertExecutor.py
+++ b/seata/rm/datasource/executor/mysql/MySQLInsertExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.NotSupportYetException import NotSupportYetException
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.ColumnUtils import ColumnUtils
diff --git a/seata/rm/datasource/executor/mysql/MySQLSelectForUpdateExecutor.py b/seata/rm/datasource/executor/mysql/MySQLSelectForUpdateExecutor.py
index 17eaabb..9a89b41 100644
--- a/seata/rm/datasource/executor/mysql/MySQLSelectForUpdateExecutor.py
+++ b/seata/rm/datasource/executor/mysql/MySQLSelectForUpdateExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.executor.Executor import SelectForUpdateExecutor
 
 
diff --git a/seata/rm/datasource/executor/mysql/MySQLUpdateExecutor.py b/seata/rm/datasource/executor/mysql/MySQLUpdateExecutor.py
index 38e0f6d..c0a5a5a 100644
--- a/seata/rm/datasource/executor/mysql/MySQLUpdateExecutor.py
+++ b/seata/rm/datasource/executor/mysql/MySQLUpdateExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.executor.Executor import UpdateExecutor
 
 
diff --git a/seata/rm/datasource/executor/mysql/__init__.py b/seata/rm/datasource/executor/mysql/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/executor/mysql/__init__.py
+++ b/seata/rm/datasource/executor/mysql/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/sql/SQLVisitorFactory.py b/seata/rm/datasource/sql/SQLVisitorFactory.py
index 8539e58..8be54c9 100644
--- a/seata/rm/datasource/sql/SQLVisitorFactory.py
+++ b/seata/rm/datasource/sql/SQLVisitorFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.NotSupportYetException import NotSupportYetException
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.sqlparser.SQLType import SQLType
diff --git a/seata/rm/datasource/sql/TableMetaCacheFactory.py b/seata/rm/datasource/sql/TableMetaCacheFactory.py
index a73025a..308aeb4 100644
--- a/seata/rm/datasource/sql/TableMetaCacheFactory.py
+++ b/seata/rm/datasource/sql/TableMetaCacheFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.context.RootContext import RootContext
diff --git a/seata/rm/datasource/sql/__init__.py b/seata/rm/datasource/sql/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/sql/__init__.py
+++ b/seata/rm/datasource/sql/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/sql/struct/ColumnMeta.py b/seata/rm/datasource/sql/struct/ColumnMeta.py
index b50aec2..dcbd10d 100644
--- a/seata/rm/datasource/sql/struct/ColumnMeta.py
+++ b/seata/rm/datasource/sql/struct/ColumnMeta.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class ColumnMeta(object):
 
diff --git a/seata/rm/datasource/sql/struct/Field.py b/seata/rm/datasource/sql/struct/Field.py
index e34e5f0..6965979 100644
--- a/seata/rm/datasource/sql/struct/Field.py
+++ b/seata/rm/datasource/sql/struct/Field.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import datetime
 import time
 
diff --git a/seata/rm/datasource/sql/struct/IndexMeta.py b/seata/rm/datasource/sql/struct/IndexMeta.py
index a514562..2fb5e5b 100644
--- a/seata/rm/datasource/sql/struct/IndexMeta.py
+++ b/seata/rm/datasource/sql/struct/IndexMeta.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class IndexMeta(object):
 
diff --git a/seata/rm/datasource/sql/struct/IndexType.py b/seata/rm/datasource/sql/struct/IndexType.py
index 97889c5..beb030c 100644
--- a/seata/rm/datasource/sql/struct/IndexType.py
+++ b/seata/rm/datasource/sql/struct/IndexType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/rm/datasource/sql/struct/KeyType.py b/seata/rm/datasource/sql/struct/KeyType.py
index 95f3cc6..0672e5a 100644
--- a/seata/rm/datasource/sql/struct/KeyType.py
+++ b/seata/rm/datasource/sql/struct/KeyType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/rm/datasource/sql/struct/Row.py b/seata/rm/datasource/sql/struct/Row.py
index 3ad2848..47cf415 100644
--- a/seata/rm/datasource/sql/struct/Row.py
+++ b/seata/rm/datasource/sql/struct/Row.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.sql.struct.KeyType import KeyType
 
 
diff --git a/seata/rm/datasource/sql/struct/TableMeta.py b/seata/rm/datasource/sql/struct/TableMeta.py
index ca2eb06..9554ae7 100644
--- a/seata/rm/datasource/sql/struct/TableMeta.py
+++ b/seata/rm/datasource/sql/struct/TableMeta.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from collections import OrderedDict
 
 from seata.exception.NotSupportYetException import NotSupportYetException
diff --git a/seata/rm/datasource/sql/struct/TableRecords.py b/seata/rm/datasource/sql/struct/TableRecords.py
index 74364c3..863afb1 100644
--- a/seata/rm/datasource/sql/struct/TableRecords.py
+++ b/seata/rm/datasource/sql/struct/TableRecords.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.sql.struct.Field import Field
 from seata.rm.datasource.sql.struct.KeyType import KeyType
diff --git a/seata/rm/datasource/sql/struct/__init__.py b/seata/rm/datasource/sql/struct/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/sql/struct/__init__.py
+++ b/seata/rm/datasource/sql/struct/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/undo/BranchUndoLog.py b/seata/rm/datasource/undo/BranchUndoLog.py
index b2ac9ce..989c637 100644
--- a/seata/rm/datasource/undo/BranchUndoLog.py
+++ b/seata/rm/datasource/undo/BranchUndoLog.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from collections import OrderedDict
 
 from seata.rm.datasource.sql.struct.ColumnMeta import ColumnMeta
diff --git a/seata/rm/datasource/undo/SQLUndoLog.py b/seata/rm/datasource/undo/SQLUndoLog.py
index e2d9419..df8a130 100644
--- a/seata/rm/datasource/undo/SQLUndoLog.py
+++ b/seata/rm/datasource/undo/SQLUndoLog.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class SQLUndoLog(object):
     def __int__(self):
diff --git a/seata/rm/datasource/undo/State.py b/seata/rm/datasource/undo/State.py
index 4b1e529..10eec7b 100644
--- a/seata/rm/datasource/undo/State.py
+++ b/seata/rm/datasource/undo/State.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/rm/datasource/undo/UndoExecutor.py b/seata/rm/datasource/undo/UndoExecutor.py
index 29008a3..9b99bcd 100644
--- a/seata/rm/datasource/undo/UndoExecutor.py
+++ b/seata/rm/datasource/undo/UndoExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.config.Config import ConfigFactory
diff --git a/seata/rm/datasource/undo/UndoExecutorFactory.py b/seata/rm/datasource/undo/UndoExecutorFactory.py
index b1aa445..889b531 100644
--- a/seata/rm/datasource/undo/UndoExecutorFactory.py
+++ b/seata/rm/datasource/undo/UndoExecutorFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 
 from seata.sqlparser.SQLType import SQLType
diff --git a/seata/rm/datasource/undo/UndoExecutorHolder.py b/seata/rm/datasource/undo/UndoExecutorHolder.py
index c061cb4..35d523d 100644
--- a/seata/rm/datasource/undo/UndoExecutorHolder.py
+++ b/seata/rm/datasource/undo/UndoExecutorHolder.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class UndoExecutorHolder:
diff --git a/seata/rm/datasource/undo/UndoExecutorHolderFactory.py b/seata/rm/datasource/undo/UndoExecutorHolderFactory.py
index 74743b1..8480449 100644
--- a/seata/rm/datasource/undo/UndoExecutorHolderFactory.py
+++ b/seata/rm/datasource/undo/UndoExecutorHolderFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.sqlparser.util.JdbcConstants import JdbcConstants
 
 
diff --git a/seata/rm/datasource/undo/UndoLogManager.py b/seata/rm/datasource/undo/UndoLogManager.py
index 176ca06..178db0e 100644
--- a/seata/rm/datasource/undo/UndoLogManager.py
+++ b/seata/rm/datasource/undo/UndoLogManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.config.Config import ConfigFactory
diff --git a/seata/rm/datasource/undo/UndoLogManagerFactory.py b/seata/rm/datasource/undo/UndoLogManagerFactory.py
index 98ffe23..5145fcf 100644
--- a/seata/rm/datasource/undo/UndoLogManagerFactory.py
+++ b/seata/rm/datasource/undo/UndoLogManagerFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.NotSupportYetException import NotSupportYetException
 from seata.sqlparser.util.JdbcConstants import JdbcConstants
 
diff --git a/seata/rm/datasource/undo/UndoLogParser.py b/seata/rm/datasource/undo/UndoLogParser.py
index 5d5ae62..ac7efa8 100644
--- a/seata/rm/datasource/undo/UndoLogParser.py
+++ b/seata/rm/datasource/undo/UndoLogParser.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class UndoLogParser:
     def get_name(self):
diff --git a/seata/rm/datasource/undo/UndoLogParserFactory.py b/seata/rm/datasource/undo/UndoLogParserFactory.py
index 5c1600e..c2644d3 100644
--- a/seata/rm/datasource/undo/UndoLogParserFactory.py
+++ b/seata/rm/datasource/undo/UndoLogParserFactory.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class UndoLogParserFactory:
     DEFAULT_SERIALIZER = "protobuf"
diff --git a/seata/rm/datasource/undo/__init__.py b/seata/rm/datasource/undo/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/undo/__init__.py
+++ b/seata/rm/datasource/undo/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/undo/mysql/MySQLUndoDeleteExecutor.py b/seata/rm/datasource/undo/mysql/MySQLUndoDeleteExecutor.py
index 867e81c..0fd30e7 100644
--- a/seata/rm/datasource/undo/mysql/MySQLUndoDeleteExecutor.py
+++ b/seata/rm/datasource/undo/mysql/MySQLUndoDeleteExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.ColumnUtils import ColumnUtils
 from seata.rm.datasource.undo.UndoExecutor import UndoExecutor
diff --git a/seata/rm/datasource/undo/mysql/MySQLUndoExecutorHolder.py b/seata/rm/datasource/undo/mysql/MySQLUndoExecutorHolder.py
index 89d3934..841abc3 100644
--- a/seata/rm/datasource/undo/mysql/MySQLUndoExecutorHolder.py
+++ b/seata/rm/datasource/undo/mysql/MySQLUndoExecutorHolder.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.undo.UndoExecutorHolder import UndoExecutorHolder
 from seata.rm.datasource.undo.mysql.MySQLUndoDeleteExecutor import MySQLUndoDeleteExecutor
 from seata.rm.datasource.undo.mysql.MySQLUndoInsertExecutor import MySQLUndoInsertExecutor
diff --git a/seata/rm/datasource/undo/mysql/MySQLUndoInsertExecutor.py b/seata/rm/datasource/undo/mysql/MySQLUndoInsertExecutor.py
index d7e2ac0..ad15db5 100644
--- a/seata/rm/datasource/undo/mysql/MySQLUndoInsertExecutor.py
+++ b/seata/rm/datasource/undo/mysql/MySQLUndoInsertExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.undo.UndoExecutor import UndoExecutor
 from seata.sqlparser.util.JdbcConstants import JdbcConstants
diff --git a/seata/rm/datasource/undo/mysql/MySQLUndoLogManager.py b/seata/rm/datasource/undo/mysql/MySQLUndoLogManager.py
index ce2e4c5..9644446 100644
--- a/seata/rm/datasource/undo/mysql/MySQLUndoLogManager.py
+++ b/seata/rm/datasource/undo/mysql/MySQLUndoLogManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.compressor.CompressorType import CompressorType
 from seata.rm.datasource.undo.State import State
 from seata.rm.datasource.undo.UndoLogManager import UndoLogManager
diff --git a/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.py b/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.py
index ab6fde9..cda3a46 100644
--- a/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.py
+++ b/seata/rm/datasource/undo/mysql/MySQLUndoUpdateExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.ColumnUtils import ColumnUtils
 from seata.rm.datasource.undo.UndoExecutor import UndoExecutor
diff --git a/seata/rm/datasource/undo/mysql/__init__.py b/seata/rm/datasource/undo/mysql/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/rm/datasource/undo/mysql/__init__.py
+++ b/seata/rm/datasource/undo/mysql/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/rm/datasource/undo/parser/ProtobufUndoLogParser.py b/seata/rm/datasource/undo/parser/ProtobufUndoLogParser.py
index bfc005a..cd838ae 100644
--- a/seata/rm/datasource/undo/parser/ProtobufUndoLogParser.py
+++ b/seata/rm/datasource/undo/parser/ProtobufUndoLogParser.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from google.protobuf import json_format
 
 from seata.core.util.ClassUtil import ClassUtil
diff --git a/seata/rm/datasource/undo/parser/__init__.py b/seata/rm/datasource/undo/parser/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/undo/parser/__init__.py
+++ b/seata/rm/datasource/undo/parser/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/undo/parser/proto/__init__.py b/seata/rm/datasource/undo/parser/proto/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/rm/datasource/undo/parser/proto/__init__.py
+++ b/seata/rm/datasource/undo/parser/proto/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/rm/datasource/undo/parser/proto/branch_undolog_pb2.py b/seata/rm/datasource/undo/parser/proto/branch_undolog_pb2.py
index c2f042c..e33a3a9 100644
--- a/seata/rm/datasource/undo/parser/proto/branch_undolog_pb2.py
+++ b/seata/rm/datasource/undo/parser/proto/branch_undolog_pb2.py
@@ -1,4 +1,21 @@
 # -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: branch_undolog.proto
 """Generated protocol buffer code."""
diff --git a/seata/sqlparser/SQLDMLRecognizer.py b/seata/sqlparser/SQLDMLRecognizer.py
index 645a864..40cd1b0 100644
--- a/seata/sqlparser/SQLDMLRecognizer.py
+++ b/seata/sqlparser/SQLDMLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.sqlparser.SQLRecognizer import SQLRecognizer
 
 
diff --git a/seata/sqlparser/SQLParsingException.py b/seata/sqlparser/SQLParsingException.py
index 3cf2015..8528bf1 100644
--- a/seata/sqlparser/SQLParsingException.py
+++ b/seata/sqlparser/SQLParsingException.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class SQLParsingException(RuntimeError):
     pass
diff --git a/seata/sqlparser/SQLRecognizer.py b/seata/sqlparser/SQLRecognizer.py
index 72f17ed..dd2817d 100644
--- a/seata/sqlparser/SQLRecognizer.py
+++ b/seata/sqlparser/SQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class SQLRecognizer(object):
diff --git a/seata/sqlparser/SQLType.py b/seata/sqlparser/SQLType.py
index dfe4516..c38ef3c 100644
--- a/seata/sqlparser/SQLType.py
+++ b/seata/sqlparser/SQLType.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from enum import Enum
 
 
diff --git a/seata/sqlparser/__init__.py b/seata/sqlparser/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/__init__.py
+++ b/seata/sqlparser/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/mysql/MySQLDeleteSQLRecognizer.py b/seata/sqlparser/mysql/MySQLDeleteSQLRecognizer.py
index 97f145a..456b373 100644
--- a/seata/sqlparser/mysql/MySQLDeleteSQLRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLDeleteSQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 from am.mysql_base import DeleteStatement
 
diff --git a/seata/sqlparser/mysql/MySQLDmlRecognizer.py b/seata/sqlparser/mysql/MySQLDmlRecognizer.py
index f37fbc6..c2af73b 100644
--- a/seata/sqlparser/mysql/MySQLDmlRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLDmlRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.sqlparser.SQLDMLRecognizer import SQLInsertRecognizer, SQLUpdateRecognizer
 from seata.sqlparser.mysql.MySQLWhereSQLRecognizer import MySQLWhereSQLRecognizer
 
diff --git a/seata/sqlparser/mysql/MySQLInsertSQLRecognizer.py b/seata/sqlparser/mysql/MySQLInsertSQLRecognizer.py
index a91aae2..541d2cf 100644
--- a/seata/sqlparser/mysql/MySQLInsertSQLRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLInsertSQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import InsertStatement
 
 from seata.sqlparser.SQLParsingException import SQLParsingException
diff --git a/seata/sqlparser/mysql/MySQLSelectSQLRecognizer.py b/seata/sqlparser/mysql/MySQLSelectSQLRecognizer.py
index ead73f0..edde99c 100644
--- a/seata/sqlparser/mysql/MySQLSelectSQLRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLSelectSQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import SelectStatement
 
 from seata.sqlparser.mysql.MySQLWhereSQLRecognizer import MySQLWhereSQLRecognizer
diff --git a/seata/sqlparser/mysql/MySQLUpdateSQLRecognizer.py b/seata/sqlparser/mysql/MySQLUpdateSQLRecognizer.py
index 24a2d11..82ee4de 100644
--- a/seata/sqlparser/mysql/MySQLUpdateSQLRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLUpdateSQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import UpdateStatement
 
 from seata.sqlparser.mysql.MySQLDmlRecognizer import MySQLUpdateRecognizer
diff --git a/seata/sqlparser/mysql/MySQLWhereSQLRecognizer.py b/seata/sqlparser/mysql/MySQLWhereSQLRecognizer.py
index 051239d..e4f5e4a 100644
--- a/seata/sqlparser/mysql/MySQLWhereSQLRecognizer.py
+++ b/seata/sqlparser/mysql/MySQLWhereSQLRecognizer.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import MysqlOutputVisitor
 
 from seata.sqlparser.SQLRecognizer import SQLRecognizer
diff --git a/seata/sqlparser/mysql/__init__.py b/seata/sqlparser/mysql/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/mysql/__init__.py
+++ b/seata/sqlparser/mysql/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/mysql/antlr4/__init__.py b/seata/sqlparser/mysql/antlr4/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/mysql/antlr4/__init__.py
+++ b/seata/sqlparser/mysql/antlr4/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/mysql/antlr4/util/MySQLStatementUtil.py b/seata/sqlparser/mysql/antlr4/util/MySQLStatementUtil.py
index e2fe01c..3cbf99c 100644
--- a/seata/sqlparser/mysql/antlr4/util/MySQLStatementUtil.py
+++ b/seata/sqlparser/mysql/antlr4/util/MySQLStatementUtil.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import BitString, RealLiteral, DecimalLiteral, BooleanLiteral, \
     ParameterMarker, StringLiteral, HexadecimalLiteral, NullLiteral
 from seata.sqlparser.mysql.antlr4.value import MySQLValue
diff --git a/seata/sqlparser/mysql/antlr4/util/ParamMysqlOutputVisitor.py b/seata/sqlparser/mysql/antlr4/util/ParamMysqlOutputVisitor.py
index 8147c61..d6a4952 100644
--- a/seata/sqlparser/mysql/antlr4/util/ParamMysqlOutputVisitor.py
+++ b/seata/sqlparser/mysql/antlr4/util/ParamMysqlOutputVisitor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import MysqlOutputVisitor
 
 
diff --git a/seata/sqlparser/mysql/antlr4/util/__init__.py b/seata/sqlparser/mysql/antlr4/util/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/mysql/antlr4/util/__init__.py
+++ b/seata/sqlparser/mysql/antlr4/util/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/mysql/antlr4/value/MySQLValue.py b/seata/sqlparser/mysql/antlr4/value/MySQLValue.py
index 9766b16..0631cbd 100644
--- a/seata/sqlparser/mysql/antlr4/value/MySQLValue.py
+++ b/seata/sqlparser/mysql/antlr4/value/MySQLValue.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 
 class DefaultValue:
diff --git a/seata/sqlparser/mysql/antlr4/value/__init__.py b/seata/sqlparser/mysql/antlr4/value/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/mysql/antlr4/value/__init__.py
+++ b/seata/sqlparser/mysql/antlr4/value/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/mysql/antlr4/visit/MySQLDeleteStatement.py b/seata/sqlparser/mysql/antlr4/visit/MySQLDeleteStatement.py
index b77f65f..907832e 100644
--- a/seata/sqlparser/mysql/antlr4/visit/MySQLDeleteStatement.py
+++ b/seata/sqlparser/mysql/antlr4/visit/MySQLDeleteStatement.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import DeleteStatement
 
 
diff --git a/seata/sqlparser/mysql/antlr4/visit/MySQLInsertStatement.py b/seata/sqlparser/mysql/antlr4/visit/MySQLInsertStatement.py
index 01d356c..8562d8b 100644
--- a/seata/sqlparser/mysql/antlr4/visit/MySQLInsertStatement.py
+++ b/seata/sqlparser/mysql/antlr4/visit/MySQLInsertStatement.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import InsertStatement, Constant, FunctionCall
 
 from seata.sqlparser.mysql.antlr4.util.MySQLStatementUtil import MySQLStatementUtil
diff --git a/seata/sqlparser/mysql/antlr4/visit/MySQLSelectForUpdateStatement.py b/seata/sqlparser/mysql/antlr4/visit/MySQLSelectForUpdateStatement.py
index 40cb47e..05216e0 100644
--- a/seata/sqlparser/mysql/antlr4/visit/MySQLSelectForUpdateStatement.py
+++ b/seata/sqlparser/mysql/antlr4/visit/MySQLSelectForUpdateStatement.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import SelectStatement
 
 
diff --git a/seata/sqlparser/mysql/antlr4/visit/MySQLUpdateStatement.py b/seata/sqlparser/mysql/antlr4/visit/MySQLUpdateStatement.py
index 69471af..225f2f4 100644
--- a/seata/sqlparser/mysql/antlr4/visit/MySQLUpdateStatement.py
+++ b/seata/sqlparser/mysql/antlr4/visit/MySQLUpdateStatement.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import UpdateStatement, Default, Constant
 
 from seata.sqlparser.mysql.antlr4.util.MySQLStatementUtil import MySQLStatementUtil
diff --git a/seata/sqlparser/mysql/antlr4/visit/__init__.py b/seata/sqlparser/mysql/antlr4/visit/__init__.py
index cd25800..a99d5ae 100644
--- a/seata/sqlparser/mysql/antlr4/visit/__init__.py
+++ b/seata/sqlparser/mysql/antlr4/visit/__init__.py
@@ -1,4 +1,18 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
diff --git a/seata/sqlparser/util/CollectionUtil.py b/seata/sqlparser/util/CollectionUtil.py
index 4ee1dde..154f7bf 100644
--- a/seata/sqlparser/util/CollectionUtil.py
+++ b/seata/sqlparser/util/CollectionUtil.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class CollectionUtil:
 
diff --git a/seata/sqlparser/util/JdbcConstants.py b/seata/sqlparser/util/JdbcConstants.py
index e8b61c3..61ed22c 100644
--- a/seata/sqlparser/util/JdbcConstants.py
+++ b/seata/sqlparser/util/JdbcConstants.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class JdbcConstants(object):
 
diff --git a/seata/sqlparser/util/SQLUtil.py b/seata/sqlparser/util/SQLUtil.py
index 62d63b6..7be70f5 100644
--- a/seata/sqlparser/util/SQLUtil.py
+++ b/seata/sqlparser/util/SQLUtil.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.rm.datasource.ColumnUtils import ColumnUtils
 
 
diff --git a/seata/sqlparser/util/__init__.py b/seata/sqlparser/util/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/sqlparser/util/__init__.py
+++ b/seata/sqlparser/util/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/seata/tm/DefaultTransactionManager.py b/seata/tm/DefaultTransactionManager.py
index 032dd88..c448480 100644
--- a/seata/tm/DefaultTransactionManager.py
+++ b/seata/tm/DefaultTransactionManager.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.protocol.ResultCode import ResultCode
 from seata.core.protocol.transaction.GlobalBeginRequestResponse import GlobalBeginRequest
 from seata.core.protocol.transaction.GlobalCommitRequestResponse import GlobalCommitRequest
diff --git a/seata/tm/TMClient.py b/seata/tm/TMClient.py
index 1841db7..bc27506 100644
--- a/seata/tm/TMClient.py
+++ b/seata/tm/TMClient.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import threading
 import time
 
diff --git a/seata/tm/TMHandler.py b/seata/tm/TMHandler.py
index 5b99a13..1c302b5 100644
--- a/seata/tm/TMHandler.py
+++ b/seata/tm/TMHandler.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.protocol.MessageType import MessageType
diff --git a/seata/tm/TransactionalTemplate.py b/seata/tm/TransactionalTemplate.py
index 663bdab..7445b27 100644
--- a/seata/tm/TransactionalTemplate.py
+++ b/seata/tm/TransactionalTemplate.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from functools import wraps
 
 from seata.core.model.GlobalStatus import GlobalStatus
diff --git a/seata/tm/__init__.py b/seata/tm/__init__.py
index b21f691..d158c96 100644
--- a/seata/tm/__init__.py
+++ b/seata/tm/__init__.py
@@ -1,3 +1,17 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
diff --git a/seata/tm/api/DefaultGlobalTransaction.py b/seata/tm/api/DefaultGlobalTransaction.py
index 2f6a3f1..c241173 100644
--- a/seata/tm/api/DefaultGlobalTransaction.py
+++ b/seata/tm/api/DefaultGlobalTransaction.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from loguru import logger
 
 from seata.core.context.RootContext import RootContext
diff --git a/seata/tm/api/GlobalTransaction.py b/seata/tm/api/GlobalTransaction.py
index abd9f5c..c86a919 100644
--- a/seata/tm/api/GlobalTransaction.py
+++ b/seata/tm/api/GlobalTransaction.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 
 class GlobalTransaction:
     def begin(self, timeout=None, name="default"):
diff --git a/seata/tm/api/GlobalTransactionContext.py b/seata/tm/api/GlobalTransactionContext.py
index 1da4f78..80224aa 100644
--- a/seata/tm/api/GlobalTransactionContext.py
+++ b/seata/tm/api/GlobalTransactionContext.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.context.RootContext import RootContext
 from seata.core.model.GlobalStatus import GlobalStatus
 from seata.tm.api.DefaultGlobalTransaction import DefaultGlobalTransaction
diff --git a/seata/tm/api/GlobalTransactionRole.py b/seata/tm/api/GlobalTransactionRole.py
index 4ef442f..b77c0d1 100644
--- a/seata/tm/api/GlobalTransactionRole.py
+++ b/seata/tm/api/GlobalTransactionRole.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import enum
 
 
diff --git a/seata/tm/api/TransactionalExecutor.py b/seata/tm/api/TransactionalExecutor.py
index 5344c00..9ffae1e 100644
--- a/seata/tm/api/TransactionalExecutor.py
+++ b/seata/tm/api/TransactionalExecutor.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import enum
 
 
diff --git a/seata/tm/api/__init__.py b/seata/tm/api/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/tm/api/__init__.py
+++ b/seata/tm/api/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file
diff --git a/setup.py b/setup.py
index b7ac463..afdb777 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 
 import setuptools


Test patch:
diff --git a/flask-sample/flask_test.py b/flask-sample/flask_test.py
index 11c430b..638dfd6 100644
--- a/flask-sample/flask_test.py
+++ b/flask-sample/flask_test.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import sys
 
 from flask import Flask, request
diff --git a/flask-sample/flask_test2.py b/flask-sample/flask_test2.py
index 6390f77..a0c17ac 100644
--- a/flask-sample/flask_test2.py
+++ b/flask-sample/flask_test2.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import sys
 
 from flask import Flask, request
diff --git a/flask-sample/test_dao.py b/flask-sample/test_dao.py
index e148802..a1d3b67 100644
--- a/flask-sample/test_dao.py
+++ b/flask-sample/test_dao.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import datetime
 
 from db import DB
diff --git a/flask-sample/test_service.py b/flask-sample/test_service.py
index d9ae2dd..99c1c12 100644
--- a/flask-sample/test_service.py
+++ b/flask-sample/test_service.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.tm.TransactionalTemplate import GlobalTransactional
 
 from test_dao import TestDao
diff --git a/flask-sample/test_service2.py b/flask-sample/test_service2.py
index f38554f..638c68f 100644
--- a/flask-sample/test_service2.py
+++ b/flask-sample/test_service2.py
@@ -1,6 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import requests
 from seata.core.context.RootContext import RootContext
 from seata.tm.TransactionalTemplate import GlobalTransactional
diff --git a/seata/test/ConfigurationTest.py b/seata/test/ConfigurationTest.py
index 8e6f054..4663fb5 100644
--- a/seata/test/ConfigurationTest.py
+++ b/seata/test/ConfigurationTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 
 from seata.config.Config import ConfigFactory
diff --git a/seata/test/EnumTest.py b/seata/test/EnumTest.py
index 752d6b4..912844c 100644
--- a/seata/test/EnumTest.py
+++ b/seata/test/EnumTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.core.model.GlobalStatus import GlobalStatus
 
 if __name__ == '__main__':
diff --git a/seata/test/InsertTest.py b/seata/test/InsertTest.py
index eb8b9dc..f91be3c 100644
--- a/seata/test/InsertTest.py
+++ b/seata/test/InsertTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import datetime
 import os
 import time
diff --git a/seata/test/MySQLStatementTest.py b/seata/test/MySQLStatementTest.py
index f2ad41d..d788417 100644
--- a/seata/test/MySQLStatementTest.py
+++ b/seata/test/MySQLStatementTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import MySqlBase, MysqlStatementVisitor, MysqlOutputVisitor
 
 from seata.sqlparser.mysql.antlr4.visit.MySQLDeleteStatement import MySQLDeleteStatement
diff --git a/seata/test/ProtobufTest.py b/seata/test/ProtobufTest.py
index a0c9122..c5f743e 100644
--- a/seata/test/ProtobufTest.py
+++ b/seata/test/ProtobufTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from google.protobuf import json_format
 
 from seata.core.util.ClassUtil import ClassUtil
diff --git a/seata/test/RpcTest.py b/seata/test/RpcTest.py
index 6bf9e6b..8686e20 100644
--- a/seata/test/RpcTest.py
+++ b/seata/test/RpcTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 import os
 
 from seata.boot.GlobalTransactionScanner import GlobalTransactionScanner
diff --git a/seata/test/SqlParserTest.py b/seata/test/SqlParserTest.py
index 7c27894..65cdec0 100644
--- a/seata/test/SqlParserTest.py
+++ b/seata/test/SqlParserTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from am.mysql_base import MySqlBase, MysqlOutputVisitor, MysqlStatementVisitor
 
 
diff --git a/seata/test/SqlTest.py b/seata/test/SqlTest.py
index ceb503d..d8180f2 100644
--- a/seata/test/SqlTest.py
+++ b/seata/test/SqlTest.py
@@ -1,7 +1,21 @@
-#!/usr/bin/env python3
-# -*- coding:utf-8 -*-
-# @author jsbxyyx
-# @since 1.0
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
 from seata.exception.ShouldNeverHappenException import ShouldNeverHappenException
 from seata.rm.datasource.sql.SQLVisitorFactory import SQLVisitorFactory
 from seata.sqlparser.util.JdbcConstants import JdbcConstants
diff --git a/seata/test/__init__.py b/seata/test/__init__.py
index e69de29..40ab7eb 100644
--- a/seata/test/__init__.py
+++ b/seata/test/__init__.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+"""
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
\ No newline at end of file