Closed nadrimajstor closed 6 years ago
So I've checked the mkosi thing, on Python 3 a filter like ~Q(kind="line"),~Q(module="six"),~Q(filename=""),stdlib=False
would produce similar output, eg:
$ PYTHONHUNTER='~Q(kind="line"),~Q(module="six"),~Q(filename=""),stdlib=False' python mkosi
mkosi:4 call => <module>()
mkosi:26 exception <! <module>: (<class 'ModuleNotFoundError'>, ModuleNotFoundError("No module named 'argcomplete'",), <traceback object at 0x7fbd0ac9be48>)
mkosi:51 call => OutputFormat()
mkosi:57 return <= OutputFormat: None
mkosi:59 call => Distribution()
mkosi:66 return <= Distribution: None
mkosi:160 call => _IOW(type=148, nr=9, size='int')
mkosi:157 call => _IOC(dir=1, type=148, nr=9, argtype='int')
mkosi:159 return <= _IOC: 1074041865
mkosi:161 return <= _IOW: 1074041865
mkosi:2150 call => PackageAction()
mkosi:2151 return <= PackageAction: None
mkosi:3362 call => main()
mkosi:2722 call => load_args()
mkosi:2158 call => parse_args()
mkosi:2229 exception <! parse_args: (<class 'NameError'>, NameError("name 'argcomplete' is not defined",), <traceback object at 0x7fbd0ac37408>)
mkosi:2239 return <= parse_args: Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False)
mkosi:2572 call => load_defaults(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False))
mkosi:2540 call => load_defaults_file(fname='mkosi.default', options={})
mkosi:2158 call => parse_args()
mkosi:2229 exception <! parse_args: (<class 'NameError'>, NameError("name 'argcomplete' is not defined",), <traceback object at 0x7fbd0ac429c8>)
mkosi:2239 return <= parse_args: Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False)
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Distribution', key=None, value=None)
mkosi:2391 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Distribution', key='Distribution', value='fedora')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Distribution', key='Release', value='27')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Output', key=None, value=None)
mkosi:2443 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Output', key='Format', value='raw_squashfs')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Output', key='Bootable', value='yes')
mkosi:2363 call => parse_boolean(s='yes')
mkosi:2366 return <= parse_boolean: True
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=True, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Packages', key=None, value=None)
mkosi:2493 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=True, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Packages', key='Packages', value='\narch-install-scripts\nbtrfs-progs\ndebootstrap\ndnf\ndosfstools\ngit\ngnupg\nsquashfs-tools\ntar\nveritysetup')
mkosi:2538 return <= process_setting: True
mkosi:2570 return <= load_defaults_file: {'Distribution': {'Distribution': 'fedora', 'Release': '27'}, 'Output': {'Format': 'raw_squashfs', 'Bootable': 'yes'}, 'Packages': {'Packages': ['arch-install-scripts', 'btrfs-progs', 'debootstrap', 'dnf', 'dosfstools', 'git', 'gnupg', 'squashfs-tools', 'tar', 'veritysetup']}}
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution=None, encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Distribution', key='Distribution', value='fedora')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release=None, repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Distribution', key='Release', value='27')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format=None, packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Output', key='Format', value='raw_squashfs')
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=None, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Output', key='Bootable', value='yes')
mkosi:2363 call => parse_boolean(s='yes')
mkosi:2366 return <= parse_boolean: True
mkosi:2538 return <= process_setting: True
mkosi:2373 call => process_setting(args=Namespace(bmap=False, bootable=True, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=None, password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False), section='Packages', key='Packages', value=['arch-install-scripts', 'btrfs-progs', 'debootstrap', 'dnf', 'dosfstools', 'git', 'gnupg', 'squashfs-tools', 'tar', 'veritysetup'])
mkosi:2538 return <= process_setting: True
mkosi:2585 return <= load_defaults: None
mkosi:2589 call => find_nspawn_settings(args=Namespace(bmap=False, bootable=True, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=['arch-install-scripts', 'btrfs-progs', 'debootstrap', 'dnf', 'dosfstools', 'git', 'gnupg', 'squashfs-tools', 'tar', 'veritysetup'], password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False))
mkosi:2593 return <= find_nspawn_settings: None
mkosi:2596 call => find_extra(args=Namespace(bmap=False, bootable=True, build_dir=None, build_packages=None, build_script=None, build_sources=None, cache_path=None, checksum=False, cmdline=[], compress=False, default_path=None, directory=None, distribution='fedora', encrypt=None, esp_size=None, extra_trees=None, force_count=0, git_files=None, home_size=None, hostname=None, incremental=False, kernel_commandline=None, key=None, mirror=None, nspawn_settings=None, output=None, output_dir=None, output_format='raw_squashfs', packages=['arch-install-scripts', 'btrfs-progs', 'debootstrap', 'dnf', 'dosfstools', 'git', 'gnupg', 'squashfs-tools', 'tar', 'veritysetup'], password=None, postinst_script=None, read_only=False, release='27', repositories=None, root_size=None, secure_boot=False, secure_boot_certificate=None, secure_boot_key=None, sign=False, srv_size=None, swap_size=None, use_git_files=None, verb='build', verity=False, with_docs=False, with_network=False, with_tests=True, xz=False))
mkosi:2597 return <= find_extra: None
... blablabla ...
Note that ~
is a negation.
Anyway, the filter is long and cumbersome, but this kinda outlines another big difference in philosophy between hunter and pytrace - hunter is designed to be simple and reliable: avoid storage, have no/selfcontained dependencies and have CI/quality control (pytrace is so broken I'm really surprised you got it to run). Because of that it doesn't try to be very smart and second guess what you want - you're required to have the hands on the wheel, so to speak.
To put it differently: Hunter could have a brief=True
option but it's hard to say what it should filter. Just the line events, everything from site-packages or just six
, and what about the borked frames from the interpreter bootstrap?
I'm sorry if we might misunderstood each other. I did not want to ask for any changes. For my use-case
PYTHONHUNTER='~Q(kind="line"),~Q(module="six"),~Q(filename=""),stdlib=False' python3 some_script
is a perfect replacement for pytrace
. Thank you.
BTW, why does return
part become dedented if its after exception
?
It was a buggy bug. Fixed now. This is the new part in the cookbook: https://python-hunter.readthedocs.io/en/latest/cookbook.html#walkthrough
A cookbook example that would for a given module name create the report of all module's function calls including all argument names plus corresponding argument's and function's return values.
A real use-case: A newb (me) is for the first time looking at a module/script mkosi. There is a lot of options that would produce different results. Hopefully there are some sensible defaults. I would like to start with a walkthrough and see how it works. Here is an example of accomplishing this task using pytrace: