copr-backend noarch 8937eddd907101df9f988b8fbbcea97373cad3a0b349f261ef2d6c612028abb0 Backend for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains backend. https://github.com/fedora-copr/copr copr-backend src 89232df223e22c1283a52a99a478bb6862a2f15265fab5b857d575238dc34dc7 Backend for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains backend. https://github.com/fedora-copr/copr copr-backend-doc noarch 4df7d78d4f74dcc44527cfc1604c15f052897d15d009fc562adc3026bcb66f57 Code documentation for COPR backend COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latests builds. This package include documentation for COPR code. Mostly useful for developers only. https://github.com/fedora-copr/copr copr-builder aarch64 82f98d62761ab588a3da1c473c52137e4039b6703cb013b7c783bbd036950887 copr-rpmbuild with all weak dependencies Provides command capable of running COPR build-tasks. Example: copr-rpmbuild 12345-epel-7-x86_64 will locally build build-id 12345 for chroot epel-7-x86_64. This package contains all optional modules for building SRPM. https://github.com/fedora-copr/copr copr-cli noarch 0f0d585f738d554cd46f1a671aa72d7ab4ca09523ae87b05d9bdc8cbaefc672e Command line interface for COPR COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latests builds. This package contains command line interface. https://github.com/fedora-copr/copr copr-cli src 5fbe169fe7c3270f5952d3f657cbe231e7af31cc98ae84c9f47ba7e00badda24 Command line interface for COPR COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latests builds. This package contains command line interface. https://github.com/fedora-copr/copr copr-dist-git noarch 1da873bd4260ac412e3d2b7d49f5f7a4c0a2b66df83d3b12ffc11bc4e7bf2b6d Copr services for Dist Git server COPR is lightweight build system. It allows you to create new project in WebUI and submit new builds and COPR will create yum repository from latest builds. This package contains Copr services for Dist Git server. https://github.com/fedora-copr/copr copr-dist-git src 9b380e53730eb5b4fb27d4815f9b7e078061d1e6e7bb1a23f6009843946dda40 Copr services for Dist Git server COPR is lightweight build system. It allows you to create new project in WebUI and submit new builds and COPR will create yum repository from latest builds. This package contains Copr services for Dist Git server. https://github.com/fedora-copr/copr copr-distgit-client aarch64 382381cc68c294c77a81d62392c6a00a258c1c73750e34cd6daa988266bfd76b Utility to download sources from dist-git A simple, configurable python utility that is able to download sources from various dist-git instances, and generate source RPMs. The utility is able to automatically map the .git/config clone URL into the corresponding dist-git instance configuration. https://github.com/fedora-copr/copr copr-frontend noarch 5a8a2a42d5bdc4b55c346085cc07a98cfb96a5e562311cef256e2593bc89fae0 Frontend for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latests builds. This package contains frontend. https://github.com/fedora-copr/copr copr-frontend src 8a5ff65f07798dfdec64ee06fdc1f3379ab83afa6c74174a4f56a1093ccc0427 Frontend for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latests builds. This package contains frontend. https://github.com/fedora-copr/copr copr-frontend-devel noarch 043b04be82abd3e9b2606211dd0765c478238ebe279414563c6f837f2b197484 Development files to build against copr-frontend Files which allow a build against copr-frontend, currently it's useful to build custom copr-frontend-flavor package. https://github.com/fedora-copr/copr copr-frontend-fedora noarch f69891fa8ad9279063db0ca37f95a5dcc05f952c89a89f6f525aa8ee5611de9b Template files for copr-frontend Template files for copr-frontend (basically colors, logo, etc.). This package is designed to be replaced - build your replacement package against copr-frontend-devel to produce compatible {name}-flavor package, then use man dnf.conf(5) 'priority' option to prioritize your package against the default package we provide. https://github.com/fedora-copr/copr copr-keygen noarch 50b6271126049dda9c20fa5f71450e11865b0d3ed5502264cccef3032be61ac0 Part of Copr build system. Aux service that generate keys for signd COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains aux service that generate keys for package signing. https://github.com/fedora-copr/copr copr-keygen src 9c298123059a546a22c275ee0a0966a5b6098e1a4995d1d40d96b07b1aff5ba4 Part of Copr build system. Aux service that generate keys for signd COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains aux service that generate keys for package signing. https://github.com/fedora-copr/copr copr-rpmbuild aarch64 768b21fa988b0089472a37eb603352a5d0efcacfa21bebe628d2de6b3fe61e6f Run COPR build tasks Provides command capable of running COPR build-tasks. Example: copr-rpmbuild 12345-epel-7-x86_64 will locally build build-id 12345 for chroot epel-7-x86_64. https://github.com/fedora-copr/copr copr-rpmbuild src 55859fe4ae96c8b38dbe6177fc03210d4b8c4ff1da3d2deb949cd05104b9b64e Run COPR build tasks Provides command capable of running COPR build-tasks. Example: copr-rpmbuild 12345-epel-7-x86_64 will locally build build-id 12345 for chroot epel-7-x86_64. https://github.com/fedora-copr/copr dist-git noarch 95f7f487082c0716762e46d1659d2102553a039758148873965170deb7cc2b20 Package source version control system DistGit is a Git repository specifically designed to hold RPM package sources. https://github.com/release-engineering/dist-git dist-git src 392cfdb025f17ba4866c5df2ee4c0e3813b76cbf694d3cff48c65245cb171692 Package source version control system DistGit is a Git repository specifically designed to hold RPM package sources. https://github.com/release-engineering/dist-git dist-git-selinux noarch cc6efa4f98b8ba5dc38792301d8fd94a8fc4d6ade93225a4aeeed939650fbd58 SELinux support for dist-git Dist Git is a remote Git repository specifically designed to hold RPM package sources. This package includes SELinux support. https://github.com/release-engineering/dist-git distribution-gpg-keys noarch 324285bab4d8050990e1cfd5792b83d9912637efc0d6b9da4af9da564f58b2fe GPG keys of various Linux distributions GPG keys used by various Linux distributions to sign packages. https://github.com/xsuchy/distribution-gpg-keys distribution-gpg-keys src 460cd35c8e50d9478170cbed8d1b6a38337f3898bb5103ba2aa171964f54a939 GPG keys of various Linux distributions GPG keys used by various Linux distributions to sign packages. https://github.com/xsuchy/distribution-gpg-keys distribution-gpg-keys-copr noarch 1a1df874a3bc1840bc5367598ebd62f019369731f60968437e4600a101fd7185 GPG keys for Copr projects GPG keys used by Copr projects. https://github.com/xsuchy/distribution-gpg-keys kernel-rpm-macros aarch64 93eab7b0cac532bf10399a2bfe99868b767b774cdccd194bbadae461e301ef11 Macros and scripts for building kernel module packages Macros and scripts for building kernel module packages. https://gitee.com/openeuler/openEuler-rpm-config koji noarch f39c01f36a71b69e6f395d8ca89c20e5d6666da44aac73a3489e87d07fa2ca04 Build system tools Koji is a system for building and tracking RPMS. The base package contains shared libraries and the command-line interface. https://pagure.io/koji/ koji src bfa86f37272dde968a3a0e8c147a643b10194791fd10bb5d45f61707f603a35c Build system tools Koji is a system for building and tracking RPMS. The base package contains shared libraries and the command-line interface. https://pagure.io/koji/ koji-builder-plugin-rpmautospec noarch 35e59b520df767a600b26269493e1b384f6d0e5897d0df87cbc8292fe821d009 Koji plugin for generating RPM releases and changelogs A Koji plugin for generating RPM releases and changelogs. https://pagure.io/fedora-infra/rpmautospec mock noarch da3bbc8ccae691d5d8904dbf53664fbe314c51d29a29391131f9fcd6429d39b2 Builds packages inside chroots Mock takes an SRPM and builds it in a chroot. https://github.com/rpm-software-management/mock/ mock src 67ba22fd78f55e8f4d524ab11ebcb8a6d02c9504065e1e4fe716f73503c701d4 Builds packages inside chroots Mock takes an SRPM and builds it in a chroot. https://github.com/rpm-software-management/mock/ mock-core-configs noarch 096d5438416cf14d14705a1963ebaa67bc372a3e72925805e9f2e94884cdb282 Mock core config files basic chroots Config files which allow you to create chroots for: * Fedora * Epel * Mageia * Custom chroot * OpenSuse Tumbleweed and Leap * openEuler https://github.com/rpm-software-management/mock/ mock-core-configs src 136520fc3012cae1dd8164f09d99d06ae7abc8fa757d52db4d2bde3a86436320 Mock core config files basic chroots Config files which allow you to create chroots for: * Fedora * Epel * Mageia * Custom chroot * OpenSuse Tumbleweed and Leap * openEuler https://github.com/rpm-software-management/mock/ mock-filesystem noarch 277c45eef953e91b027499855fd7d3332241f4496e4794ccf8feaf9b4658539c Mock filesystem layout Filesystem layout and group for Mock. https://github.com/rpm-software-management/mock/ mock-lvm noarch f0bc6c442c81365493a29c57e712f641eef8b10c91aff79acc8e5969ba7d1fb1 LVM plugin for mock Mock plugin that enables using LVM as a backend and support creating snapshots of the buildroot. https://github.com/rpm-software-management/mock/ mock-scm noarch 702d4d0653031d55246bbac710e1acc8ebede3c9fc94071e73b012448baa2d26 Mock SCM integration module Mock SCM integration module. https://github.com/rpm-software-management/mock/ modulemd-tools noarch b1b16dbce358ee286df0ccfda106c5cbec04d9cbe7c511aeeddebe59d34f0d64 Collection of tools for parsing and generating modulemd YAML files Tools provided by this package: repo2module - Takes a YUM repository on its input and creates modules.yaml containing YAML module definitions generated for each package. dir2module - Generates a module YAML definition based on essential module information provided via command-line parameters. The packages provided by the module are found in a specified directory or a text file containing their list. createrepo_mod - A small wrapper around createrepo_c and modifyrepo_c to provide an easy tool for generating module repositories. modulemd-add-platform - Add a new context configuration for a new platform into a modulemd-packager file. modulemd-merge - Merge several modules.yaml files into one. This is useful for example if you have several yum repositories and want to merge them into one. modulemd-generate-macros - Generate module-build-macros SRPM package, which is a central piece for building modules. It should be present in the buildroot before any other module packages are submitted to be built. bld2repo - Simple tool for dowloading build required RPMs of a modular build from koji. https://github.com/rpm-software-management/modulemd-tools modulemd-tools src 5884020e63839607a6b5b34d55219bfac8ad146d00ea9d9722bddb819d63d7a6 Collection of tools for parsing and generating modulemd YAML files Tools provided by this package: repo2module - Takes a YUM repository on its input and creates modules.yaml containing YAML module definitions generated for each package. dir2module - Generates a module YAML definition based on essential module information provided via command-line parameters. The packages provided by the module are found in a specified directory or a text file containing their list. createrepo_mod - A small wrapper around createrepo_c and modifyrepo_c to provide an easy tool for generating module repositories. modulemd-add-platform - Add a new context configuration for a new platform into a modulemd-packager file. modulemd-merge - Merge several modules.yaml files into one. This is useful for example if you have several yum repositories and want to merge them into one. modulemd-generate-macros - Generate module-build-macros SRPM package, which is a central piece for building modules. It should be present in the buildroot before any other module packages are submitted to be built. bld2repo - Simple tool for dowloading build required RPMs of a modular build from koji. https://github.com/rpm-software-management/modulemd-tools mysql-connector-python src 44458248879dd07103f745ee414eafc03587ca9b1e8fcfb91d90c511c7a8ad37 MySQL driver written in Python MySQL driver written in Python which does not depend on MySQL C client libraries and implements the DB API v2.0 specification (PEP-249). http://dev.mysql.com/doc/connector-python/en/index.html mysql-connector-python-debuginfo aarch64 71d0bd93b4fced02b0ab131cd7231a40c53b76ea6ceee506cc9467b065d96495 Debug information for package mysql-connector-python This package provides debug information for package mysql-connector-python. Debug information is useful when developing applications that use this package or when debugging this package. http://dev.mysql.com/doc/connector-python/en/index.html mysql-connector-python-debugsource aarch64 0044486f1267afc1004124c6d8a4d3fb8287abe2ac2070053918ba06ace92e6e Debug sources for package mysql-connector-python This package provides debug sources for package mysql-connector-python. Debug sources are useful when developing applications that use this package or when debugging this package. http://dev.mysql.com/doc/connector-python/en/index.html mysql-connector-python-help aarch64 5a1325ad1f5ea768b63795eb2c71a93f688d16b25df7d276502013e20789e672 Development documents and examples for mysql-connector-python MySQL driver written in Python which does not depend on MySQL C client libraries and implements the DB API v2.0 specification (PEP-249). http://dev.mysql.com/doc/connector-python/en/index.html mysql-connector-python3 aarch64 5c0c099cf6da2ca8b2067133cb882e2d994c71ddc6b4b57e9f8230e7f1b7df44 MySQL driver written in Python MySQL driver written in Python which does not depend on MySQL C client libraries and implements the DB API v2.0 specification (PEP-249). http://dev.mysql.com/doc/connector-python/en/index.html nosync aarch64 7f004853e613016fe494d3928c503fac266e7f0cf53f84f2c1f82c54063d53d9 Preload library for disabling file's content synchronization nosync is a small preload library that can be used to disable synchronization of file's content with storage devices on GNU/Linux. It works by overriding implementations of certain standard functions like fsync or open. http://github.com/kjn/nosync nosync src ff11e968dc47e0cafd5516dc494402459cd7900c7192ad0bac213025e1ed45fa Preload library for disabling file's content synchronization nosync is a small preload library that can be used to disable synchronization of file's content with storage devices on GNU/Linux. It works by overriding implementations of certain standard functions like fsync or open. http://github.com/kjn/nosync nosync-debuginfo aarch64 1596419ae30ce2650633f70b738200477c534b06aab8d9ea41fec16c5cbd2980 Debug information for package nosync This package provides debug information for package nosync. Debug information is useful when developing applications that use this package or when debugging this package. http://github.com/kjn/nosync nosync-debugsource aarch64 24f028278e52070bd7eecaa3792aafd9b6447b578474b96f2c2a987553b10b68 Debug sources for package nosync This package provides debug sources for package nosync. Debug sources are useful when developing applications that use this package or when debugging this package. http://github.com/kjn/nosync obs-signd aarch64 823f2ebbaa11ed77225c04d3a57860c39e7fe29d54c76d3dabc6251257ef1db2 The OBS sign daemon The OpenSUSE Build Service sign client and daemon. This daemon can be used to sign anything via gpg by communicating with a remote server to avoid the need to host the private key on the same server. https://github.com/openSUSE/obs-sign obs-signd src 997a104078744e0ffdfbc60d862421dd206015a9b8f16c5066c0497e0bf3580f The OBS sign daemon The OpenSUSE Build Service sign client and daemon. This daemon can be used to sign anything via gpg by communicating with a remote server to avoid the need to host the private key on the same server. https://github.com/openSUSE/obs-sign obs-signd-debuginfo aarch64 4b188654dde0093f0000efb7dc8bf3f0a5e8ba89dfc58620d12480247a1edf43 Debug information for package obs-signd This package provides debug information for package obs-signd. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/openSUSE/obs-sign obs-signd-debugsource aarch64 b42f7e4a97ff0829fec4a0f3a091ca2671f289d5aac26d84292bf67dae5cf6b7 Debug sources for package obs-signd This package provides debug sources for package obs-signd. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/openSUSE/obs-sign openEuler-rpm-config aarch64 6a0c28a1b552a44d7168ae608476665e98c6b89f97824731613dc9d49825a3a5 specific rpm configuration files specific rpm configuration files for openEuler. https://gitee.com/openeuler/openEuler-rpm-config openEuler-rpm-config src cd1494b2baf84dcd1a491da443a7fb10423b103723498eb2931594eef4f404ae specific rpm configuration files specific rpm configuration files for openEuler. https://gitee.com/openeuler/openEuler-rpm-config preproc noarch c7c907b7de304a3d8ef99190260e4f2ad5bf238113c9c7bce25365b9c512e741 Simple text preprocessor Simple text preprocessor implementing a very basic templating language. You can use bash code enclosed in triple braces in a text file and then pipe content of that file to preproc. preproc will replace each of the tags with stdout of the executed code and print the final renderred result to its own stdout. https://pagure.io/rpkg-util.git preproc src 320b652187832a6a144385c0b0a1e1b8c343d155a2a403b0e7ee788b35bdbde0 Simple text preprocessor Simple text preprocessor implementing a very basic templating language. You can use bash code enclosed in triple braces in a text file and then pipe content of that file to preproc. preproc will replace each of the tags with stdout of the executed code and print the final renderred result to its own stdout. https://pagure.io/rpkg-util.git procenv aarch64 73958ab0d7e8c8f590d396e94f6c69f3003c551b362519f25d3dcfa6f9b4d87d Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv aarch64 dd138375271279b499145b6e0c1266ad052cf723db6ecfee3cc3f37f9c5785cb Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv aarch64 e58be34c2f9ac0560bcedc1c29c35283e28e9d9d01879cdb62f4d3c086463868 Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv src f2cfc60af8c4fb0f7715f298c486899ca70f593c19eef6d1d4e9a4fb7adf94dd Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv src e964e3f2fc5def9e27b55a81665785c2ddf31f0de69d3e0dd752ce781d91d97b Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv src 8e7b33e085f30a92d994a971250fecb34906b94ff36cc3336514ef8c1957a4b5 Utility to show process environment This package contains a command-line tool that displays as much detail about itself and its environment as possible. It can be used as a test tool, to understand the type of environment a process runs in, and for comparing system environments. https://github.com/jamesodhunt/procenv procenv-debuginfo aarch64 590475bee97414aa4554fda783fff62ec86d77b47631e8233e5c22fb0a80a881 Debug information for package procenv This package provides debug information for package procenv. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv procenv-debuginfo aarch64 20052b963e440ca1e563b0f1db75339b4d4d77a6f8832e6b7448bb5f8e727534 Debug information for package procenv This package provides debug information for package procenv. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv procenv-debuginfo aarch64 03ae9f755d99e289b266ff5eabaa755ca08722a2960932c5e869d04e855e3fa9 Debug information for package procenv This package provides debug information for package procenv. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv procenv-debugsource aarch64 bcc6843ae6f2977a55abd10a76f6721cfe8238fe3e1cda39d2c7c01b3e187e9d Debug sources for package procenv This package provides debug sources for package procenv. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv procenv-debugsource aarch64 4935b303e662f854ad7feb97862708b49036b76fb08029abf5dbab3e168973c6 Debug sources for package procenv This package provides debug sources for package procenv. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv procenv-debugsource aarch64 a5c9a0fa0961645ee007e3fa21547a4e993d0620647afeb53bb813149c8a5409 Debug sources for package procenv This package provides debug sources for package procenv. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/jamesodhunt/procenv prunerepo noarch 7a19886ce9c2e96f1e2ccb6a065a9366f9c3a7d954ed56c2859366fd9a8f5e06 Remove old packages from rpm-md repository RPM packages that have newer version available in that same repository are deleted from filesystem and the rpm-md metadata are recreated afterwards. If there is a source rpm for a deleted rpm (and they both share the same directory path), then the source rpm will be deleted as well. Support for specific repository structure (e.g. COPR) is also available making it possible to additionally remove build logs and whole build directories associated with a package. After deletion of obsoleted packages, the command "createrepo_c --database --update" is called to recreate the repository metadata. https://pagure.io/prunerepo prunerepo src 787f6dd768e7b45c80f8cca5c4908bd6ee98de67f11c1093917e074f7d68a265 Remove old packages from rpm-md repository RPM packages that have newer version available in that same repository are deleted from filesystem and the rpm-md metadata are recreated afterwards. If there is a source rpm for a deleted rpm (and they both share the same directory path), then the source rpm will be deleted as well. Support for specific repository structure (e.g. COPR) is also available making it possible to additionally remove build logs and whole build directories associated with a package. After deletion of obsoleted packages, the command "createrepo_c --database --update" is called to recreate the repository metadata. https://pagure.io/prunerepo pyproject-rpm-macros noarch c6ec46216332ed7fb94513a0ac07a8db87c234347ec7a581019c091ae3f32d3b RPM macros for PEP 517 Python packages These macros allow projects that follow the Python packaging specifications to be packaged as RPMs. They work for: * traditional Setuptools-based projects that use the setup.py file, * newer Setuptools-based projects that have a setup.cfg file, * general Python projects that use the PEP 517 pyproject.toml file (which allows using any build system, such as setuptools, flit or poetry). These macros replace %py3_build and %py3_install, which only work with setup.py. https://src.fedoraproject.org/rpms/pyproject-rpm-macros pyproject-rpm-macros src 809b7cfec408f4370ee592dc5c6e62f52da4b96acf21799aa00bc8e9556f829d RPM macros for PEP 517 Python packages These macros allow projects that follow the Python packaging specifications to be packaged as RPMs. They work for: * traditional Setuptools-based projects that use the setup.py file, * newer Setuptools-based projects that have a setup.cfg file, * general Python projects that use the PEP 517 pyproject.toml file (which allows using any build system, such as setuptools, flit or poetry). These macros replace %py3_build and %py3_install, which only work with setup.py. https://src.fedoraproject.org/rpms/pyproject-rpm-macros python-Authlib src c159b72d653f8ecd975f49e9ddc3691e5ada9472774719511f96c0dbdd156043 The ultimate Python library in building OAuth and OpenID Connect servers and clients. The ultimate Python library in building OAuth and OpenID Connect servers. JWS, JWK, JWA, JWT are included. https://authlib.org/ python-Authlib-help noarch b704353cc91cebb7876a4ebdddd959fdd06161548d0bd78b5103f583a3f7f745 Development documents and examples for Authlib The ultimate Python library in building OAuth and OpenID Connect servers. JWS, JWK, JWA, JWT are included. https://authlib.org/ python-CCColUtils src e3feac89d3ceb141b73dd74df993f006934e0b06f4916a9ae9a19e65056a6e02 Kerberos5 Credential Cache Collection Utilities Kerberos5 Credential Cache Collection Utilities. https://pagure.io/cccolutils python-CCColUtils-debuginfo aarch64 af45c4e73855730a009635611287e5f66a19290633c43a2f95a03a383a660660 Debug information for package python-CCColUtils This package provides debug information for package python-CCColUtils. Debug information is useful when developing applications that use this package or when debugging this package. https://pagure.io/cccolutils python-CCColUtils-debugsource aarch64 f27635c3683eb9809ea6cf760075e333c42dabc5cf6a36de4edf5f910f097731 Debug sources for package python-CCColUtils This package provides debug sources for package python-CCColUtils. Debug sources are useful when developing applications that use this package or when debugging this package. https://pagure.io/cccolutils python-Flask-Caching src a4583b3ef7f5cd15c03a4e36ae65082e0f9f301a1f7221ea17a6da10bb175f1a Adds caching support to Flask applications. A fork of the `Flask-cache`_ extension which adds easy cache support to Flask. https://github.com/pallets-eco/flask-caching python-Flask-Caching-help noarch 0c1cb04afd1a099707dc8bf31f7804460adc4d6103018db835c3b8dbeaa42c91 Development documents and examples for Flask-Caching A fork of the `Flask-cache`_ extension which adds easy cache support to Flask. https://github.com/pallets-eco/flask-caching python-Flask-OpenID src 10afcc1134619b6747a73ca5df550ae26b1a351e4b319f802943486b7d149255 OpenID support for Flask Flask-OpenID adds openid support to flask applications http://github.com/mitsuhiko/flask-openid/ python-Flask-OpenID-help noarch 5515547cb2095ae0d4286a3c9801725e8576cf00ab38fb3250d19974a852a0ca Development documents and examples for Flask-OpenID Flask-OpenID adds openid support to flask applications http://github.com/mitsuhiko/flask-openid/ python-Flask-WTF src 7b88f2ee9ed4c9b3ff43cd3171bfb45b37ddc7d19a3b5bda6b6a702ec451d686 Form rendering, validation, and CSRF protection for Flask with WTForms. Simple integration of Flask and WTForms, including CSRF, file upload, and reCAPTCHA. https://github.com/wtforms/flask-wtf/ python-Flask-WTF-help noarch cc8f022c67ac43919403678cc561ed967d37f912c4dfccb31c22861dc50ee370 Development documents and examples for Flask-WTF Simple integration of Flask and WTForms, including CSRF, file upload, and reCAPTCHA. https://github.com/wtforms/flask-wtf/ python-WTForms src 1186a8e17c69ab9c78b9ee6c7eb57b0468e700493c70d628d351a3651b274cc0 Form validation and rendering for Python web development. WTForms is a flexible forms validation and rendering library for Python web development. It can work with whatever web framework and template engine you choose. It supports data validation, CSRF protection, internationalization (I18N), and more. There are various community libraries that provide closer integration with popular frameworks. https://wtforms.readthedocs.io/ python-WTForms-help noarch 938a9c916f939194a789868343a95fbec0188cea679348eae185334913baf191 Development documents and examples for WTForms WTForms is a flexible forms validation and rendering library for Python web development. It can work with whatever web framework and template engine you choose. It supports data validation, CSRF protection, internationalization (I18N), and more. There are various community libraries that provide closer integration with popular frameworks. https://wtforms.readthedocs.io/ python-XStatic-Bootstrap-SCSS src fdc867f60768d27217279609e3dc213d2ac72b03df93d5fcf2ceb21862d6cce0 Bootstrap-SCSS 3.4.1 (XStatic packaging standard) Bootstrap style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://github.com/twbs/bootstrap-sass python-XStatic-Bootstrap-SCSS-help noarch 749c3a7b1e202de6ba581c52c5f360f7a97a8be8c77705af671bd676130c84b0 Development documents and examples for XStatic-Bootstrap-SCSS Bootstrap style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://github.com/twbs/bootstrap-sass python-XStatic-DataTables src 6ede4a7d9756ca63c2614bd89314b0f7c8937fb8b1acf1ed4ddd53d89da3adfe DataTables 1.10.15 (XStatic packaging standard) The DataTables plugin for jQuery packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. http://www.datatables.net python-XStatic-DataTables-help noarch 672dd116ee4064363552492fbbd4faee9d93cd67edad434e7b3850070a903fe2 Development documents and examples for XStatic-DataTables The DataTables plugin for jQuery packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. http://www.datatables.net python-XStatic-Patternfly src 2eb08a2a5d38dd620dfbf823c63ce92ba13f5c3a0a1dd5ace05e13e7923b96bb Patternfly 3.21.0 (XStatic packaging standard) Patternfly style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://www.patternfly.org/ python-XStatic-Patternfly-help noarch ccd053f2096d0f8d441f7be04f454ad11c29228d740fd12bf3be3e5bda2eb6f5 Development documents and examples for XStatic-Patternfly Patternfly style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://www.patternfly.org/ python-argparse-manpage src 79e060536745cfd05edfd3e82ff0891af2435745c80478c6bcdcda6f8fb56110 Build manual page from python's ArgumentParser object. Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python-argparse-manpage-help noarch 529db7aadff300d50d2e3f9d29e19ee518a7954c75c13e243a67dbb04a59d1cc Development documents and examples for argparse-manpage Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python-asttokens src dae8937699d786e29eddfe9778765ddd4ea48f89776929c732582f8986cffc2e Module to annotate Python abstract syntax trees with source code positions The asttokens module annotates Python abstract syntax trees (ASTs) with the positions of tokens and text in the source code that generated them. This makes it possible for tools that work with logical AST nodes to find the particular text that resulted in those nodes, for example for automated refactoring or highlighting. https://github.com/gristlabs/asttokens python-backoff src a8f3c51abaef1228f90a29e94054be937014ba72bd88eee677384de6ef4748a3 Function decoration for backoff and retry This module provides function decorators which can be used to wrap a\ function such that it will be retried until some condition is met. It\ is meant to be of use when accessing unreliable resources with the\ potential for intermittent failures i.e. network resources and external\ APIs. Somewhat more generally, it may also be of use for dynamically\ polling resources for externally generated content. https://github.com/litl/backoff python-backoff-help noarch 874622690562083062af139f4e472d03db9c0791b21be3652927ed7f9b8c32b7 Development documents and examples for backoff This module provides function decorators which can be used to wrap a\ function such that it will be retried until some condition is met. It\ is meant to be of use when accessing unreliable resources with the\ potential for intermittent failures i.e. network resources and external\ APIs. Somewhat more generally, it may also be of use for dynamically\ polling resources for externally generated content. https://github.com/litl/backoff python-blessed src ec03531593fbe40f180bd81beb149a624fd9b4aea17c57e4bb52bf5631289f76 Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities. Blessed is an easy, practical library for making python terminal apps https://github.com/jquast/blessed python-blessed-help noarch 4a6e0865bf6a7ab5c5d22411a01b7b9b87759861bef56c595d9d374ea3bc7f82 Development documents and examples for blessed Blessed is an easy, practical library for making python terminal apps https://github.com/jquast/blessed python-cachelib src b160d65a674746dd52625f25c8cb798c5d1b2a3881a0046a160b6bad064bb5ba A collection of cache libraries in the same API interface. A collection of cache libraries in the same API interface. Extracted from werkzeug. https://github.com/pallets-eco/cachelib python-cachelib-help noarch 04fa28a412c13a381b0d3bc586921149729a4d968622c7fac992ec2663f58e23 Development documents and examples for cachelib Development documents and examples for cachelib https://github.com/pallets-eco/cachelib python-copr src 2c70cdc78ac7dad4ecd2d9712e609b43c2510d0b9f620d4165b36104292ecf20 Python interface for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains python interface to access Copr service. Mostly useful for developers only. https://github.com/fedora-copr/copr python-copr-common src 64c8deb44aebf1af2cd009cfb83666752e2bb7325a05c67950c825c7ecefaa65 Python code used by Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains python code used by other Copr packages. Mostly useful for developers only. https://github.com/fedora-copr/copr python-copr-doc noarch b55fdcf2074afcb3d87544eb9a82e2e5c0a788a04d7f9bd0515511201cdf0d49 Code documentation for python-copr package COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package includes documentation for python-copr. Mostly useful for developers only. https://github.com/fedora-copr/copr python-crudini src 74cc9fa390f7b31c53c1ffecf2b71875f90bc8302700c136643743624c831090 A utility for manipulating ini files crudini A utility for manipulating ini files http://github.com/pixelb/crudini python-crudini-help noarch cff6bd84690fe4790c2a9f400d1a28764009be402236e9c591861838103bb8ca A utility for manipulating ini files Usage: crudini --set [OPTION]... config_file section [param] [value] or: crudini --get [OPTION]... config_file [section] [param] or: crudini --del [OPTION]... config_file section [param] [list value] or: crudini --merge [OPTION]... config_file [section] http://github.com/pixelb/crudini python-debtcollector src c0400af9eaddd51b58cfd84f03efd26512ddfc66f10646ad77f93468ecfbe23a A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. https://docs.openstack.org/debtcollector/latest python-debtcollector-help noarch 2bbbf1df5c3dadd10896985986602afa7ce7857f5b94abb89fd33483726b010d A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. https://docs.openstack.org/debtcollector/latest python-email-validator src a45a91336176a18ae12f7541bafe41371062e1638478a625899eedbba948d9f0 A robust email address syntax and deliverability validation library. A robust email address syntax and deliverability validation library for Python by [Joshua Tauberer](https://joshdata.me). This library validates that a string is of the form `name@example.com`. This is the sort of validation you would want for an email-based login form on a website. Key features: * Checks that an email address has the correct syntax --- good for login forms or other uses related to identifying users. * Gives friendly error messages when validation fails (appropriate to show to end users). * (optionally) Checks deliverability: Does the domain name resolve? And you can override the default DNS resolver. * Supports internationalized domain names and (optionally) internationalized local parts, but blocks unsafe characters. * Normalizes email addresses (super important for internationalized addresses! see below). The library is NOT for validation of the To: line in an email message (e.g. `My Name <my@address.com>`), which [flanker](https://github.com/mailgun/flanker) is more appropriate for. And this library does NOT permit obsolete forms of email addresses, so if you need strict validation against the email specs exactly, use [pyIsEmail](https://github.com/michaelherold/pyIsEmail). This library is tested with Python 3.6+ but should work in earlier versions: [![Build Status](https://app.travis-ci.com/JoshData/python-email-validator.svg?branch=main)](https://app.travis-ci.com/JoshData/python-email-validator) https://github.com/JoshData/python-email-validator python-email-validator-help noarch 0d845de68fb0afd313ad5e25fa6ad4d4f87a0258705a8b07de6bf1f4e22873f9 Development documents and examples for email-validator A robust email address syntax and deliverability validation library for Python by [Joshua Tauberer](https://joshdata.me). This library validates that a string is of the form `name@example.com`. This is the sort of validation you would want for an email-based login form on a website. Key features: * Checks that an email address has the correct syntax --- good for login forms or other uses related to identifying users. * Gives friendly error messages when validation fails (appropriate to show to end users). * (optionally) Checks deliverability: Does the domain name resolve? And you can override the default DNS resolver. * Supports internationalized domain names and (optionally) internationalized local parts, but blocks unsafe characters. * Normalizes email addresses (super important for internationalized addresses! see below). The library is NOT for validation of the To: line in an email message (e.g. `My Name <my@address.com>`), which [flanker](https://github.com/mailgun/flanker) is more appropriate for. And this library does NOT permit obsolete forms of email addresses, so if you need strict validation against the email specs exactly, use [pyIsEmail](https://github.com/michaelherold/pyIsEmail). This library is tested with Python 3.6+ but should work in earlier versions: [![Build Status](https://app.travis-ci.com/JoshData/python-email-validator.svg?branch=main)](https://app.travis-ci.com/JoshData/python-email-validator) https://github.com/JoshData/python-email-validator python-executing src d30af27c50b9c0c7688679fac098fd72cbc0f91f987043e6aeba604cd47101c2 Get the currently executing AST node of a frame, and other information [![Build Status](https://github.com/alexmojaki/executing/workflows/Tests/badge.svg?branch=master)](https://github.com/alexmojaki/executing/actions) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/executing/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/executing?branch=master) [![Supports Python versions 2.7 and 3.5+, including PyPy](https://img.shields.io/pypi/pyversions/executing.svg)](https://pypi.python.org/pypi/executing) This mini-package lets you get information about what a frame is currently doing, particularly the AST node being executed. * [Usage](#usage) * [Getting the AST node](#getting-the-ast-node) * [Getting the source code of the node](#getting-the-source-code-of-the-node) * [Getting the `__qualname__` of the current function](#getting-the-__qualname__-of-the-current-function) * [The Source class](#the-source-class) * [Installation](#installation) * [How does it work?](#how-does-it-work) * [Is it reliable?](#is-it-reliable) * [Which nodes can it identify?](#which-nodes-can-it-identify) * [Libraries that use this](#libraries-that-use-this) ```python import executing node = executing.Source.executing(frame).node ``` Then `node` will be an AST node (from the `ast` standard library module) or None if the node couldn't be identified (which may happen often and should always be checked). `node` will always be the same instance for multiple calls with frames at the same point of execution. If you have a traceback object, pass it directly to `Source.executing()` rather than the `tb_frame` attribute to get the correct node. For this you will need to separately install the [`asttokens`](https://github.com/gristlabs/asttokens) library, then obtain an `ASTTokens` object: ```python executing.Source.executing(frame).source.asttokens() ``` or: ```python executing.Source.for_frame(frame).asttokens() ``` or use one of the convenience methods: ```python executing.Source.executing(frame).text() executing.Source.executing(frame).text_range() ``` ```python executing.Source.executing(frame).code_qualname() ``` or: ```python executing.Source.for_frame(frame).code_qualname(frame.f_code) ``` Everything goes through the `Source` class. Only one instance of the class is created for each filename. Subclassing it to add more attributes on creation or methods is recommended. The classmethods such as `executing` will respect this. See the source code and docstrings for more detail. pip install executing If you don't like that you can just copy the file `executing.py`, there are no dependencies (but of course you won't get updates). Suppose the frame is executing this line: ```python self.foo(bar.x) ``` and in particular it's currently obtaining the attribute `self.foo`. Looking at the bytecode, specifically `frame.f_code.co_code[frame.f_lasti]`, we can tell that it's loading an attribute, but it's not obvious which one. We can narrow down the statement being executed using `frame.f_lineno` and find the two `ast.Attribute` nodes representing `self.foo` and `bar.x`. How do we find out which one it is, without recreating the entire compiler in Python? The trick is to modify the AST slightly for each candidate expression and observe the changes in the bytecode instructions. We change the AST to this: ```python (self.foo ** 'longuniqueconstant')(bar.x) ``` and compile it, and the bytecode will be almost the same but there will be two new instructions: LOAD_CONST 'longuniqueconstant' BINARY_POWER and just before that will be a `LOAD_ATTR` instruction corresponding to `self.foo`. Seeing that it's in the same position as the original instruction lets us know we've found our match. Yes - if it identifies a node, you can trust that it's identified the correct one. The tests are very thorough - in addition to unit tests which check various situations directly, there are property tests against a large number of files (see the filenames printed in [this build](https://travis-ci.org/alexmojaki/executing/jobs/557970457)) with real code. Specifically, for each file, the tests: 1. Identify as many nodes as possible from all the bytecode instructions in the file, and assert that they are all distinct 2. Find all the nodes that should be identifiable, and assert that they were indeed identified somewhere In other words, it shows that there is a one-to-one mapping between the nodes and the instructions that can be handled. This leaves very little room for a bug to creep in. Furthermore, `executing` checks that the instructions compiled from the modified AST exactly match the original code save for a few small known exceptions. This accounts for all the quirks and optimisations in the interpreter. Currently it works in almost all cases for the following `ast` nodes: - `Call`, e.g. `self.foo(bar)` - `Attribute`, e.g. `point.x` - `Subscript`, e.g. `lst[1]` - `BinOp`, e.g. `x + y` (doesn't include `and` and `or`) - `UnaryOp`, e.g. `-n` (includes `not` but only works sometimes) - `Compare` e.g. `a < b` (not for chains such as `0 < p < 1`) The plan is to extend to more operations in the future. - **[`stack_data`](https://github.com/alexmojaki/stack_data)**: Extracts data from stack frames and tracebacks, particularly to display more useful tracebacks than the default. Also uses another related library of mine: **[`pure_eval`](https://github.com/alexmojaki/pure_eval)**. - **[`futurecoder`](https://futurecoder.io/)**: Highlights the executing node in tracebacks using `executing` via `stack_data`, and provides debugging with `snoop`. - **[`snoop`](https://github.com/alexmojaki/snoop)**: A feature-rich and convenient debugging library. Uses `executing` to show the operation which caused an exception and to allow the `pp` function to display the source of its arguments. - **[`heartrate`](https://github.com/alexmojaki/heartrate)**: A simple real time visualisation of the execution of a Python program. Uses `executing` to highlight currently executing operations, particularly in each frame of the stack trace. - **[`sorcery`](https://github.com/alexmojaki/sorcery)**: Dark magic delights in Python. Uses `executing` to let special callables called spells know where they're being called from. - **[`IPython`](https://github.com/ipython/ipython/pull/12150)**: Highlights the executing node in tracebacks using `executing` via [`stack_data`](https://github.com/alexmojaki/stack_data). - **[`icecream`](https://github.com/gruns/icecream)**: 🍦 Sweet and creamy print debugging. Uses `executing` to identify where `ic` is called and print its arguments. - **[`friendly_traceback`](https://github.com/friendly-traceback/friendly-traceback)**: Uses `stack_data` and `executing` to pinpoint the cause of errors and provide helpful explanations. - **[`python-devtools`](https://github.com/samuelcolvin/python-devtools)**: Uses `executing` for print debugging similar to `icecream`. - **[`sentry_sdk`](https://github.com/getsentry/sentry-python)**: Add the integration `sentry_sdk.integrations.executingExecutingIntegration()` to show the function `__qualname__` in each frame in sentry events. - **[`varname`](https://github.com/pwwang/python-varname)**: Dark magics about variable names in python. Uses `executing` to find where its various magical functions like `varname` and `nameof` are called from. https://github.com/alexmojaki/executing python-executing-help noarch 382036cbb72fc522bc952fe2b6ca11167c5ccd50b2bc071f1ecf7d4d8e4a7b72 Development documents and examples for executing [![Build Status](https://github.com/alexmojaki/executing/workflows/Tests/badge.svg?branch=master)](https://github.com/alexmojaki/executing/actions) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/executing/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/executing?branch=master) [![Supports Python versions 2.7 and 3.5+, including PyPy](https://img.shields.io/pypi/pyversions/executing.svg)](https://pypi.python.org/pypi/executing) This mini-package lets you get information about what a frame is currently doing, particularly the AST node being executed. * [Usage](#usage) * [Getting the AST node](#getting-the-ast-node) * [Getting the source code of the node](#getting-the-source-code-of-the-node) * [Getting the `__qualname__` of the current function](#getting-the-__qualname__-of-the-current-function) * [The Source class](#the-source-class) * [Installation](#installation) * [How does it work?](#how-does-it-work) * [Is it reliable?](#is-it-reliable) * [Which nodes can it identify?](#which-nodes-can-it-identify) * [Libraries that use this](#libraries-that-use-this) ```python import executing node = executing.Source.executing(frame).node ``` Then `node` will be an AST node (from the `ast` standard library module) or None if the node couldn't be identified (which may happen often and should always be checked). `node` will always be the same instance for multiple calls with frames at the same point of execution. If you have a traceback object, pass it directly to `Source.executing()` rather than the `tb_frame` attribute to get the correct node. For this you will need to separately install the [`asttokens`](https://github.com/gristlabs/asttokens) library, then obtain an `ASTTokens` object: ```python executing.Source.executing(frame).source.asttokens() ``` or: ```python executing.Source.for_frame(frame).asttokens() ``` or use one of the convenience methods: ```python executing.Source.executing(frame).text() executing.Source.executing(frame).text_range() ``` ```python executing.Source.executing(frame).code_qualname() ``` or: ```python executing.Source.for_frame(frame).code_qualname(frame.f_code) ``` Everything goes through the `Source` class. Only one instance of the class is created for each filename. Subclassing it to add more attributes on creation or methods is recommended. The classmethods such as `executing` will respect this. See the source code and docstrings for more detail. pip install executing If you don't like that you can just copy the file `executing.py`, there are no dependencies (but of course you won't get updates). Suppose the frame is executing this line: ```python self.foo(bar.x) ``` and in particular it's currently obtaining the attribute `self.foo`. Looking at the bytecode, specifically `frame.f_code.co_code[frame.f_lasti]`, we can tell that it's loading an attribute, but it's not obvious which one. We can narrow down the statement being executed using `frame.f_lineno` and find the two `ast.Attribute` nodes representing `self.foo` and `bar.x`. How do we find out which one it is, without recreating the entire compiler in Python? The trick is to modify the AST slightly for each candidate expression and observe the changes in the bytecode instructions. We change the AST to this: ```python (self.foo ** 'longuniqueconstant')(bar.x) ``` and compile it, and the bytecode will be almost the same but there will be two new instructions: LOAD_CONST 'longuniqueconstant' BINARY_POWER and just before that will be a `LOAD_ATTR` instruction corresponding to `self.foo`. Seeing that it's in the same position as the original instruction lets us know we've found our match. Yes - if it identifies a node, you can trust that it's identified the correct one. The tests are very thorough - in addition to unit tests which check various situations directly, there are property tests against a large number of files (see the filenames printed in [this build](https://travis-ci.org/alexmojaki/executing/jobs/557970457)) with real code. Specifically, for each file, the tests: 1. Identify as many nodes as possible from all the bytecode instructions in the file, and assert that they are all distinct 2. Find all the nodes that should be identifiable, and assert that they were indeed identified somewhere In other words, it shows that there is a one-to-one mapping between the nodes and the instructions that can be handled. This leaves very little room for a bug to creep in. Furthermore, `executing` checks that the instructions compiled from the modified AST exactly match the original code save for a few small known exceptions. This accounts for all the quirks and optimisations in the interpreter. Currently it works in almost all cases for the following `ast` nodes: - `Call`, e.g. `self.foo(bar)` - `Attribute`, e.g. `point.x` - `Subscript`, e.g. `lst[1]` - `BinOp`, e.g. `x + y` (doesn't include `and` and `or`) - `UnaryOp`, e.g. `-n` (includes `not` but only works sometimes) - `Compare` e.g. `a < b` (not for chains such as `0 < p < 1`) The plan is to extend to more operations in the future. - **[`stack_data`](https://github.com/alexmojaki/stack_data)**: Extracts data from stack frames and tracebacks, particularly to display more useful tracebacks than the default. Also uses another related library of mine: **[`pure_eval`](https://github.com/alexmojaki/pure_eval)**. - **[`futurecoder`](https://futurecoder.io/)**: Highlights the executing node in tracebacks using `executing` via `stack_data`, and provides debugging with `snoop`. - **[`snoop`](https://github.com/alexmojaki/snoop)**: A feature-rich and convenient debugging library. Uses `executing` to show the operation which caused an exception and to allow the `pp` function to display the source of its arguments. - **[`heartrate`](https://github.com/alexmojaki/heartrate)**: A simple real time visualisation of the execution of a Python program. Uses `executing` to highlight currently executing operations, particularly in each frame of the stack trace. - **[`sorcery`](https://github.com/alexmojaki/sorcery)**: Dark magic delights in Python. Uses `executing` to let special callables called spells know where they're being called from. - **[`IPython`](https://github.com/ipython/ipython/pull/12150)**: Highlights the executing node in tracebacks using `executing` via [`stack_data`](https://github.com/alexmojaki/stack_data). - **[`icecream`](https://github.com/gruns/icecream)**: 🍦 Sweet and creamy print debugging. Uses `executing` to identify where `ic` is called and print its arguments. - **[`friendly_traceback`](https://github.com/friendly-traceback/friendly-traceback)**: Uses `stack_data` and `executing` to pinpoint the cause of errors and provide helpful explanations. - **[`python-devtools`](https://github.com/samuelcolvin/python-devtools)**: Uses `executing` for print debugging similar to `icecream`. - **[`sentry_sdk`](https://github.com/getsentry/sentry-python)**: Add the integration `sentry_sdk.integrations.executingExecutingIntegration()` to show the function `__qualname__` in each frame in sentry events. - **[`varname`](https://github.com/pwwang/python-varname)**: Dark magics about variable names in python. Uses `executing` to find where its various magical functions like `varname` and `nameof` are called from. https://github.com/alexmojaki/executing python-flask-whooshee src 5c3e0003979ccb1a46775a5783730998de0d61f2e9249e9c6472dafeac91ae5c Flask-SQLAlchemy - Whoosh Integration Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python-flask-whooshee-help noarch 07fc896fbd0e95882bb572f9fd4f2b4d8460bd903d9e6b1697cb24870103cd09 Development documents and examples for flask-whooshee Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python-html2text src 5191e30b49b6a1e1e912363c1ef2f8895f507a65db520125eb5175fa738dfdc1 Turn HTML into equivalent Markdown-structured text. Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python-html2text-help noarch b4c9129040bff92af668aa4b59f573b78c70a6b37bb9397402320e5318155c8b Development documents and examples for html2text Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python-html5-parser src f42d1a53b1e1539485d493a2a7935fc42957e3b6a7f1dc84a7630b9c30eb2fe7 A fast, standards compliant, C based, HTML 5 parser for python A fast, standards compliant, C based, HTML 5 parser for python https://pypi.python.org/pypi/html5-parser python-html5-parser-debuginfo aarch64 194f6aaedd1c8993dfc485915aaa749f0fd50dc24eecbc275a2ef50438a6e050 Debug information for package python-html5-parser This package provides debug information for package python-html5-parser. Debug information is useful when developing applications that use this package or when debugging this package. https://pypi.python.org/pypi/html5-parser python-html5-parser-debugsource aarch64 49ab86bb60e36c70889686e604fca333f5d24805fe2e03934bec05c28b2bfe65 Debug sources for package python-html5-parser This package provides debug sources for package python-html5-parser. Debug sources are useful when developing applications that use this package or when debugging this package. https://pypi.python.org/pypi/html5-parser python-ipdb src ef728070856975e0c3c78dbfe67c46c85f129d0da2db30a24588ded9a11e151a IPython-enabled pdb https://github.com/gotcha/ipdb python-ipdb-help noarch 68cd7f2f95e6a79c93f192f99b04daee0b064a073a33a536d8c5b5bcca271c76 Development documents and examples for ipdb https://github.com/gotcha/ipdb python-ipython src b8cca21420bc90728476ccf5bc50a9b99272287944d1710c5184200a6615d6f0 IPython: Productive Interactive Computing IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are: * A powerful interactive Python shell * A `Jupyter <https://jupyter.org/>`_ kernel to work with Python code in Jupyter notebooks and other interactive frontends. The enhanced interactive Python shells have the following main features: * Comprehensive object introspection. * Input history, persistent across sessions. * Caching of output results during a session with automatically generated references. * Extensible tab completion, with support by default for completion of python variables and keywords, filenames and function keywords. * Extensible system of 'magic' commands for controlling the environment and performing many tasks related either to IPython or the operating system. * A rich configuration system with easy switching between different setups (simpler than changing $PYTHONSTARTUP environment variables every time). * Session logging and reloading. * Extensible syntax processing for special purpose situations. * Access to the system shell with user-extensible alias system. * Easily embeddable in other Python programs and GUIs. * Integrated access to the pdb debugger and the Python profiler. The latest development version is always available from IPython's `GitHub site <http://github.com/ipython>`_. https://ipython.org python-ipython-help noarch ad379c575b36e5ecc1e6eb6ff0046b396ebb91a6009e9053ae06e1ae40681fd9 Development documents and examples for ipython IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are: * A powerful interactive Python shell * A `Jupyter <https://jupyter.org/>`_ kernel to work with Python code in Jupyter notebooks and other interactive frontends. The enhanced interactive Python shells have the following main features: * Comprehensive object introspection. * Input history, persistent across sessions. * Caching of output results during a session with automatically generated references. * Extensible tab completion, with support by default for completion of python variables and keywords, filenames and function keywords. * Extensible system of 'magic' commands for controlling the environment and performing many tasks related either to IPython or the operating system. * A rich configuration system with easy switching between different setups (simpler than changing $PYTHONSTARTUP environment variables every time). * Session logging and reloading. * Extensible syntax processing for special purpose situations. * Access to the system shell with user-extensible alias system. * Easily embeddable in other Python programs and GUIs. * Integrated access to the pdb debugger and the Python profiler. The latest development version is always available from IPython's `GitHub site <http://github.com/ipython>`_. https://ipython.org python-jedi src 9977ada33f23b8453beda2e1c3c1fab1510321cb9aba37d553caa884cd50a06b A static analysis tool for Python that is typically used in IDEs/editors plugins Jedi is a static analysis tool for Python that is typically used in IDEs/editors plugins. It has a focus on autocompletion and goto functionality. Other features include refactoring, code search and finding references. https://github.com/davidhalter/jedi python-jedi-help noarch 2b872b251029d4f2f2378b141b7564d5a79337634a273edc8c5106fbea0b082a Development documents and examples for jedi Jedi is a static analysis tool for Python that is typically used in IDEs/editors plugins. It has a focus on autocompletion and goto functionality. Other features include refactoring, code search and finding references. https://github.com/davidhalter/jedi python-keystoneauth1 src 48113b45b96b8d5f57973c7e1573cbf6e9307b4693481e2183c8a794eba8a7f0 Authentication Library for OpenStack Identity Keystoneauth provides a standard way to do authentication and service requests \ within the OpenStack ecosystem. It is designed for use in conjunction with \ the existing OpenStack clients and for simplifying the process of writing \ new clients. https://docs.openstack.org/keystoneauth/latest/ python-keystoneauth1-help noarch e957a977074fe97304bd9cabf2d1b21501fd0ad8eba886190d23b515eabfc83e Development documents and examples for keystoneauth1 Keystoneauth provides a standard way to do authentication and service requests \ within the OpenStack ecosystem. It is designed for use in conjunction with \ the existing OpenStack clients and for simplifying the process of writing \ new clients. https://docs.openstack.org/keystoneauth/latest/ python-matplotlib-inline src 4452235e7808f5c34792d3536b299be60b9ce84a186ac0620864ec7c657f8350 Inline Matplotlib backend for Jupyter Inline Matplotlib backend for Jupyter https://github.com/ipython/matplotlib-inline python-novaclient src f480065fc54717b982fb81b20c2a00191b487f3852c2f79d8d92328b7c5a0127 Client library for OpenStack Compute API This is a client for the OpenStack Nova API. There's a Python API (the novaclient module), and a command-line script (nova). Each implements 100% of the OpenStack Nova API. https://docs.openstack.org/python-novaclient/latest python-novaclient-help noarch 6acfdfd2e36be9f0a425e62f8ea55d97305caf0cd5b6f7dfb7b82927feab915f Client library for OpenStack Compute API This is a client for the OpenStack Nova API. There's a Python API (the novaclient module), and a command-line script (nova). Each implements 100% of the OpenStack Nova API. https://docs.openstack.org/python-novaclient/latest python-openid-teams src 64eb7008907c3d7db669ece5e3b65d4d1540c7507a5e96ff29670f09da591ff7 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams-help noarch 450210a774969492f828ce53fee8ecb2a39d516fc4bfdb07df975afdbd448964 Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openidc-client src c302e958b8121a611f16a73ce91974d90477b8bebde5ae1b3d73ecfe9f087ca6 Python OpenID Connect client with token caching and management Python OpenID Connect client with token caching and management. python-os-service-types src cde134d7ad0f66e7859712aa5c74fecd73d7ccd9aaed4ce9d6073b93260d82c1 Python library for consuming OpenStack sevice-types-authority data Python library for consuming OpenStack sevice-types-authority data https://pypi.org/project/os-service-types/ python-os-service-types-help noarch 08c668202dcf62671d78763ee20a5cc24b648d966f0a66b3ba90371df5a8b2c0 Development documents and examples for os-service-types https://pypi.org/project/os-service-types/ python-oslo-concurrency src 9bfda62cbd04c896d96b2b8489e68ea782fda4d897109d31ae58a23e6ee4f701 Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-concurrency-help noarch 48f524e86d56ac71748e6ccf200e39cac1717658a2bf292d11041a26bea8129c Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-config src 7272c282d15bff86add1a6c5d8de7a59a8450e449e0be8df9b7b4360ef7d027e Oslo Configuration API The Oslo configuration API supports parsing command line arguments and .ini style configuration files. https://docs.openstack.org/oslo.config/latest/ python-oslo-config-help noarch a1135429306a297fe6f34fce6107ab9f665faeaf3fa085943bde405a3d2b26f7 Oslo Configuration API The Oslo configuration API supports parsing command line arguments and .ini style configuration files. https://docs.openstack.org/oslo.config/latest/ python-oslo-i18n src 6f5d9efc90ee7a3df35e0109b69ddbf47b719d3d44413b5ba4df813a63b43b2b Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-i18n-help noarch 56621d4df8a69da83547429d6cf0aad5f5a903b1b16025feb738dd8e60154f05 Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-serialization src a4a1096e4b87c235fc51136dc1e8999ab30001f027063169454f948d2acbd4eb Oslo Serialization library The oslo.serialization library provides support for representing objects in transmittable and storable formats, such as Base64, JSON and MessagePack. https://docs.openstack.org/oslo.serialization/latest/ python-oslo-serialization-help noarch 6eb91e82de01acba3f36716c1eafa13b9f8d598ae6b8dec6fe436f2147348b08 Oslo Serialization library The oslo.serialization library provides support for representing objects in transmittable and storable formats, such as Base64, JSON and MessagePack. https://docs.openstack.org/oslo.serialization/latest/ python-oslo-utils src 104a806fa011381cc42a3bcce021adf4dcd08e694f396b85e1159cb45575b960 Oslo Utility library The oslo.utils library provides support for common utility type functions, such as encoding, exception handling, string manipulation, and time handling. https://docs.openstack.org/oslo.utils/latest/ python-oslo-utils-help noarch 6e146627b7e7d97eb4f0cfa7b7b43f323ccea9f9665b8ef7819e896edbce6d6e Oslo Utility library The oslo.utils library provides support for common utility type functions, such as encoding, exception handling, string manipulation, and time handling. https://docs.openstack.org/oslo.utils/latest/ python-parso src a4ab0e416fd91a244844c5129b920356d1577bfae733141cd099925aa64fe553 A Python Parser Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions. Parso consists of a small API to parse Python and analyse the syntax tree. https://github.com/davidhalter/parso python-parso-help noarch 0bce2ec6f7e368de08fdb23ffd4713ee3b3180ae834ca35a80050a63913d13b4 Development documents and examples for parso Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions. Parso consists of a small API to parse Python and analyse the syntax tree. https://github.com/davidhalter/parso python-pickleshare src 49801d5b30841ea573240334cb3ee88f34f4fdf198c6de6b1fee14ed24c15b34 Tiny 'shelve'-like database with concurrency support PickleShare - a small 'shelve' like datastore with concurrency support Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike shelve, many processes can access the database simultaneously. Changing a value in database is immediately visible to other processes accessing the same database. Concurrency is possible because the values are stored in separate files. Hence the "database" is a directory where *all* files are governed by PickleShare. Example usage:: from pickleshare import * db = PickleShareDB('~/testpickleshare') db.clear() print("Should be empty:",db.items()) db['hello'] = 15 db['aku ankka'] = [1,2,313] db['paths/are/ok/key'] = [1,(5,46)] print(db.keys()) This module is certainly not ZODB, but can be used for low-load (non-mission-critical) situations where tiny code size trumps the advanced features of a "real" object database. Installation guide: pip install pickleshare https://github.com/pickleshare/pickleshare python-pickleshare-help noarch d084351e85f9a8dd8ff0b11aeebea9c6fb8a530957a07f8216b44279a18c5238 Development documents and examples for pickleshare PickleShare - a small 'shelve' like datastore with concurrency support Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike shelve, many processes can access the database simultaneously. Changing a value in database is immediately visible to other processes accessing the same database. Concurrency is possible because the values are stored in separate files. Hence the "database" is a directory where *all* files are governed by PickleShare. Example usage:: from pickleshare import * db = PickleShareDB('~/testpickleshare') db.clear() print("Should be empty:",db.items()) db['hello'] = 15 db['aku ankka'] = [1,2,313] db['paths/are/ok/key'] = [1,(5,46)] print(db.keys()) This module is certainly not ZODB, but can be used for low-load (non-mission-critical) situations where tiny code size trumps the advanced features of a "real" object database. Installation guide: pip install pickleshare https://github.com/pickleshare/pickleshare python-prompt-toolkit src dbde2554480dabedc93ba706021f55af3f15f10156f648f02feb34edf20991c6 Library for building powerful interactive command lines in Python prompt_toolkit is a library for building powerful interactive command lines and terminal applications in Python. https://github.com/prompt-toolkit/python-prompt-toolkit python-prompt-toolkit-help noarch 3fa55bce871d3b74992a44a8eac842da95f896da89e0b5683d2d55e20d8b4911 Development documents and examples for prompt-toolkit prompt_toolkit is a library for building powerful interactive command lines and terminal applications in Python. https://github.com/prompt-toolkit/python-prompt-toolkit python-pure-eval src 4f41dcadd305da2a05f825ac6160b558b9b68118ec3921321e9fcc602e1fe6f3 Safely evaluate AST nodes without side effects [![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.5+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval) This is a Python package that lets you safely evaluate certain AST nodes without triggering arbitrary code that may have unwanted side effects. It can be installed from PyPI: pip install pure_eval To demonstrate usage, suppose we have an object defined as follows: ```python class Rectangle: def __init__(self, width, height): self.width = width self.height = height @property def area(self): print("Calculating area...") return self.width * self.height rect = Rectangle(3, 5) ``` Given the `rect` object, we want to evaluate whatever expressions we can in this source code: ```python source = "(rect.width, rect.height, rect.area)" ``` This library works with the AST, so let's parse the source code and peek inside: ```python import ast tree = ast.parse(source) the_tuple = tree.body[0].value for node in the_tuple.elts: print(ast.dump(node)) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='area', ctx=Load()) ``` Now to actually use the library. First construct an Evaluator: ```python from pure_eval import Evaluator evaluator = Evaluator({"rect": rect}) ``` The argument to `Evaluator` should be a mapping from variable names to their values. Or if you have access to the stack frame where `rect` is defined, you can instead use: ```python evaluator = Evaluator.from_frame(frame) ``` Now to evaluate some nodes, using `evaluator[node]`: ```python print("rect.width:", evaluator[the_tuple.elts[0]]) print("rect:", evaluator[the_tuple.elts[0].value]) ``` Output: ``` rect.width: 3 rect: <__main__.Rectangle object at 0x105b0dd30> ``` OK, but you could have done the same thing with `eval`. The useful part is that it will refuse to evaluate the property `rect.area` because that would trigger unknown code. If we try, it'll raise a `CannotEval` exception. ```python from pure_eval import CannotEval try: print("rect.area:", evaluator[the_tuple.elts[2]]) # fails except CannotEval as e: print(e) # prints CannotEval ``` To find all the expressions that can be evaluated in a tree: ```python for node, value in evaluator.find_expressions(tree): print(ast.dump(node), value) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) 3 Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) 5 Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> ``` Note that this includes `rect` three times, once for each appearance in the source code. Since all these nodes are equivalent, we can group them together: ```python from pure_eval import group_expressions for nodes, values in group_expressions(evaluator.find_expressions(tree)): print(len(nodes), "nodes with value:", values) ``` Output: ``` 1 nodes with value: 3 1 nodes with value: 5 3 nodes with value: <__main__.Rectangle object at 0x10d374d30> ``` If we want to list all the expressions in a tree, we may want to filter out certain expressions whose values are obvious. For example, suppose we have a function `foo`: ```python def foo(): pass ``` If we refer to `foo` by its name as usual, then that's not interesting: ```python from pure_eval import is_expression_interesting node = ast.parse('foo').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='foo', ctx=Load()) False ``` But if we refer to it by a different name, then it's interesting: ```python node = ast.parse('bar').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='bar', ctx=Load()) True ``` In general `is_expression_interesting` returns False for the following values: - Literals (e.g. `123`, `'abc'`, `[1, 2, 3]`, `{'a': (), 'b': ([1, 2], [3])}`) - Variables or attributes whose name is equal to the value's `__name__`, such as `foo` above or `self.foo` if it was a method. - Builtins (e.g. `len`) referred to by their usual name. To make things easier, you can combine finding expressions, grouping them, and filtering out the obvious ones with: ```python evaluator.interesting_expressions_grouped(root) ``` To get the source code of an AST node, I recommend [asttokens](https://github.com/gristlabs/asttokens). Here's a complete example that brings it all together: ```python from asttokens import ASTTokens from pure_eval import Evaluator source = """ x = 1 d = {x: 2} y = d[x] """ names = {} exec(source, names) atok = ASTTokens(source, parse=True) for nodes, value in Evaluator(names).interesting_expressions_grouped(atok.tree): print(atok.get_text(nodes[0]), "=", value) ``` Output: ```python x = 1 d = {1: 2} y = 2 d[x] = 2 ``` http://github.com/alexmojaki/pure_eval python-pure-eval-help noarch 11f18db6005b6bfcd588138b5380e36a44f5d30b987bd86bb8299a2e558c1833 Development documents and examples for pure-eval [![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.5+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval) This is a Python package that lets you safely evaluate certain AST nodes without triggering arbitrary code that may have unwanted side effects. It can be installed from PyPI: pip install pure_eval To demonstrate usage, suppose we have an object defined as follows: ```python class Rectangle: def __init__(self, width, height): self.width = width self.height = height @property def area(self): print("Calculating area...") return self.width * self.height rect = Rectangle(3, 5) ``` Given the `rect` object, we want to evaluate whatever expressions we can in this source code: ```python source = "(rect.width, rect.height, rect.area)" ``` This library works with the AST, so let's parse the source code and peek inside: ```python import ast tree = ast.parse(source) the_tuple = tree.body[0].value for node in the_tuple.elts: print(ast.dump(node)) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='area', ctx=Load()) ``` Now to actually use the library. First construct an Evaluator: ```python from pure_eval import Evaluator evaluator = Evaluator({"rect": rect}) ``` The argument to `Evaluator` should be a mapping from variable names to their values. Or if you have access to the stack frame where `rect` is defined, you can instead use: ```python evaluator = Evaluator.from_frame(frame) ``` Now to evaluate some nodes, using `evaluator[node]`: ```python print("rect.width:", evaluator[the_tuple.elts[0]]) print("rect:", evaluator[the_tuple.elts[0].value]) ``` Output: ``` rect.width: 3 rect: <__main__.Rectangle object at 0x105b0dd30> ``` OK, but you could have done the same thing with `eval`. The useful part is that it will refuse to evaluate the property `rect.area` because that would trigger unknown code. If we try, it'll raise a `CannotEval` exception. ```python from pure_eval import CannotEval try: print("rect.area:", evaluator[the_tuple.elts[2]]) # fails except CannotEval as e: print(e) # prints CannotEval ``` To find all the expressions that can be evaluated in a tree: ```python for node, value in evaluator.find_expressions(tree): print(ast.dump(node), value) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) 3 Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) 5 Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> ``` Note that this includes `rect` three times, once for each appearance in the source code. Since all these nodes are equivalent, we can group them together: ```python from pure_eval import group_expressions for nodes, values in group_expressions(evaluator.find_expressions(tree)): print(len(nodes), "nodes with value:", values) ``` Output: ``` 1 nodes with value: 3 1 nodes with value: 5 3 nodes with value: <__main__.Rectangle object at 0x10d374d30> ``` If we want to list all the expressions in a tree, we may want to filter out certain expressions whose values are obvious. For example, suppose we have a function `foo`: ```python def foo(): pass ``` If we refer to `foo` by its name as usual, then that's not interesting: ```python from pure_eval import is_expression_interesting node = ast.parse('foo').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='foo', ctx=Load()) False ``` But if we refer to it by a different name, then it's interesting: ```python node = ast.parse('bar').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='bar', ctx=Load()) True ``` In general `is_expression_interesting` returns False for the following values: - Literals (e.g. `123`, `'abc'`, `[1, 2, 3]`, `{'a': (), 'b': ([1, 2], [3])}`) - Variables or attributes whose name is equal to the value's `__name__`, such as `foo` above or `self.foo` if it was a method. - Builtins (e.g. `len`) referred to by their usual name. To make things easier, you can combine finding expressions, grouping them, and filtering out the obvious ones with: ```python evaluator.interesting_expressions_grouped(root) ``` To get the source code of an AST node, I recommend [asttokens](https://github.com/gristlabs/asttokens). Here's a complete example that brings it all together: ```python from asttokens import ASTTokens from pure_eval import Evaluator source = """ x = 1 d = {x: 2} y = d[x] """ names = {} exec(source, names) atok = ASTTokens(source, parse=True) for nodes, value in Evaluator(names).interesting_expressions_grouped(atok.tree): print(atok.get_text(nodes[0]), "=", value) ``` Output: ```python x = 1 d = {1: 2} y = 2 d[x] = 2 ``` http://github.com/alexmojaki/pure_eval python-py3dns src 1d22b6ce315e79de0789efc4a2c58d0914bf1a3b5f10d20e22713add8b0d2ea9 Python 3 DNS library Python 3 DNS library: https://launchpad.net/py3dns python-py3dns-help noarch e05fa43529c02f471ef1b76141ae0aac8b68a7155779df213e58fa0a5cbf9dbf Development documents and examples for py3dns Python 3 DNS library: https://launchpad.net/py3dns python-pyLibravatar src 25fe0e33f3b4eaf85bba4e0e34cf1cc5324cf98890f67ea610b0ac740e73f15e Python module for Libravatar PyLibravatar is an easy way to make use of the federated Libravatar_ avatar hosting service from within your Python applications. https://launchpad.net/pylibravatar python-pygal src 828d2db9c51c475e8e12d4103a538660dc707eb33dd2fd01fa7e7e8659fe7a1f A Python svg graph plotting library A Python svg graph plotting library. https://www.pygal.org/ python-pygal-help noarch 95a6cd186d0a0ce4a47e81b8e0b91b91103a83a14d46ab41dbe1d25cce682b08 Development documents and examples for pygal https://www.pygal.org/ python-pygit2 src 420b189d97b3998105ba06835360a9160e9d7f93733cbbcab3c15e609303cef1 Python bindings for libgit2. - Documentation - http://www.pygit2.org/ - Install - http://www.pygit2.org/install.html - Download - https://pypi.python.org/pypi/pygit2 - Source code and issue tracker - https://github.com/libgit2/pygit2 - Changelog - https://github.com/libgit2/pygit2/blob/master/CHANGELOG.rst - Authors - https://github.com/libgit2/pygit2/blob/master/AUTHORS.rst https://github.com/libgit2/pygit2 python-pygit2-debuginfo aarch64 d54a823f485448b56f1e3896510c5882ccceef2a566bf0bd11e4aee90519fa28 Debug information for package python-pygit2 This package provides debug information for package python-pygit2. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/libgit2/pygit2 python-pygit2-debugsource aarch64 cda93b66f617f977e9f9ed29d3383d675e2c3df3ae0a8da3ea4898093af47d8b Debug sources for package python-pygit2 This package provides debug sources for package python-pygit2. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/libgit2/pygit2 python-pygit2-help aarch64 6b007ea0cda0be7d8c7fc3d78e019c821673a842ad4bc949281409e8100b4066 Development documents and examples for pygit2 - Documentation - http://www.pygit2.org/ - Install - http://www.pygit2.org/install.html - Download - https://pypi.python.org/pypi/pygit2 - Source code and issue tracker - https://github.com/libgit2/pygit2 - Changelog - https://github.com/libgit2/pygit2/blob/master/CHANGELOG.rst - Authors - https://github.com/libgit2/pygit2/blob/master/AUTHORS.rst https://github.com/libgit2/pygit2 python-pytest-xdist src 01b23a68f134033f1a55e027617345ad4e5cd30a4facb503fb00fd31fd3f42b6 pytest xdist plugin for distributed testing and loop-on-failing modes pytest xdist plugin for distributed testing and loop-on-failing modes. https://github.com/pytest-dev/pytest-xdist python-pytest-xdist-help noarch 7a16af405875bce6f100ae86292f049a461af5f71335a014eac713af33a48e27 Development documents and examples for pytest-xdist pytest xdist plugin for distributed testing and loop-on-failing modes. https://github.com/pytest-dev/pytest-xdist python-responses src 7bce305505b95ab4f32a8dabf57459a724ca72006c3ebc3790e0a3fbfc1c735b A utility library for mocking out the `requests` Python library. A utility library for mocking out the requests Python library. https://github.com/getsentry/responses python-responses-help noarch c20835902bbce3f872f51ca450ac86c11b2e0f1fd869f556ce99b1109c65d230 A utility library for mocking out the `requests` Python library. A utility library for mocking out the requests Python library. https://github.com/getsentry/responses python-retask src 2d2090b52de19415a21e88dbb0c3d594742a5ee2ec87ce434f664098308f10e3 Python module to create and manage distributed task queues Python module to create and manage distributed task queues using redis. http://retask.readthedocs.org/en/latest/index.html python-rpmautospec src 6c31ef2c798b5007ae487c506641e6dbda87475f68872dcec12ffbc5e1dff8a7 Package and CLI tool to generate release fields and changelogs A package and CLI tool to generate RPM release fields and changelogs. https://pagure.io/fedora-infra/rpmautospec python-stack-data src 9744e25a91d361db5222df2872e5b8eae90c60e71e920cbb2ac65bd8f3fc57a8 Extract data from python stack frames and tracebacks for informative displays 6 | for i in range(5): 7 | row = [] 8 | result.append(row) --> 9 | print_stack() 10 | for j in range(5): ``` The code for `print_stack()` is fairly self-explanatory. If you want to learn more details about a particular class or method I suggest looking through some docstrings. `FrameInfo` is a class that accepts either a frame or a traceback object and provides a bunch of nice attributes and properties (which are cached so you don't need to worry about performance). In particular `frame_info.lines` is a list of `Line` objects. `line.render()` returns the source code of that line suitable for display. Without any arguments it simply strips any common leading indentation. Later on we'll see a more powerful use for it. You can see that `frame_info.lines` includes some lines of surrounding context. By default it includes 3 pieces of context before the main line and 1 piece after. We can configure the amount of context by passing options: ```python options = stack_data.Options(before=1, after=0) frame_info = stack_data.FrameInfo(frame, options) ``` Then the output looks like: ``` http://github.com/alexmojaki/stack_data python-stack-data-help noarch e83e5d798c0b4861c69b64a086aee583d8e01c34da5016ae9b3000c16851f587 Development documents and examples for stack-data 6 | for i in range(5): 7 | row = [] 8 | result.append(row) --> 9 | print_stack() 10 | for j in range(5): ``` The code for `print_stack()` is fairly self-explanatory. If you want to learn more details about a particular class or method I suggest looking through some docstrings. `FrameInfo` is a class that accepts either a frame or a traceback object and provides a bunch of nice attributes and properties (which are cached so you don't need to worry about performance). In particular `frame_info.lines` is a list of `Line` objects. `line.render()` returns the source code of that line suitable for display. Without any arguments it simply strips any common leading indentation. Later on we'll see a more powerful use for it. You can see that `frame_info.lines` includes some lines of surrounding context. By default it includes 3 pieces of context before the main line and 1 piece after. We can configure the amount of context by passing options: ```python options = stack_data.Options(before=1, after=0) frame_info = stack_data.FrameInfo(frame, options) ``` Then the output looks like: ``` http://github.com/alexmojaki/stack_data python-templated-dictionary src ca534cc4bd7515b1eda9fc24ab5d9315fd1fc3d47fce84f1e6c1c71eb20ba068 Dictionary with Jinja2 expansion Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary python-templated-dictionary-help noarch d0dcd6b98f1ee3b6088ad033be7be2cf831b333651b5f2fc2fa8e56e55a8bd68 Development documents and examples for templated-dictionary Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary python3-Authlib noarch 6d621dfdbaff4bfa18d36a98ea0fe742f2fa7210ee47dc7a3cfff75636989eb6 The ultimate Python library in building OAuth and OpenID Connect servers and clients. The ultimate Python library in building OAuth and OpenID Connect servers. JWS, JWK, JWA, JWT are included. https://authlib.org/ python3-CCColUtils aarch64 7e300601570cacad58a197b5854ff727f850494ab10092eba088bfef4bbadaed Kerberos5 Credential Cache Collection Utilities Kerberos5 Credential Cache Collection Utilities. https://pagure.io/cccolutils python3-Flask-Caching noarch cbc7f28c6cd23bc4b59dbd5d728e9f7894ca0f3e0b3cbd53905dcabc02a9ca26 Adds caching support to Flask applications. A fork of the `Flask-cache`_ extension which adds easy cache support to Flask. https://github.com/pallets-eco/flask-caching python3-Flask-OpenID noarch 181a427712d7bd270f851e61c51d3c25a9773cff1151882e3bb3766730ec5a67 OpenID support for Flask Flask-OpenID adds openid support to flask applications http://github.com/mitsuhiko/flask-openid/ python3-Flask-WTF noarch 2538de7e5fcec202cbd93d3a1d018b603c9661621e03f1fd99643336a5cb31cc Form rendering, validation, and CSRF protection for Flask with WTForms. Simple integration of Flask and WTForms, including CSRF, file upload, and reCAPTCHA. https://github.com/wtforms/flask-wtf/ python3-WTForms noarch 8c1f65f7b4a000dfcf5e6b006cec181418cf19777cbbcf627149e61a2895de8b Form validation and rendering for Python web development. WTForms is a flexible forms validation and rendering library for Python web development. It can work with whatever web framework and template engine you choose. It supports data validation, CSRF protection, internationalization (I18N), and more. There are various community libraries that provide closer integration with popular frameworks. https://wtforms.readthedocs.io/ python3-XStatic-Bootstrap-SCSS noarch 4b79e24c7ddfff103b71f217c4bff2ea1b6c28cefcedafb8193937f92eba19c8 Bootstrap-SCSS 3.4.1 (XStatic packaging standard) Bootstrap style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://github.com/twbs/bootstrap-sass python3-XStatic-DataTables noarch a003a4ad5b2ca275a78dce2300981d7029306bba178e39345cd6f709bfbb3436 DataTables 1.10.15 (XStatic packaging standard) The DataTables plugin for jQuery packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. http://www.datatables.net python3-XStatic-Patternfly noarch b667485730fe311380e029aeab4fa86ab8a770b6ebce58df60cd92d02e45b686 Patternfly 3.21.0 (XStatic packaging standard) Patternfly style library packaged for setuptools (easy_install) / pip. This package is intended to be used by **any** project that needs these files. It intentionally does **not** provide any extra code except some metadata **nor** has any extra requirements. You MAY use some minimal support code from the XStatic base package, if you like. You can find more info about the xstatic packaging way in the package `XStatic`. https://www.patternfly.org/ python3-argparse-manpage noarch a4405fd3903a087f00432e3518b3f9d033daa296096693bad5bf9f2c62803f31 Build manual page from python's ArgumentParser object. Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python3-asttokens noarch cd3f48975fe816ddaf03b1011f5707100ac82e3fad45504fe7f2d5bc0f2b1b19 Module to annotate Python abstract syntax trees with source code positions The asttokens module annotates Python abstract syntax trees (ASTs) with the positions of tokens and text in the source code that generated them. This makes it possible for tools that work with logical AST nodes to find the particular text that resulted in those nodes, for example for automated refactoring or highlighting. https://github.com/gristlabs/asttokens python3-backoff noarch a74dbd52b63e45084589b378a697f67fe7033fab1cbee54c032e2220dfa323c6 Function decoration for backoff and retry This module provides function decorators which can be used to wrap a\ function such that it will be retried until some condition is met. It\ is meant to be of use when accessing unreliable resources with the\ potential for intermittent failures i.e. network resources and external\ APIs. Somewhat more generally, it may also be of use for dynamically\ polling resources for externally generated content. https://github.com/litl/backoff python3-blessed noarch caee4d87ccb30c3308d3f9b860eb33448e3b21460d1e4a1a4d952bbe825df117 Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities. Blessed is an easy, practical library for making python terminal apps https://github.com/jquast/blessed python3-cachelib noarch f915fd91197493ff0d621f17393587f20582a27955ee558f0199d549b6623b42 A collection of cache libraries in the same API interface. A collection of cache libraries in the same API interface. Extracted from werkzeug. https://github.com/pallets-eco/cachelib python3-copr noarch dedbb719fd9cdf10a539dfab2cd5377b37ae342fad2e812794857a28da73e72e Python interface for Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains python interface to access Copr service. Mostly useful for developers only. https://github.com/fedora-copr/copr python3-copr-common noarch a40f7f36d71bc439959dec45858432055cf70bb503930a2ba516ada9bf7725fe Python code used by Copr COPR is lightweight build system. It allows you to create new project in WebUI, and submit new builds and COPR will create yum repository from latest builds. This package contains python code used by other Copr packages. Mostly useful for developers only. https://github.com/fedora-copr/copr python3-crudini noarch 295508a7e3eafe20b338fa03e426e1b1bc67c8cda6ce69c58b20481bc724fb67 A utility for manipulating ini files crudini A utility for manipulating ini files http://github.com/pixelb/crudini python3-debtcollector noarch 614f07e82719e73b05dba7b80bf05a18624819437b7ab553a84941b3432903ce A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner. https://docs.openstack.org/debtcollector/latest python3-email-validator noarch fb51fdf6918f6c6721e1ed9f09052512b0dda7393038055fa0e7198c6f788eef A robust email address syntax and deliverability validation library. A robust email address syntax and deliverability validation library for Python by [Joshua Tauberer](https://joshdata.me). This library validates that a string is of the form `name@example.com`. This is the sort of validation you would want for an email-based login form on a website. Key features: * Checks that an email address has the correct syntax --- good for login forms or other uses related to identifying users. * Gives friendly error messages when validation fails (appropriate to show to end users). * (optionally) Checks deliverability: Does the domain name resolve? And you can override the default DNS resolver. * Supports internationalized domain names and (optionally) internationalized local parts, but blocks unsafe characters. * Normalizes email addresses (super important for internationalized addresses! see below). The library is NOT for validation of the To: line in an email message (e.g. `My Name <my@address.com>`), which [flanker](https://github.com/mailgun/flanker) is more appropriate for. And this library does NOT permit obsolete forms of email addresses, so if you need strict validation against the email specs exactly, use [pyIsEmail](https://github.com/michaelherold/pyIsEmail). This library is tested with Python 3.6+ but should work in earlier versions: [![Build Status](https://app.travis-ci.com/JoshData/python-email-validator.svg?branch=main)](https://app.travis-ci.com/JoshData/python-email-validator) https://github.com/JoshData/python-email-validator python3-executing noarch 3f5890ad20b41970842ff896cd3a0b0f62f0af50a62c582c17ddc99edd1be2fb Get the currently executing AST node of a frame, and other information [![Build Status](https://github.com/alexmojaki/executing/workflows/Tests/badge.svg?branch=master)](https://github.com/alexmojaki/executing/actions) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/executing/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/executing?branch=master) [![Supports Python versions 2.7 and 3.5+, including PyPy](https://img.shields.io/pypi/pyversions/executing.svg)](https://pypi.python.org/pypi/executing) This mini-package lets you get information about what a frame is currently doing, particularly the AST node being executed. * [Usage](#usage) * [Getting the AST node](#getting-the-ast-node) * [Getting the source code of the node](#getting-the-source-code-of-the-node) * [Getting the `__qualname__` of the current function](#getting-the-__qualname__-of-the-current-function) * [The Source class](#the-source-class) * [Installation](#installation) * [How does it work?](#how-does-it-work) * [Is it reliable?](#is-it-reliable) * [Which nodes can it identify?](#which-nodes-can-it-identify) * [Libraries that use this](#libraries-that-use-this) ```python import executing node = executing.Source.executing(frame).node ``` Then `node` will be an AST node (from the `ast` standard library module) or None if the node couldn't be identified (which may happen often and should always be checked). `node` will always be the same instance for multiple calls with frames at the same point of execution. If you have a traceback object, pass it directly to `Source.executing()` rather than the `tb_frame` attribute to get the correct node. For this you will need to separately install the [`asttokens`](https://github.com/gristlabs/asttokens) library, then obtain an `ASTTokens` object: ```python executing.Source.executing(frame).source.asttokens() ``` or: ```python executing.Source.for_frame(frame).asttokens() ``` or use one of the convenience methods: ```python executing.Source.executing(frame).text() executing.Source.executing(frame).text_range() ``` ```python executing.Source.executing(frame).code_qualname() ``` or: ```python executing.Source.for_frame(frame).code_qualname(frame.f_code) ``` Everything goes through the `Source` class. Only one instance of the class is created for each filename. Subclassing it to add more attributes on creation or methods is recommended. The classmethods such as `executing` will respect this. See the source code and docstrings for more detail. pip install executing If you don't like that you can just copy the file `executing.py`, there are no dependencies (but of course you won't get updates). Suppose the frame is executing this line: ```python self.foo(bar.x) ``` and in particular it's currently obtaining the attribute `self.foo`. Looking at the bytecode, specifically `frame.f_code.co_code[frame.f_lasti]`, we can tell that it's loading an attribute, but it's not obvious which one. We can narrow down the statement being executed using `frame.f_lineno` and find the two `ast.Attribute` nodes representing `self.foo` and `bar.x`. How do we find out which one it is, without recreating the entire compiler in Python? The trick is to modify the AST slightly for each candidate expression and observe the changes in the bytecode instructions. We change the AST to this: ```python (self.foo ** 'longuniqueconstant')(bar.x) ``` and compile it, and the bytecode will be almost the same but there will be two new instructions: LOAD_CONST 'longuniqueconstant' BINARY_POWER and just before that will be a `LOAD_ATTR` instruction corresponding to `self.foo`. Seeing that it's in the same position as the original instruction lets us know we've found our match. Yes - if it identifies a node, you can trust that it's identified the correct one. The tests are very thorough - in addition to unit tests which check various situations directly, there are property tests against a large number of files (see the filenames printed in [this build](https://travis-ci.org/alexmojaki/executing/jobs/557970457)) with real code. Specifically, for each file, the tests: 1. Identify as many nodes as possible from all the bytecode instructions in the file, and assert that they are all distinct 2. Find all the nodes that should be identifiable, and assert that they were indeed identified somewhere In other words, it shows that there is a one-to-one mapping between the nodes and the instructions that can be handled. This leaves very little room for a bug to creep in. Furthermore, `executing` checks that the instructions compiled from the modified AST exactly match the original code save for a few small known exceptions. This accounts for all the quirks and optimisations in the interpreter. Currently it works in almost all cases for the following `ast` nodes: - `Call`, e.g. `self.foo(bar)` - `Attribute`, e.g. `point.x` - `Subscript`, e.g. `lst[1]` - `BinOp`, e.g. `x + y` (doesn't include `and` and `or`) - `UnaryOp`, e.g. `-n` (includes `not` but only works sometimes) - `Compare` e.g. `a < b` (not for chains such as `0 < p < 1`) The plan is to extend to more operations in the future. - **[`stack_data`](https://github.com/alexmojaki/stack_data)**: Extracts data from stack frames and tracebacks, particularly to display more useful tracebacks than the default. Also uses another related library of mine: **[`pure_eval`](https://github.com/alexmojaki/pure_eval)**. - **[`futurecoder`](https://futurecoder.io/)**: Highlights the executing node in tracebacks using `executing` via `stack_data`, and provides debugging with `snoop`. - **[`snoop`](https://github.com/alexmojaki/snoop)**: A feature-rich and convenient debugging library. Uses `executing` to show the operation which caused an exception and to allow the `pp` function to display the source of its arguments. - **[`heartrate`](https://github.com/alexmojaki/heartrate)**: A simple real time visualisation of the execution of a Python program. Uses `executing` to highlight currently executing operations, particularly in each frame of the stack trace. - **[`sorcery`](https://github.com/alexmojaki/sorcery)**: Dark magic delights in Python. Uses `executing` to let special callables called spells know where they're being called from. - **[`IPython`](https://github.com/ipython/ipython/pull/12150)**: Highlights the executing node in tracebacks using `executing` via [`stack_data`](https://github.com/alexmojaki/stack_data). - **[`icecream`](https://github.com/gruns/icecream)**: 🍦 Sweet and creamy print debugging. Uses `executing` to identify where `ic` is called and print its arguments. - **[`friendly_traceback`](https://github.com/friendly-traceback/friendly-traceback)**: Uses `stack_data` and `executing` to pinpoint the cause of errors and provide helpful explanations. - **[`python-devtools`](https://github.com/samuelcolvin/python-devtools)**: Uses `executing` for print debugging similar to `icecream`. - **[`sentry_sdk`](https://github.com/getsentry/sentry-python)**: Add the integration `sentry_sdk.integrations.executingExecutingIntegration()` to show the function `__qualname__` in each frame in sentry events. - **[`varname`](https://github.com/pwwang/python-varname)**: Dark magics about variable names in python. Uses `executing` to find where its various magical functions like `varname` and `nameof` are called from. https://github.com/alexmojaki/executing python3-flask-whooshee noarch 05358a0c9f36d8ada3aaf84b11677b233d1e7927ff17782b4fa2890ae819a838 Flask-SQLAlchemy - Whoosh Integration Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python3-html2text noarch af09873875c8ff01a993d841571889c81c623ae9a8062ecdf9ca4f7f610da4df Turn HTML into equivalent Markdown-structured text. Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python3-html5-parser aarch64 943a808095f0714993cf3709b11ce975b12d56d8cafccfcea65804ce9d9aadee A fast, standards compliant, C based, HTML 5 parser for python A fast, standards compliant, C based, HTML 5 parser for python https://pypi.python.org/pypi/html5-parser python3-ipdb noarch 8d4aca85ab6e5da719f1a0af250e10eaeddf2f56b89fb3114c98ad0a91576e25 IPython-enabled pdb https://github.com/gotcha/ipdb python3-ipython noarch 6cacdded19b6c77a084b38f6ccfb6e1385bdba8c8bb97ae17c5f1f08d8e119b3 IPython: Productive Interactive Computing IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are: * A powerful interactive Python shell * A `Jupyter <https://jupyter.org/>`_ kernel to work with Python code in Jupyter notebooks and other interactive frontends. The enhanced interactive Python shells have the following main features: * Comprehensive object introspection. * Input history, persistent across sessions. * Caching of output results during a session with automatically generated references. * Extensible tab completion, with support by default for completion of python variables and keywords, filenames and function keywords. * Extensible system of 'magic' commands for controlling the environment and performing many tasks related either to IPython or the operating system. * A rich configuration system with easy switching between different setups (simpler than changing $PYTHONSTARTUP environment variables every time). * Session logging and reloading. * Extensible syntax processing for special purpose situations. * Access to the system shell with user-extensible alias system. * Easily embeddable in other Python programs and GUIs. * Integrated access to the pdb debugger and the Python profiler. The latest development version is always available from IPython's `GitHub site <http://github.com/ipython>`_. https://ipython.org python3-jedi noarch 8b41eee6b789858a60e06605714be207e58c1d878fba34a3d98668022942cbf9 A static analysis tool for Python that is typically used in IDEs/editors plugins Jedi is a static analysis tool for Python that is typically used in IDEs/editors plugins. It has a focus on autocompletion and goto functionality. Other features include refactoring, code search and finding references. https://github.com/davidhalter/jedi python3-keystoneauth1 noarch 08b532487c458c2798b5ee4fb6902c03da81caaadde6854a9ac0d780d1383efc Authentication Library for OpenStack Identity Keystoneauth provides a standard way to do authentication and service requests \ within the OpenStack ecosystem. It is designed for use in conjunction with \ the existing OpenStack clients and for simplifying the process of writing \ new clients. https://docs.openstack.org/keystoneauth/latest/ python3-koji noarch 80a5ac9b94cdc5de324379cc417d7002c4857c6ca59a3143bfed74f66f7dcf7d Build system tools python library Koji is a system for building and tracking RPMS. This subpackage provides python functions and libraries. https://pagure.io/koji/ python3-matplotlib-inline noarch b2f3bda6993989ec56e6c7d534d457d38960536153fc2c0c27f93cfd5d3a0800 Inline Matplotlib backend for Jupyter Inline Matplotlib backend for Jupyter https://github.com/ipython/matplotlib-inline python3-novaclient noarch dbe4c0547b7b43f070bdd4444adaab414220a4c57f60142ecace6d3ebe0e49ea Client library for OpenStack Compute API This is a client for the OpenStack Nova API. There's a Python API (the novaclient module), and a command-line script (nova). Each implements 100% of the OpenStack Nova API. https://docs.openstack.org/python-novaclient/latest python3-openid noarch 6a47b8e1997b65ce774a8096c19655f16268cb038fd47a23b1b6a04c12cf996f OpenID support for modern servers and consumers. This is a set of Python packages to support use of the OpenID decentralized identity system in your application, update to Python 3. Want to enable single sign-on for your web site? Use the openid.consumer package. Want to run your own OpenID server? Check out openid.server. Includes example code and support for a variety of storage back-ends. http://github.com/necaris/python3-openid python3-openid src bdec576ae7bcdd70503aa35e25b0be9bba9254995a8886b422b31c1bd5318023 OpenID support for modern servers and consumers. This is a set of Python packages to support use of the OpenID decentralized identity system in your application, update to Python 3. Want to enable single sign-on for your web site? Use the openid.consumer package. Want to run your own OpenID server? Check out openid.server. Includes example code and support for a variety of storage back-ends. http://github.com/necaris/python3-openid python3-openid-help noarch 67e440ef8f7c14b0cd806286d807ca207e14b169161be29c0ac4c5eb1d1a740d Development documents and examples for python3-openid This is a set of Python packages to support use of the OpenID decentralized identity system in your application, update to Python 3. Want to enable single sign-on for your web site? Use the openid.consumer package. Want to run your own OpenID server? Check out openid.server. Includes example code and support for a variety of storage back-ends. http://github.com/necaris/python3-openid python3-openid-teams noarch 10c445c8c8885c27104014008adc968b649c0c44da04b731bd241d3a73337c3c This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python3-openidc-client noarch 4d97084cd66ddad994c1be181bf6f60a816d54a8852e13d26a873d2ee16e0139 Python OpenID Connect client with token caching and management Python OpenID Connect client with token caching and management. python3-os-service-types noarch e526e4054b9bed3f335cde718b3714a66e45a09aadee6b78c55a70e9fd98ddf0 Python library for consuming OpenStack sevice-types-authority data https://pypi.org/project/os-service-types/ python3-oslo-concurrency noarch febecb8a8a8f082dbcbcfef482f26e26092d5f4fdd73e9969b90d50d4ec857dc Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python3-oslo-config noarch c0bf3f7bca740e6f1847264250378f83326247a77fd26a2343e3ab8f8cbea51d Oslo Configuration API The Oslo configuration API supports parsing command line arguments and .ini style configuration files. https://docs.openstack.org/oslo.config/latest/ python3-oslo-i18n noarch 9578a295ee02870d71694abc1d91bff1d10b6eb1856ffea1ec78bc1cc2d8bf29 Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python3-oslo-serialization noarch 8c2aef44945217b661e2412a4137facafc86f242de8df5886c6b65a759eb8661 Oslo Serialization library The oslo.serialization library provides support for representing objects in transmittable and storable formats, such as Base64, JSON and MessagePack. https://docs.openstack.org/oslo.serialization/latest/ python3-oslo-utils noarch 4a56383905d059b18aba830b04cb7b5676372b030fc99a40eeed1427aed3251f Oslo Utility library The oslo.utils library provides support for common utility type functions, such as encoding, exception handling, string manipulation, and time handling. https://docs.openstack.org/oslo.utils/latest/ python3-parso noarch ed6725265a6e2d268bdd72246b401d0d9dec4d4e6610ca2f66809ce93ba5ccae A Python Parser Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions. Parso consists of a small API to parse Python and analyse the syntax tree. https://github.com/davidhalter/parso python3-pickleshare noarch aced4beb58c67b313142b2a9a2f1a38f8d12da4fe71ccdcda372eac5c5b7af61 Tiny 'shelve'-like database with concurrency support PickleShare - a small 'shelve' like datastore with concurrency support Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike shelve, many processes can access the database simultaneously. Changing a value in database is immediately visible to other processes accessing the same database. Concurrency is possible because the values are stored in separate files. Hence the "database" is a directory where *all* files are governed by PickleShare. Example usage:: from pickleshare import * db = PickleShareDB('~/testpickleshare') db.clear() print("Should be empty:",db.items()) db['hello'] = 15 db['aku ankka'] = [1,2,313] db['paths/are/ok/key'] = [1,(5,46)] print(db.keys()) This module is certainly not ZODB, but can be used for low-load (non-mission-critical) situations where tiny code size trumps the advanced features of a "real" object database. Installation guide: pip install pickleshare https://github.com/pickleshare/pickleshare python3-prompt-toolkit noarch 7323a46197543b1ca6d232aa5609e898c8bc9af4f8d5c984d36c0f545bb68eee Library for building powerful interactive command lines in Python prompt_toolkit is a library for building powerful interactive command lines and terminal applications in Python. https://github.com/prompt-toolkit/python-prompt-toolkit python3-pure-eval noarch 8fed48a7056b545f86dfe554992a2e29eb3a98b456f879dc6070768212bb85d3 Safely evaluate AST nodes without side effects [![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.5+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval) This is a Python package that lets you safely evaluate certain AST nodes without triggering arbitrary code that may have unwanted side effects. It can be installed from PyPI: pip install pure_eval To demonstrate usage, suppose we have an object defined as follows: ```python class Rectangle: def __init__(self, width, height): self.width = width self.height = height @property def area(self): print("Calculating area...") return self.width * self.height rect = Rectangle(3, 5) ``` Given the `rect` object, we want to evaluate whatever expressions we can in this source code: ```python source = "(rect.width, rect.height, rect.area)" ``` This library works with the AST, so let's parse the source code and peek inside: ```python import ast tree = ast.parse(source) the_tuple = tree.body[0].value for node in the_tuple.elts: print(ast.dump(node)) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) Attribute(value=Name(id='rect', ctx=Load()), attr='area', ctx=Load()) ``` Now to actually use the library. First construct an Evaluator: ```python from pure_eval import Evaluator evaluator = Evaluator({"rect": rect}) ``` The argument to `Evaluator` should be a mapping from variable names to their values. Or if you have access to the stack frame where `rect` is defined, you can instead use: ```python evaluator = Evaluator.from_frame(frame) ``` Now to evaluate some nodes, using `evaluator[node]`: ```python print("rect.width:", evaluator[the_tuple.elts[0]]) print("rect:", evaluator[the_tuple.elts[0].value]) ``` Output: ``` rect.width: 3 rect: <__main__.Rectangle object at 0x105b0dd30> ``` OK, but you could have done the same thing with `eval`. The useful part is that it will refuse to evaluate the property `rect.area` because that would trigger unknown code. If we try, it'll raise a `CannotEval` exception. ```python from pure_eval import CannotEval try: print("rect.area:", evaluator[the_tuple.elts[2]]) # fails except CannotEval as e: print(e) # prints CannotEval ``` To find all the expressions that can be evaluated in a tree: ```python for node, value in evaluator.find_expressions(tree): print(ast.dump(node), value) ``` Output: ```python Attribute(value=Name(id='rect', ctx=Load()), attr='width', ctx=Load()) 3 Attribute(value=Name(id='rect', ctx=Load()), attr='height', ctx=Load()) 5 Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> Name(id='rect', ctx=Load()) <__main__.Rectangle object at 0x105568d30> ``` Note that this includes `rect` three times, once for each appearance in the source code. Since all these nodes are equivalent, we can group them together: ```python from pure_eval import group_expressions for nodes, values in group_expressions(evaluator.find_expressions(tree)): print(len(nodes), "nodes with value:", values) ``` Output: ``` 1 nodes with value: 3 1 nodes with value: 5 3 nodes with value: <__main__.Rectangle object at 0x10d374d30> ``` If we want to list all the expressions in a tree, we may want to filter out certain expressions whose values are obvious. For example, suppose we have a function `foo`: ```python def foo(): pass ``` If we refer to `foo` by its name as usual, then that's not interesting: ```python from pure_eval import is_expression_interesting node = ast.parse('foo').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='foo', ctx=Load()) False ``` But if we refer to it by a different name, then it's interesting: ```python node = ast.parse('bar').body[0].value print(ast.dump(node)) print(is_expression_interesting(node, foo)) ``` Output: ```python Name(id='bar', ctx=Load()) True ``` In general `is_expression_interesting` returns False for the following values: - Literals (e.g. `123`, `'abc'`, `[1, 2, 3]`, `{'a': (), 'b': ([1, 2], [3])}`) - Variables or attributes whose name is equal to the value's `__name__`, such as `foo` above or `self.foo` if it was a method. - Builtins (e.g. `len`) referred to by their usual name. To make things easier, you can combine finding expressions, grouping them, and filtering out the obvious ones with: ```python evaluator.interesting_expressions_grouped(root) ``` To get the source code of an AST node, I recommend [asttokens](https://github.com/gristlabs/asttokens). Here's a complete example that brings it all together: ```python from asttokens import ASTTokens from pure_eval import Evaluator source = """ x = 1 d = {x: 2} y = d[x] """ names = {} exec(source, names) atok = ASTTokens(source, parse=True) for nodes, value in Evaluator(names).interesting_expressions_grouped(atok.tree): print(atok.get_text(nodes[0]), "=", value) ``` Output: ```python x = 1 d = {1: 2} y = 2 d[x] = 2 ``` http://github.com/alexmojaki/pure_eval python3-py3dns noarch 0fa48337ef2149afbcbaf6b77f7206a345390614e164c2cffaf6be6401c8a633 Python 3 DNS library Python 3 DNS library: https://launchpad.net/py3dns python3-pyLibravatar noarch e9aee0db9d6df394d624c9ff2033a55b910167010a8e291bba41280890c06579 Python module for Libravatar PyLibravatar is an easy way to make use of the federated Libravatar_ avatar hosting service from within your Python applications. https://launchpad.net/pylibravatar python3-pygal noarch 90aac883132f1b658339e33cf7c2094f541c9c8942cdb3fc44ea6b535bca8b1e A Python svg graph plotting library https://www.pygal.org/ python3-pygit2 aarch64 4eb1735b24fd6f2f357ba623e602454064b5b311e2ca2f49e4cb3fa0e3958d9c Python bindings for libgit2. - Documentation - http://www.pygit2.org/ - Install - http://www.pygit2.org/install.html - Download - https://pypi.python.org/pypi/pygit2 - Source code and issue tracker - https://github.com/libgit2/pygit2 - Changelog - https://github.com/libgit2/pygit2/blob/master/CHANGELOG.rst - Authors - https://github.com/libgit2/pygit2/blob/master/AUTHORS.rst https://github.com/libgit2/pygit2 python3-pytest-xdist noarch 71f99407dd261aba63f5ff98f7fd5f55b88b0fd02c7515d98735a412d77e9a2b pytest xdist plugin for distributed testing and loop-on-failing modes pytest xdist plugin for distributed testing and loop-on-failing modes. https://github.com/pytest-dev/pytest-xdist python3-resalloc noarch f60c2f3380e8dbc3bdb8dfa788d2e2e386c81a8ec3d27a536fbfe713624757d4 Resource allocator for expensive resources - Python 3 client library The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. The python3-resalloc package provides Python 3 client library for talking to the resalloc server. https://github.com/praiskup/resalloc python3-responses noarch e1834b59eb6a16d17cf6e1a40a7eb92c0f6ef3b18b3632e403c6bea3d8458c82 A utility library for mocking out the `requests` Python library. A utility library for mocking out the requests Python library. https://github.com/getsentry/responses python3-retask noarch 49f188436a9e9b97f424f98c35a62eb010afee9bb2ae42eb09c12fc884eb333a Python module to create and manage distributed task queues Python module to create and manage distributed task queues using redis. http://retask.readthedocs.org/en/latest/index.html python3-rpkg noarch aa473e381385b575d881d207cebb06d0b0c7e6bd385be424bff4e57b39281694 Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpmautospec noarch acddc0a0f351ec22f0f26d1ab58e5b10b405249b58baab66f32bb4aee0c523ea Package and CLI tool to generate release fields and changelogs A package and CLI tool to generate RPM release fields and changelogs. https://pagure.io/fedora-infra/rpmautospec python3-stack-data noarch 374468c7434b45fcfb1f6c8b13fb815e35f7ed7e0fbfe8de8a2bab491cbc5814 Extract data from python stack frames and tracebacks for informative displays 6 | for i in range(5): 7 | row = [] 8 | result.append(row) --> 9 | print_stack() 10 | for j in range(5): ``` The code for `print_stack()` is fairly self-explanatory. If you want to learn more details about a particular class or method I suggest looking through some docstrings. `FrameInfo` is a class that accepts either a frame or a traceback object and provides a bunch of nice attributes and properties (which are cached so you don't need to worry about performance). In particular `frame_info.lines` is a list of `Line` objects. `line.render()` returns the source code of that line suitable for display. Without any arguments it simply strips any common leading indentation. Later on we'll see a more powerful use for it. You can see that `frame_info.lines` includes some lines of surrounding context. By default it includes 3 pieces of context before the main line and 1 piece after. We can configure the amount of context by passing options: ```python options = stack_data.Options(before=1, after=0) frame_info = stack_data.FrameInfo(frame, options) ``` Then the output looks like: ``` http://github.com/alexmojaki/stack_data python3-templated-dictionary noarch 46f4585d22078d29ac149e2113854e4a09bab3ece807a70baaa7702ecad5efe0 Dictionary with Jinja2 expansion Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary resalloc noarch f45ee9fec4a1aa8765f542b303adfc5b1a3e7e104a10c1195f27fcd0fcd96681 Resource allocator for expensive resources - client tooling The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. The resalloc package provides the client-side tooling. https://github.com/praiskup/resalloc resalloc src c271e5d557b03701bf3e819bf4e8e5e12ab3dda78fa4d1f46d528be8e2c46b48 Resource allocator for expensive resources - client tooling The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. The resalloc package provides the client-side tooling. https://github.com/praiskup/resalloc resalloc-selinux noarch 7cee64dc3ec52b8b750ef51eb73e5cf80784a02ed7aa8da850bd279fc121ff58 SELinux module for resalloc The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. https://github.com/praiskup/resalloc resalloc-server noarch 20481e63e017263d00769eb78ab28ddcce496dbae2ca757465a3fdc4b5045af1 Resource allocator for expensive resources - server part The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. The resalloc-server package provides the resalloc server, and some tooling for resalloc administrators. https://github.com/praiskup/resalloc resalloc-webui noarch ab09928ed757b5f4d9f7ccda18edd1ad0e5e30c61eecd46308e9c40402d62388 Resource allocator for expensive resources - webui part The resalloc project aims to help with taking care of dynamically allocated resources, for example ephemeral virtual machines used for the purposes of CI/CD tasks. The resalloc-webui package provides the resalloc webui, it shows page with information about resalloc resources. https://github.com/praiskup/resalloc rpkg src 34e5ed2ada046de81b30bbe27b05b5978b67d0dfc546d8b15362b73ccdca61d8 Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg noarch efd6c250741913fd3a17db6e3905bcd371f2a81b63f92c11523f559351b8fcbe RPM packaging utility This is an RPM packaging utility that can work with both DistGit and standard Git repositories and handles packed directory content as well as unpacked one. https://pagure.io/rpkg-util.git rpkg-common noarch b09d79597554101a20bb4e85dd7756e5fb4d4602a22f3ccf942e370c87907f40 Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-macros noarch be89a166be76e3e2fdf137a64ef5084edc9ed38a28c8e266f3d9da2222993131 Set of preproc macros for rpkg utility Set of preproc macros to be used by rpkg utility. They are designed to dynamically generate certain parts of rpm spec files. You can use those macros also without rpkg by: $ cat <file_with_the_macros> | preproc -s /usr/lib/rpkg.macros.d/all.bash -e INPUT_PATH=<file_with_the_macros> INPUT_PATH env variable is passed to preproc to inform macros about the input file location. The variable is used to derive INPUT_DIR_PATH variable which rpkg macros use. If neither INPUT_PATH nor INPUT_DIR_PATH are specified, INPUT_PATH will stay empty and INPUT_DIR_PATH will default to '.' (the current working directory). Another option to experiment with the macros is to source /usr/lib/rpkg.macros.d/all.bash into your bash environment Then you can directly invoke the macros on your command-line as bash functions. See content in /usr/lib/rpkg.macros.d to discover available macros. Please, see man rpkg-macros for more information. https://pagure.io/rpkg-util.git rpkg-macros src 17ea965ae797f54fbcfe10d0c2a61a7c33777ecebc5c2fddbb4e4fd488805d90 Set of preproc macros for rpkg utility Set of preproc macros to be used by rpkg utility. They are designed to dynamically generate certain parts of rpm spec files. You can use those macros also without rpkg by: $ cat <file_with_the_macros> | preproc -s /usr/lib/rpkg.macros.d/all.bash -e INPUT_PATH=<file_with_the_macros> INPUT_PATH env variable is passed to preproc to inform macros about the input file location. The variable is used to derive INPUT_DIR_PATH variable which rpkg macros use. If neither INPUT_PATH nor INPUT_DIR_PATH are specified, INPUT_PATH will stay empty and INPUT_DIR_PATH will default to '.' (the current working directory). Another option to experiment with the macros is to source /usr/lib/rpkg.macros.d/all.bash into your bash environment Then you can directly invoke the macros on your command-line as bash functions. See content in /usr/lib/rpkg.macros.d to discover available macros. Please, see man rpkg-macros for more information. https://pagure.io/rpkg-util.git rpkg-util src e21b48463b0e24054c6cede3d2817e2c6d961e1325206eb035768da6b79d44b1 RPM packaging utility This package contains the rpkg utility. We are putting the actual 'rpkg' package into a subpackage because there already exists package https://src.fedoraproject.org/rpms/rpkg. That package, however, does not actually produce rpkg rpm whereas rpkg-util does. https://pagure.io/rpkg-util.git rpm-git-tag-sort aarch64 f9d047a2f22ad8f869e0b5f8784316157d9dcf8d1e8520c3ccd8813f49742937 Sorts merged git annotated tags according to topology and rpm version sorting. Sorts git annotated tags of Name-Version-Release form according to topology (primary criterion) and rpm version sorting (secondary criterion). Outputs only merged tags (i.e. those that reachable from the current HEAD). https://pagure.io/rpm-git-tag-sort rpm-git-tag-sort src a188c7e85f1afb5e05634196e119337b89d7c419e0161b6cd0a79684d436e61d Sorts merged git annotated tags according to topology and rpm version sorting. Sorts git annotated tags of Name-Version-Release form according to topology (primary criterion) and rpm version sorting (secondary criterion). Outputs only merged tags (i.e. those that reachable from the current HEAD). https://pagure.io/rpm-git-tag-sort rpm-git-tag-sort-debuginfo aarch64 4259bdcca0bf4a50d8a99b5848042367e5488a733924083ec6b5a59913415ae9 Debug information for package rpm-git-tag-sort This package provides debug information for package rpm-git-tag-sort. Debug information is useful when developing applications that use this package or when debugging this package. https://pagure.io/rpm-git-tag-sort rpm-git-tag-sort-debugsource aarch64 2978341941eb227a56c89a5f504f3d88871cdcf18c36b7e879c3f20c4499ae3f Debug sources for package rpm-git-tag-sort This package provides debug sources for package rpm-git-tag-sort. Debug sources are useful when developing applications that use this package or when debugging this package. https://pagure.io/rpm-git-tag-sort rpmautospec noarch 3d50037b6d12909c43e33063d9e8724931d7adfbac1346e2c52d38af88dac380 CLI tool for generating RPM releases and changelogs CLI tool for generating RPM releases and changelogs https://pagure.io/fedora-infra/rpmautospec rpmautospec-rpm-macros noarch 5640f2c4c45439ca45cc47c94d51c4af94efabe1f6a2099a8fb1f1790d2f3704 Rpmautospec RPM macros for local rpmbuild RPM macros with placeholders for building rpmautospec enabled packages localy https://pagure.io/fedora-infra/rpmautospec tini aarch64 2334354bf981f5dfa24c2f558cef3b3e4afc38e1a7aa6d4b67330122123c3580 A tiny but valid init for containers Tini is the simplest init you could think of. All Tini does is spawn a single child (Tini is meant to be run in a container), and wait for it to exit all the while reaping zombies and performing signal forwarding. https://github.com/krallin/tini tini src 83b46fe0cde79c0cf222fb9080617a4f71bd72a8244998e5e5d5801063ebbaa6 A tiny but valid init for containers Tini is the simplest init you could think of. All Tini does is spawn a single child (Tini is meant to be run in a container), and wait for it to exit all the while reaping zombies and performing signal forwarding. https://github.com/krallin/tini tini-debuginfo aarch64 55e723568cca653397342b0a1cbe7aa4e557c078db21c30597361692695d867b Debug information for package tini This package provides debug information for package tini. Debug information is useful when developing applications that use this package or when debugging this package. https://github.com/krallin/tini tini-debugsource aarch64 95c37e70ad2252da92b14caa79810c73b09aeccf8d4f8f7a5751058204f497ad Debug sources for package tini This package provides debug sources for package tini. Debug sources are useful when developing applications that use this package or when debugging this package. https://github.com/krallin/tini tini-static aarch64 2e49a377ce9eef3de5c692562680f953948a87b88521fd0a3d825861be1ceafd Standalone static build of tini This package contains a standalone static build of tini, meant to be used inside a container. https://github.com/krallin/tini tito noarch 3485d81e04c31b8f13cb4de80341a14ef3f93a9df3ec5d2307621be62846846c A tool for managing rpm based git projects Tito is a tool for managing tarballs, rpms, and builds for projects using git. https://github.com/rpm-software-management/tito tito src 905cabf04d04b833ea0fd5ef6b3df666fca7e7cc8765435fac95eaa6498cfdd3 A tool for managing rpm based git projects Tito is a tool for managing tarballs, rpms, and builds for projects using git. https://github.com/rpm-software-management/tito