Supplemental Data for the paper: "PyCG: Practicall Call Graph Generation in Python"

Directory structure

- /depends: Contains three minimal test cases where depends fails to produce a correct output.
    - /depends/higher-order: depends cannot handle higher order functions.
    - /depends/assignments: depends cannot handle function assignments.
    - /depends/module_namespace: depends cannot handle calls from a module's namespace.
    - /depends/<test>/out.json: Call graph generated by depends.
    - /depends/<test>/test: Python code used for the test.
- /macro-benchmark: Contains the macro benchmark.
    - /macro-benchmark/pycg-cgs: PyCG call graphs.
    - /macro-benchmark/pyan-cgs: pyan call graphs.
    - /macro-benchmark/oracle-cgs: Oracle call graphs.
- /micro-benchmark: Contains the micro benchmark.
    - /micro-benchmark/<category>/: Tests for a specific category.
    - /micro-benchmark/<category>/<test>: A single test.
    - /micro-benchmark/<category>/<test>/*.py: Python files used for the test. Entry point is always `main.py`.
    - /micro-benchmark/<category>/<test>/README: Description of the test
    - /micro-benchmark/<category>/<test>/cg.json: Expected call graph.

The command we used to generate depends call graphs is:
    depends --granularity=method python test out
