Developers' Guide
Steps to get an operational virtual environment:
- git clone https://github.com/apache/skywalking-python.git
- Run the script(setup-linux.sh,setup-windows.ps1) for your relevant OS to create a virtual environment folder in the project root (skywalking-python/venv) and install all the necessary requirements
- Set up your IDE to use the generated virtual environment of Python
Developing a new plugin
You can always take the existing plugins as examples, while there are some general ideas for all plugins.
- 
A plugin is a module under the directory skywalking/pluginswith aninstallmethod;
- 
Inside the installmethod, you find out the relevant method(s) of the libraries that you plan to instrument, and create/close spans before/after those method(s).
- 
You should also provide version rules in the plugin module, which means the version of package your plugin support. You should init a dict with keys nameandrules. thenameis your plugin’s corresponding package’s name, therulesis the version rules this package should follow.You can use >, >=, ==, <=, <, and != operators in rules. The relation between rules element in the rules array is OR, which means the version of the package should follow at least one rule in rules array. You can set many version rules in one element of rules array, separate each other with a space character, the relation of rules in one rule element is AND, which means the version of package should follow all rules in this rule element. For example, below version_ruleindicates that the package version ofdjangoshould>=2.0 AND <=2.3 AND !=2.2.1OR>3.0.version_rule = { "name": "django", "rules": [">=2.0 <=2.3 !=2.2.1", ">3.0"] }
- 
Every plugin requires a corresponding test under tests/pluginbefore it can be merged, refer to the plugin test guide when writing a plugin test.
- 
Update the Supported Plugin List. 
- 
Add the environment variables to Environment Variable list if any. 
Steps after coding
If your PR introduces the need for a new non-standard library which needs to be pulled via pip or if it removes the need for a previously-used library:
- Execute the build_requirementsscript relevant to your OS.
- Double check the requirements.txtfile in the project root to ensure that the changes have been reflected.