copr-backend noarch aab657137d1ae3a87c83e55736929688d1509aef8bc8c2cb618ce345456c4086 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 noarch 7665b905dd4e47da6aa59f122cfc65da309bf78d9a08547894aba72f35e88d93 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 66231f5a7667e635e59000f15118f01aec71d7cbc3bc1e2ffb8d930d4197f7ca 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 dcb451a15625067c2fb560776ee7ed693729f7fe93558488c898f34f7c8daa97 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 46411a025e814c6ef5b285b41d13665c497ed68219c53856ff1cc81e1bfdacc0 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 b765364da535197e04f1fea622d579bcd5c5f751cb89e318bac1b6c4c813216d 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 noarch 5f926315db7bf3bf433bc005dc909eba1bab6fe2fb67198846915d84260a742f 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 noarch c4bbfa018a9666fe4897326fe4cb34d8a238f2b3d6376c1ce240bee99ee799b0 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 noarch c801e58a621ed3ab8ad0b9924b64c2453d05dd66222f442862b508fc46c219a0 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 noarch bcbf0ae2b866bcc218f26ccb6fcabe5b22135e852edf0efdff16ba60ad092f1e 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 546c64c5909f4d404ca1ac0821ca2ff1f814789fdee971486f92e9e2e39920de 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 c5afd422ceba09f96d07e9fa28668f4e4e3b70c1342d7eb19a7e1f3d07f8d399 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 9d1ca080f5f91115bb40b9775ebb453248568aee6f186068ada90e54a62bdefd 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 c26de4b0febec0c2d092bb82e0746d88a75096eeb7a1cbf1a2594a6811126c8e 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 noarch 44895a3f775cbcd4c073e7b50cb4e68eac6cac8ffeb209fddae532be1836ddbb 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 52b3004f938a7706f130d9f780f9c204cd6e8a2b5b208cfc9ba2d974306788f9 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 319641f8f3c1bd295d6a09d61585a565940ddb43c52d17709138f898b1ac6982 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 c3f022b05b8c73c7eb8f8843516361da71483483d0243f8ad88f12bdcd0b6978 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-backend-doc noarch bb1e5b65ffe3f2874a7f138a7013603e00b7ca83e58095b0e1d0ff0c9a1d7bdd 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-backend-doc noarch c04b55722813ca36ae682c6cc3006e9d97b26f6608236681536d3bdfdb1f9a47 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-backend-doc noarch 1faa8d705b6a4404d1984aa7b1389557d973fa47b0be96e127796e93973a5dbb 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-backend-doc noarch 20e38fe0593e99da7ae5d9b8286d7a63078f1e92c73ee640a4d76d120ebb17c5 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-backend-doc noarch 616f8aaff7af0ecc640f84670d2f1f33ac06c20b34c0e0b913d310f670ce30c3 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-backend-doc noarch 0eb2b9f6d3cb0ac27f461886736d113bfff18702c788ad3a6f768e82b392568f 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 ecd6616e84af3209fbf4394b02db019fd003a9e611e8c2509b2811e85b4eaa33 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-builder aarch64 1874000ae1a8bfb3af8ee46275d38ac0f958245a8d1bd4a972ff97fd618e5a60 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-builder aarch64 2f9100fcf57404851a6387cf80d167e57988d977a50a89ed568530d57207d869 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-builder aarch64 a78cf61d8545331e3941f57826c2fd6614dea9c842495fe7a25b4650fbcbdef7 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-builder aarch64 74acc1fda1103efc46e847842db2473dcb8ab82814df3aaf37f5a62fe11f6032 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 src 5d9359ab019cb1c56c988d5e3215047097ec70ee3bb9d938c81f85ae26409f7d 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 noarch a9491c617f156955f5424fb0f880cd0a9ef21d728071c5363f81141c5c7b7c33 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 4d60311c7abfc9194e405747f5868b6362c30f858341884183220fd660258c27 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 566060c4c48b2de0106c5884246378fe2a0795db2bc393107ed2805dbcead994 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 dbd1a2acc89e04bf426cf8a8c12a462685a792ab4029015d5109b3265f603a1a 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 7438f273081f6f35b2d31045fa0ca1327e8d6e2d8619966179c38aefe7eaf97a 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 d9c2e76c8dbf12d5a98c73988df35463760f60eb63366b560f39b2680198c7c4 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 a284b1be6576c4a031bc1dee5bfd1b95d36d98b16b0f72e762789bdbfc4c34a3 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 fc6f80dbfa48c81e3789e37199e5c0affc727a0008cb42b6e0c2714427c7e910 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 06050ad9f4d148247591380b0ac6eed74a6b80b5667ae6dca8d125915acbed1b 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 79442d2b00919c0485127f95f5d73b736e723bf351a537f9115053f57e619e6e 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 8812b7134b9ddf6577f1f5e629aa51f15f9fb1bb9d96a84e7debb29364749190 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 aee563e912c942b613a135a484228578e5471d3c6ced170cc84bc8aa21c73e02 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 12544a24e50b4ef2cf23bf014fded176819d6e316ffe3308ade61e462cab08f3 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 283c9c36450b0f84d9cf18db2220fa60bbb2ba4d14d51e3a64049d96e21f1b6d 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 16217129c86357a86c635a98837173d658b584f033186d9706b47e7abce39f20 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 879380c4f7223aac9e1f15ed8a66f7b920c7ef010c231a6fa34e314883decc50 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 cef4d0720e2cce5865beadff652dd360ab9bacf498b8c661ace5a131e8bc59e4 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 a0049b00878f22fab3cab48fb5827bc720f642d1a9b871f3722997c7c14fab16 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 noarch 8cd8d925beab19b9df2d8b6305e0c67b84444f0133027a745afd0992b7b2d5c9 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 3160b07094c5a60377be488cf9396e534a6fb5073907e0ac5b639c9e4075d199 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 noarch 99457cbc7e1d8ff3071aeacbf3d9c13d86d4203658f3c989342223ca2cbc939a 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 noarch 7686469d3fc4635fbec833701a3c1619db0bd2e1d6f5245eb059eab2d7eaedf4 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 noarch 41477fa9e0974a71f696cf9c0e52994dc095c106445eb0e278d7eaf843810dbe 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 0eaccdd6be1740848589f31fd04f28d1afdfaa31f6ac2bd4b3f1dee1c92128f1 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 d7fc891a8339d5ed9fbe4d95b2e7a81bfdf468defa807c0e460494afaa1f454f 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 32035749f79ed200a8c05abc6087177deb919e8484a996b745c768460566fb8a 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 bdb9cd8d4f2eb2b913c6c3ae1dbc5653ff31e4f5deaf3e07e73dae1bceba0f93 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 faaa5b3757f0535b9e26ec9f82a686bf63f380fc94e191b5a4a2614c64b08ff7 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-distgit-client aarch64 c3b0a8f92874024e717611e62903175b18af91de6dd86bf914a9e9b3aa1458ef 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-distgit-client aarch64 ad6383d16ecf29860f5faa6bed10140dc9e740c7ee4eac057cd7dd5464de12d7 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-distgit-client aarch64 9168df984fce0a6988b6c3da7fa442b113d8d3d11c95331a071ae00b574b2315 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-distgit-client aarch64 9c9d6f8f7f38902b63fce8a9885652097d707cee799b8fda5311d0617841b9b5 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 b98cb0a97617c704f6c353201708df312f5f70f51f9d3ec67290b82d65ec24fb 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 dc4a88aab6dfcb006c86462e85d994f7674c8eec0cc7956e9e5434c041c965b2 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 f61e4a146ea5c5df729bf9f6c75f54c53a53064d5e227b4119e1cdfa6a1f60db 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 a62d2ccac7025a0e36a1b5d79c3c1ab3b2d6eee1c100969af24042096d99de49 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 noarch 54701b5acdd4014e8bfef96d00007b84c7d1495d2a7354f19a85b5062750d2b1 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 noarch 46376195156cbe1471a2a5bf270364c924bdfff04eee1bd808b0b3f4dc5b4711 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 b4aab96f929d0acbb15c7f65e98419ee3c3ce2192bacec6af3f74e3189590245 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 c0640df6b6b49cb0ae999313e441abce3cf4f0fb12f95283b2f035ee194c6240 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 09453fafe755b5db1c4ea885ac0e164fe6e41374b5f9e9d2c4aed8d34a532621 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 3833248d3acdd443acb13a0a3ad0e2bb250d8c98ee4c56122e2d73e3f31f1fcd 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 469abf15db9340663ffd04556b3b0863254d6a7433187cfe12bc4a8c055a6ed4 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 2f9b4691a02f17f6338d861ed53edfba4317e4e221248e95d4675d0af52ed8a7 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-devel noarch 79c4f3279277ea419b81f1972d505568c5ad974b065dd986f213c9d23828663b 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-devel noarch c77309377023fa1a647e4da90b2bea98d3d77dc4ecfbff4eb5b24e97e9001fdd 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 52afc4124ba12778b6271622ad53720ce54e4482d9b76be1df7705adee79eac4 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-frontend-fedora noarch 0d645d59ddbf3b1a440a7c73cb61718347acfbac3e86f4bfb0a8339e5daea0f6 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-frontend-fedora noarch 924241602240ce35546bbea99b925f40b503d6a26df4102eb8e3cea7e176e1c5 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 29a2905fe7b93d509ab97be1092b3e09c4333e4cf5555ea57053b816158e503b 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 3b238f4b7f7980c8dd01cfef2d06ac479158d2b40b73177afdfa0a96525188e9 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 ab350d1c886546371aac0630af6838805c0f86e3e9f1675b0b779c778aa4feb7 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 noarch 58e4fede1b2ff10262a34da67c8717854c4787b32d612667920a1fc1846e4542 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 ca070963676114393432e0354169e03f519f49a172713b5c57efeae92e894494 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 noarch c124c8162d8b50342e2378928a46d4091031654e96b40c99637ab334b20abb5c 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 8c89709c13c86d98bb2f9fffe1b4fc58e1c425a9ee92db66e2b464d9f4636702 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 noarch 6d5163e50d95472b6c2e6645e6a853990c1958efcfd23719f62f0dcbe8d7b078 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 noarch bc0c9c171ab730cf8e1d613663a8b9c91e1eba39c94b10cd07a28aad3e6627e3 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 noarch 2d85ae6dd5c9137c92ab26806d2e40c72c5db0664d609981152176cc202dd8e8 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 db7d7d3c51aca5ffb4e57344ddc3814396b9a1ea49574b9a5e2c47cf7d45b05c 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 18bd4864e0aec5ccbd764ee3b65228e9cc97b647fe06f516bd2520433c2ae023 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 e2b8647dbc5dcf98274776e66b6bfe0df0f957dbd524b96fe17286e21dda703a 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 2342e72265af43b539945d834c62c36b519884649a8370994e783c5676687cfb 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 e718df4199c8c7825d8702bcedb8fc218802c0301810f52b21f39a51ef8979a8 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 f5d7affc06d51c6941231ced850988e8ac0221755869375067ce413497a320e0 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 f4700e3a8b03c204bb2e5539e3aa1096e36b0e5b2f99637a01f4bd52e2009ef0 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 22f13ee4d08c3c3451759d94d5b1faa88495d10ce7aa5b5eb90f13bd9e25be28 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 0208871e4780c82f94f4c9c9b4170f9a09433993bc3810e30c27235f53dcefbe 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 6e872eb9434069681fb82c4309e24724110776d29f56317cb3d39d784d68a06f 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 aarch64 d4988a0cca2aa4f4dd16fd14d65193d11549ab8640a538c366fb4240f29bc006 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 faa8f28f63f4e8897042ca096b1af2bc1212869967612315fa4e8685cb73b0f5 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 aarch64 15fe0d94208116ea6297b2e60076457b8ef1326088a387894e6b010899c23bf7 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 aarch64 1c853014455860978235944d5cbacb1cae3b7f0b82ac055301ede8cd1295ff63 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 aarch64 b371d51add447cb162ec5f99f340a312c7e61fedea0a6480a58a44698159cc03 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 dfd9117fe9cb6c30a763db1d8744e3d78776acf6af510a965afef8b3edd99e5a 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 77a097ee9eb10c5e1d421c184ec98a69b35fb280716781b74d04cb50f75c4289 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 4d4c7b398b51ccaed279c20f99df02a6c3248aa467b8f992d264751e6317affc 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 1dd604f86ebf5137e7a83497e118e841b6d6fca8b7191a3ce178e41dfbc3d6e7 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 a63de6d1716cfbb752261cc18c68503eff96252138d73a9a81dc9d19fd60bffe 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 75cafb8a9729204d26943fb5288e0b328b36d655a72bb637345a698ea3792297 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 dbfc0f6367b2e4d2ebf4f02b3b3a9ef8dcb8d43cd7619680db1dbb83b9e9e4bc 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 32658666314effd98c9631f842bec01b9bd1154d124b44e0e1b0bb751d4ce5f3 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 6be05c40240b4775d26025f5f6603e9b14b2af77531a50da2bef9dc60f1d9ee1 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 a6475402344e35db45423b8da0a0d8fac9b6bbd2b414e13ad726b27c6bde7c50 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 bfe85a717c10a59edd4d3f54f04fbe2833db2b1d305c2fc8841bb6c4e2115d52 GPG keys for Copr projects GPG keys used by Copr projects. https://github.com/xsuchy/distribution-gpg-keys koji noarch 6483666d444cf866a6f8c3d1b7dd507ecb856125ba8f43e9003b9c800813b0dd 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 c449646916732fbdda190775ec7bf6f045b1cdb2c04e5280d2979e836be798c9 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 7cc5c0ae29ed5501dc72e8bbe010d2438886675622c1f5fe01d5dd93e882d6fb Koji plugin for generating RPM releases and changelogs A Koji plugin for generating RPM releases and changelogs. https://pagure.io/fedora-infra/rpmautospec koji-builder-plugin-rpmautospec noarch 0981d0f9ad7ab256882a6fcd1bd647b3dabc173f52bc4b564a43ec96be810cc8 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 db0a43d9487a222196c807471031daeaf334dad15c7a16c84ffde8be17113c3a Builds packages inside chroots Mock takes an SRPM and builds it in a chroot. https://github.com/rpm-software-management/mock/ mock src a3a48d333cc5f89342b034095584a8429be8ea00ece0eb386336d9c6c7c5c4f1 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 1fa79d1f3582004e8947dabb5bd7c69c94923078e0d3a28481cdd933a40418fc 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 6101cd4480f680611da4a625856beb954d88f5314811b75298a2997fc7b91659 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 noarch 850fc87633f9f1dd773b3d21b7d55824d36c1a373fac7026a7f7924b7ae33e99 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 148b927af207f490115417f8e490de82d679c3b807b3cb67a8fed84633b81882 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 283b9242e73e26cfca346c59eb02a31657de1f0f1d7c33a0062f6cb969edf578 Mock filesystem layout Filesystem layout and group for Mock. https://github.com/rpm-software-management/mock/ mock-lvm noarch 09dd3385257bfb2e7e46b88767e658aaf500063217dbfc781a9b28b2afc98452 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 502fb276a49bdcec6d123343e17e6ad416f3a9ba3a78a27c76393eb60b9aa887 Mock SCM integration module Mock SCM integration module. https://github.com/rpm-software-management/mock/ modulemd-tools noarch 540e0eda2e082a39e2a3564d8ccaac4993ae466970dfaf45e3e2918f03afc613 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 noarch c63b5b8fd6a38f77084bcff696b0cd6e963324f3bfbf54c26be143969f18617c 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 7cf7f88ab2fce57d4fc1236449b81f07503db1babc3edb30ed70b057f635a736 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 bd472d1f4666d2f01a185c88cef4b34b5d124ecba11ac8352326c4804f1241d6 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 fb3b39e5b4e95852c73bb6cd47940558e263dcd4e68c51422d197a7f20d856fb 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 27fa740565834e5e90b0f92ce140703c130225f002cb59184f2914d533ee1142 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 6c8aa9e0ba725b4d70d0e8877fcb0c6bf0b48cf9dbbb49be79f9a460eefcaf8d 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 720e9ef4ca5b6752b23ec14e476609df61a7faabb440b59956754f61ca272f96 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 0e15e60f804e846ba3a0dcf87be44d7374ef32b67942ac2d7feac0356bdcc93e 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 b5f323ed0fe4ef661453b57d9e02e5a7a0d5b3f24071bfb59a1f27ec0d48d1cd 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 2823db200a5a4628b4b89805fee0cacc914d514ed06b289a98ecf7f12ee4759d 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 a3703084db931c0b4c0e69607e562cb41a382be3293423c18d2fcf4417537d76 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 194b6b4d71aa6d4e22b9de52a5425c187dc4d9fce64f30e489c73e97d5540bf8 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 afb9871bc7c8db189e93fab878a60ec1840ce14e34a80855d17ac81c838769ea 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 src f36b3718587089c55fcf8d5339b5f48dc8c50a491b203436296b5f73300cc416 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 f186d04824deca7d5a07aeb0f80ad1835e1a36bd18657b1a81edb4b45b79657c 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-debuginfo aarch64 6ddbf9f61430ffa788a5381161718c63d05baa675d57340f1b3f915830cb8e1e 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 e3f1b7c0afa2cbc8bd42884f9d362ec6ec1a5aa38cc37d89ae28228fc687a26f 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-debugsource aarch64 9ad8a83e85b224249cbb6624b9ef16cbca64290a0966706bf9ef4e11cbfe60b5 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 a0fc3f5d6ad774f0330901f654f5e1c55d350f3f2f3734910c5f15b747fc1868 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-python-help aarch64 659bdab7d00008c718372dd303539c5ba06d9d628ab90bd77c1ca5eac18be89b 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 40afae2eb717c26ff7f294d4a62762deab8edc82b0e29ca656070f283cf37f9a 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-python3 aarch64 c4a6b44aca0441424e305b5d3278d1d2fc462e997b8029fd5d2d7001dc5e9445 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 df5ef314b6054a32b14058115feaa20991bc5b1caab1b5f6b852cf96b5f75044 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 aarch64 6e185cd36936e470a98b6bfcc7066a5bed64a1d86681054057dafa5ced37be73 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 aarch64 e08223940b7665989f7708865f02cd12afbfe90b56b43ce0cd0fc3ceaa02a65f 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 aarch64 effdd8231cd921b2e106d137158b77fe11691d32709f9885b53605b953adc779 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 aarch64 9f3935a0e8a818621ebb37a5494d4180a90551dd32659e76e4a2e9fcec6476b5 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 0285dda77adaec6851d10a273de45bd4a2d711b8460bb00a21fc176f4e75bbe9 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 97f191f3e2880f21acf807bbdb7cbfb947a90cf8e650b285ef6a457376a94721 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 305400b30b5c27d0fe29b2a3ecb132e65cddfa996d0e8288515f5af186522544 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 e14bf184651c72601f76cdcbbab095e39fb4b427b6fd4e30c72d0c78e13b9960 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 818708fd80ab17e8a8f7d18c7bf39779fe05e815edc72779ef52647bf798bd04 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 22574d06fb2e836f2295b6d828446123b48f001556404ea6f4381c79fc8c53b4 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-debuginfo aarch64 3611cc702bcbc2d26a009851194536028bd465eb3417826af919bc947e7e3ed7 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-debuginfo aarch64 837d1c148ba94248321b81c2dbdf16dcd316fc035a5e7605978e6c19ed3c7b74 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-debuginfo aarch64 f8cc1642ab003d7cd9bf58fd4a396c287018d7fb2c023580d2a5340b6b3e45c3 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-debuginfo aarch64 ad7259d7be5ab8b001493727c43eae7a9b9b45d3583669963fb88e12d54fa6ea 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 c8a73696a47a2a8f5c051171fc4e3a289352be7b12b9d893cbcb255a483efd20 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 nosync-debugsource aarch64 48ac08482f26939d0f131cbd494af87d1fee5b79ae481c36624d6833c18d7910 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 nosync-debugsource aarch64 6136e06d11b67f073a57ba9b640bd1b91573ba1a86b05ca83997ad5f1c9f572b 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 nosync-debugsource aarch64 a2acf0abcf582f28b02a56c1e2d6e00c9697c16d96051f0e5cae3bbd9d0b4a87 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 nosync-debugsource aarch64 75b06f787ab17c8b5b2091a3a981597096cdb0ff39e51ec36f2e1f461c1ad2a6 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 1ba4c5071be254ba94a00a563d0b8ec85b777b17da59bed937de328cdade97cf 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 aarch64 914194d69c18b98285bef9528202c3d16ad77412fd245ad827ab8abb9f13e55f 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 23805ae270f54b1ff538cb9e0d140d3950b3579b83c63fcdc0226020a7f9fdfb 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 33c4c89758a958dd480b22c0886a7711470a0840b075966da8adc17f7c6e9620 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 086c14666e8e8757e9be28ad07469c52415a855c11b4eb0d9fc4ce455828b742 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-debuginfo aarch64 cdf24a6f39edf6a309ae51e57c8f00eea0ebbc000f9eeadd26068f317fbb05c6 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 51122424599992a7563f7206b03781759fca8badbf7008a4b787d27692494447 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 obs-signd-debugsource aarch64 4d87d54b76580a060434f2222652548b062b67d959add9acdca89f9150c61664 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 preproc noarch c9280c44a9031d2e8e5c11b8d3ed952c5c45368683b1163b5541d7c6e856fff6 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 cac0e66c992a2bfc77aa5f77ebf9a14732e2c5b672769e078047511382398fd0 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 ab6dd45b4b64d0994750c1cff408daafd93033862531a88a956cd7e0d86c6b67 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 eb3113822de4d618a970a80fa2b2c9d898682b9a65398687aa1cbb67ebb32f17 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 67d55ce8948c5849361009fb37b2339e6892a94b98a40d43c72d58bf32599163 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 8563a6c7b038dac1e664aa49ec3dedc096ef60af6059b5bad7c0a6268e18c8ac 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 660f6e4e7449503d22194cafc0c6ad3ff5e53f2c9f5335e7bcb35acbecfb0adb 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 76328d316cd04d6135472a28766167778d4013a73ff3b231fb074ac0648dc989 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 53d198fa86aab29dc7184a15e7c946215838c4b4cb3fcfddd91f47a9f71e7f26 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 480cc07fac72752128c10cc0b1761bbd9a9cd68d7e29676b7591168c3c30b5d1 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 de2ee56446d25014e53d6393fb2910c4c17f64c10375f756cfb591ef3aa2b425 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 ecf0ad6bbb5e835ed27c30f741099a733d7b4c55cc9b5989421287c497b79b2a 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 0a91c4b0067ed4f3c38032458b71d2641ab7f169cd307dee398ed611431e84f4 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 184f59e7d00f5eb21aec8042a2cf8d349613e93fae8cb77c4b82ec06a75a3d37 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 1d7d16bcf72710582b6fb91f6592718a1dde554a4b698bfec4682685e43cebae 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 4f6a1f2c359320bce8896ca15127315627121f97bbc9f31533bfb83028134443 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 64dd7c1a8530ee3324b6243e2aed45f276ff1f2714e20676887d24365b316924 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 ad73845724689dd59ee5cf797681d939efb56456646b9796bad17ec411e0fe03 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 036d3316dc51102508a6a7e129cf316d1e5885183068b0e482458e6a95fe8826 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 a45c0823d59ba9344a7cffb192624cc582904b4b49348d949ad8a6c3d2df07aa 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 98c15d35341a2bdb3f498974583dc824e62ea479eda78725df835fe40048f8e0 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 798ca53d22d25cdba7401b713aae633563061cce2813c950c7f7ac3d02d5f869 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 744ccf37ea160399d71d8b4e47125ffc5440934ac9000dca72cfb6dc46332579 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 b7bf7fad300edbf5a49479e02cfc91c5d0163c8a0f76baece80f11a7392d1dad 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 95cf15eca8cd64a0eba8fa3b9da25f871feec60adcf2a0c3c0d3242a50ce0389 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 a5652275f8fd09b83f9026ce3e1d461fb0b0f456e53a5e38359d7ded9eb58482 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 99671e3321e63567a8d9e67abc6d8a110a8d8f4894d55e1aff6759489e79222c 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 4182468acd1fb88ea6edf05dc929d3617175122e48d092d00bc4a5767ee44f38 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 172369070a06e1c96cd7bda1fb2a882db1de169b91ff5ced0c0dc6242a17c8fb 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 720665ebeaad444820d0c59df1554f6d23a9243a9e7a10e9608a4e2f18fa74ae 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 c1476d833d937ee86b72e0bcd9a5ab4d1e16eff5752eba799471cce0b860c132 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 2c2a8ef4f84974dd909ed22b147f187f4cdbc3213ed9f7268378dea3bb8afa8d 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 3db1b783f82b673ed92170d8607c0b0203f14259404f6ed746afd157bc1abdef 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 5b0ea4ab923eb60517a372d1218c61678ecc81a0717f23ba4bee5a783121fcb0 Kerberos5 Credential Cache Collection Utilities Kerberos5 Credential Cache Collection Utilities. https://pagure.io/cccolutils python-CCColUtils-debuginfo aarch64 1ec0b8527da950144863ffc9bf83f932f4a108b4389fc21222b54eb95ee040df 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 1b7e868773fe6341c1798885e2d24e54f1e6ee6c7a583c341d10320b5c84bfec 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 7e3a103e2a4510e3e896943097a8344ba4fa3ba8f5e4abd340ec907eaab8a5e3 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 09e601831a792002e8e9f96bbf91340efd3efb33c48f885badf54ef0d52db0d4 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 762f9473eeeda05618579ff0100a4362a3ff695707ec4800eec105531ca4a5c5 OpenID support for Flask Flask-OpenID adds openid support to flask applications http://github.com/mitsuhiko/flask-openid/ python-Flask-OpenID-help noarch 0bd95859ea1dbb76654eb803a66036f57b020f947cb70498b670dcffe4bff655 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 9cac13498ae60fa15f26172c4bb5c35bfc4d2b42bc7e98eb70fb129d5db42e71 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 e91ba536fe585d770c3ace478b839524f49ead20425805de331c4bad15d0c6f5 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 9e7362762c6c78c29cacdcea99de8bbd11a1ac57fc7a87f75159774c924a2074 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 src 85654473c41936b84b39eb2c2a2f7496757af9293f6c83ad35e55462d656f066 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 src 07f80756711f8e09cbfa2089617ecc2f09c268e724d9cda782a20a674cf7ba7e 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 de7567766270febdea262c2ab5053dc168c2fc7dfca15439d3a9d55f8eb6da4a 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 97b31712bb4a8b152bad50f86e4a9b8567cb09b0664a727374e05bc3efbaca5c 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 src aa15f686577d275423e44c654e858e16e860f104c251ee468bacf25b9eb64d55 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 8f09f1ea6223c69e370905ffb0de1b82ebb8a5bbbf53f211a68850be47d6d6dc 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 60cdffcf44a0c34875b71c770b95619aae579475073b99868d7836095538612e 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 src 92dcacd138d1ee08982f0251289df8c01138fe6e726f29de78b6be538e59f3ce 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 918c86e21c539776cdda6d0a807ad45284eae067ac7ca2d9aca4c6085bc8702d 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 74f0272f9e436e1a851881685e09030641f705682a6a7fb1e89560310d1058be 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 src e83526bcf05b8e9264883280a02ec888acb78a4f88a32eef805106077425f3c0 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 d77825fffdec11b50503fd896ff53d9cabbf971ee584349a49da7b437bbd9903 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 b20b980e60f9086ddbcf14b94d2f74ec0847f57a408724bf8f2dea7b4a56221c Build manual page from python's ArgumentParser object. Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python-argparse-manpage-help noarch a2bb93a1f26909f8b7499e3be1b4b907baf268f7b91ff711018042035db77950 Development documents and examples for argparse-manpage Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python-asttokens src 0f13494952cd807250208f73ab525d36d9f4497138dca5bd11ce47d9eabe691c Annotate AST 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. It 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-asttokens src 5b3b5238060630ff4f1afe96b276962bf48ae92979cea95eed364eb75d594e24 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 91c1301536e7d7478b07e9b42f7268723823db31ba86b1ad68ffa6fd3c1584bd 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 b5fea7e2e541e44e726ac4b151d5e45ccdfac60d118e54d52ebb1e93bdd36b0d 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 24cfeb5d252e9622a4818bd3d806b954585dfd87b61bef05a199a856d64d7edd A thin, practical wrapper around terminal capabilities in Python Blessed is a thin, practical wrapper around terminal styling, screen positioning, and keyboard input. It provides: - Styles, color, and maybe a little positioning without necessarily clearing the whole screen first. - Works great with standard Python string formatting. - Provides up-to-the-moment terminal height and width, so you can respond to terminal size changes. - Avoids making a mess if the output gets piped to a non-terminal: outputs to any file-like object such as StringIO, files, or pipes. - Uses the terminfo(5) database so it works with any terminal type and supports any terminal capability: No more C-like calls to tigetstr and tparm. - Keeps a minimum of internal state, so you can feel free to mix and match with calls to curses or whatever other terminal libraries you like. - Provides plenty of context managers to safely express terminal modes, automatically restoring the terminal to a safe state on exit. - Act intelligently when somebody redirects your output to a file, omitting all of the terminal sequences such as styling, colors, or positioning. - Dead-simple keyboard handling: safely decoding unicode input in your system’s preferred locale and supports application/arrow keys. - Allows the printable length of strings containing sequences to be determined. https://github.com/jquast/blessed python-blessed src d71d6794e4995cb1a5e6a25860c24cd2f06d2390384fbf4ee4345d0432dad0f1 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 bca634c4b2c3382a81fc2a00afbc201823ead81c8e3da06d3f29d5d0b9442166 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 4197aeffa86522b9334be34037826dea12c6b8c7aae459b4bab24af7a112a678 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 d78238d3853382b931f3a932cafbc89d5188885dc4bf821d488adc039dabcf14 Development documents and examples for cachelib Development documents and examples for cachelib https://github.com/pallets-eco/cachelib python-copr src e43c20b52747944d63213a0b89ffbd9f5caa3f86e29b09468764274ddf89d0de 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 src 4d4ad050c1c622ff4361edcac9b01c7901d78b85dc8bde85032891a677c1d3c4 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 src 50309d5568b67ebd43d67c0cf4a487221b6547c70655b6d040935fa6dfa1ae1a 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 src a5e45cfb1dd1c3f29e050182d5e538c3db2e7eeb1a2c7620c7e23e3da4a2958c 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 src 4eac23fd7782461cbd5112321beeb1d56af9e25c74893999cdb7fe044084cc58 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 src c75c74d39fa8a44b72237661cfcb29715ee01773377a7667cc2f8dd0094fec4a 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 ed8c37c35da69f1b618a63d8c83a884c4ba547cf7cc983ad8878ccc18b6b8062 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-common src 1d568174ebda7fefad15b05a3a45e5d5ad208de22ad6eaa07409360a85f8c377 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-common src d36c0cb25d0d3cb0fd051df479dfe5c76dd77a3ab9348e4f0a7dbca44b28174c 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 c95f8e63bdc853e8b3b30929474737ee8eff890f4ecd29b568b2a2da0102977f 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-copr-doc noarch ed55f03d7f4f649f197ab5e8afa4dbc8791737b0a5593d3507668e42215c0c4b 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-copr-doc noarch da7c5841bd1d0f7b5ff70796efb2052697e2900164124ad452e02d743599916a 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 db356479959a805d9141d388f4d704d1ea21590a3d0b29b1dce40f719617a3a6 A utility for manipulating ini files crudini A utility for manipulating ini files http://github.com/pixelb/crudini python-crudini-help noarch 6f9ca7083e82daba8657c0544d7e28146892ce3c42ba95f53b4d0a13a6086b2f 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 4374e601ad21adebf182d1f43c5e4f35935f1e1ea726d5461ec28e7cf07fc6fc 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 64c91ce759ba4474c6c7a9545e672245e1d0b21c7071b9dfcced2ac1123338fd 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 176e3995c959d485dc2dd667f5f19d3e054c1de0dfc2f6e92bb8e1430fbfee4f 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 src ebaeed51f33d066ae06aefb473d75b5f53f6c6ed70536650b79b4186190ae1b0 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 294b6463051fcd0e16f09a9e695d550cb2945a54405a08820a87523574921d3d 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-email-validator-help noarch 993641422410af61dcf2d60576cd2418cbb48256592eacc8245197229f7e2029 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 a564f40f122d11504456a06d673bb6e04a4b502e9a7384930cea855b8510b647 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 src 7a62e1143cc7d13199005d15d2d352a9c2894503b3b9b6039bcd97e498d4de4e 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 src 8581178795cbfe67532f8d0f897517b92e2831b24685cff82a3d9a70956c9031 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 d662302b62d436a597b83ab6b22da3c7ae2c7264d9d890850572b4b7ddee1724 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-executing-help noarch 5178fbf10ab528f00b69cefea2482def93988d90b2373bedee3a00e66991a8aa 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 8b4eea15576e05550f6423ff8fbfae7d211746e97763096561afee6520d4f9fc Flask-SQLAlchemy - Whoosh Integration Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python-flask-whooshee-help noarch 60c0c7cc9173e42afcbd3de80d736cccf917c1b19c9196d46b0ecafc6f91ffc9 Development documents and examples for flask-whooshee Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python-html2text src 99edea62eb76ec74527077aee38feb763df077cd915c44e0ea4b8cf92ccced26 Turn HTML into equivalent Markdown-structured text. Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python-html2text-help noarch 423fbb2607334722d5c17892705f2a93ce5895d0564a114e92d1843386e63ec2 Development documents and examples for html2text Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python-html5-parser src c85a9649e8bcbf0763bf7098e4e6a3f95dfc6d17d8e7ffac955c8174eba2a8f7 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 03aa3da90ae72f32e55c6490e0ef7f8fda80d420d027b933e69c28d19531f93e 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 ccd9a5a7f31f8c52e5171f964bd9348b6f781dc443f20e98fcfc218cf2b2eaa9 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 7ad5c11d081a3a4d573def5ed0a4bee9632366dfc08932385faa4dafa2a53a5e IPython-enabled pdb https://github.com/gotcha/ipdb python-ipdb-help noarch 9a53f6e1337aea31eb75dfe427467cf9960671cd64c1f5dd4deaab8ff436fd2f Development documents and examples for ipdb https://github.com/gotcha/ipdb python-ipython src 6093349353fcdb482c97e3db709d5baeb42ac54f60038b766a3169ed18e3a27b 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 src 9e951de2d4c37321e3c2559b79ab9344064927d5e804d5b1f970c1be443cc4e4 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 148c254771c68d997d57b814a37c1a7cd6f4aabddd193aa7f120da57a10e5b66 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-ipython-help noarch 6020b3b8f33fa4d22fae9d5430efcc639e77176ea89623b4439f0ed099e7df56 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 aa48bf3b6ee8b42f22cba52707bb33b405e12ab9ca01a870d2971b8b25f04f49 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 46b64dab58a5550a739cd97c61cb0a22bc2fcd54f1126c3cc71ab4fa10d81b4c 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 6430441049477b0c90720453266c185701f6cf5cc9906cdb9f522a612d12257f 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 src c27beb6c27af74972cf2eb10f2b4be51eeb8ae4370da53b32243d7b0a39a5459 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 c1a975b72cd61cb4d97521904bb3fef4f35147dfa20b0e27142c78b1097f8975 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 592da44c0bff11e709c1c1b9118ddea9129f2551811b871d3a284140e71e6d1e Inline Matplotlib backend for Jupyter This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python-matplotlib-inline src e7050473b303b6894e489939481f1ec7150ef6bc52fedbd35e9b06b2787f1ebe Inline Matplotlib backend for Jupyter This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python-matplotlib-inline-help noarch 796a22e6000b9815b3e5bc092a53f98627da3a7848f8918da8e441d81b3cdb23 Development documents and examples for matplotlib-inline This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python-matplotlib-inline-help noarch 4e87dc34891063184b71da57bc38e2fc7e678de684808c123419f450bd7794fc Development documents and examples for matplotlib-inline This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python-novaclient src 40df47ade2e01f148dbd0866f48f3827dbf36a749deba92be143c4b8fb4698ac 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 src c8a9968cf2923c0a4b9a0d6bd8b59ff7b41e6abe792b747364d88159a233f9f5 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 d70e59f0b11f420575adad50a2b30e65a663a1eb883e7f9b0adb177771497c27 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 a7171972da70841a27eeae8573076708435d7a1df029ae1828b0c2329672473a This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams src 5ef4d8ae03ba122c8904631bdd50fc968cc3c9cb01989e78320cbf9ad3f40be4 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams src 10e40052d2b021e7355d275f3320d9337ff9920a09745fe47908db559b621ab3 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams src 06a4ead5b36eba2228ea86672117375dc583691a1951e0ae6ab20a32899c0662 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams src cb3b6ef2e8f95cd03a281416a00ce30dbd294d3ba0c50671245b36f6cbf3a8ff 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 3b63ad3803a7e6f64da2c64167cbc3829f6902285d8a897e528714a610ccd69e Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams-help noarch 46a9a4b47d15f2516f59cea71d394304cc3c20f9825d7688264b153ff2443b3c Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams-help noarch 0d9ad238812ebfa28148028c52f895dcf38099aea4a06c62ced9d5851fd06a48 Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams-help noarch 1d80cdbe4372421c1a4b8aa0e91b603bd48c604b1b5b9e6e6f1ae64e0456ff62 Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openid-teams-help noarch 2df4fdc8c83bc5bf45511f1dbef0fe8a1797cc1eb78f43f421118e0ffcef83d5 Development documents and examples for python-openid-teams UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python-openidc-client src 35689e2a000417d9b3182af57c753acbe84326216acc9eda64b4519d52ffe3d7 Python OpenID Connect client with token caching and management Python OpenID Connect client with token caching and management. python-os-service-types src e6deb9954aaa9a270a048ae0ff2b5c95bb622aa6ed0acf36ef6f542420546d7d 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 211822051dbe8e72a75bf79c3248001ebcf5ca60c36a99f5270825b73ddc40bd Development documents and examples for os-service-types https://pypi.org/project/os-service-types/ python-oslo-concurrency src cdc4c1775ac030e2304851ad060247e10ff75983152c0f2861d91e0467838c5f Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-concurrency src dd2ccfad3498f3bf19dcd1780bb29d13fb2e3593e217223f644f3af48c58eb2b Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-concurrency src 97cdb5c8975fb62088fc653fec2883f21fc4bf5abaf0c86eaef06699df6de68e Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-concurrency-help noarch 1ad725cc4ecc2e872566b190c0d38355126b4db8bd2939abeba40b09ff4657d2 Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-concurrency-help noarch 46a4fcd12279dd5490a0ddd549048ad27effd09d64c51f1e19efd1e21360278f Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python-oslo-config src 95ce855dcd9c0a8018f08a59be0c9e4c58e1914f205e8f96e7a165e501af4894 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 src 4deea802e86f8155e027dadb15729114a2c4b9078b5bb1093edab8eec01190f0 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 src e347a853c2568396ce5918bec9805ce83d8a210fe1a7580c613338808dcb0759 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 src 02aa82fa7ce90a45830fc444224f17365aeab1756a8d5c2afa28459e7cf2391d 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 cbc3398bb7d8041a2de4be1f9e18acfccdedda388d4ffa01cfd45918e343bcdb 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 9a028a3729706d8e3953b49316cc55e9349d8925a56e1157c5e9749f54dda73a 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 e29304b47855a5421c333b9ba12e4c2697975ac2c957c3f650d1196177db7f7c 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 2286f683f5993c7e3ab630572054e97b819f8c85cf955e58f428d88e7bf51e22 Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-i18n src d6814fbcc0c2f9a0bf3fee6d90b653ee6342c940a4a25b3df3dc9f54f31c72be Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-i18n-help noarch deeca21e76b082e5b4371ec33439e188b808ec10a18b137fae15f08c2c17948a Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-i18n-help noarch a0988eaf12a8da2486773f16a1d838e164919e332835292e1aa1bfb6a763f97b Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python-oslo-serialization src 24294aa1045cba697f68b9205226b02da4788595900a1885ee2376ce400611ee 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 src 068c56a7d798b6edef90744c26e726874b0e16d87ffef711150e8c79966cc436 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 ac2b43a720ea4ce8ce86d33dcf5120936ad26115c64b17696b012f95e5e591c9 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 0dfd369aa0b0362373c9d1e9e9d57da1d8e39e48ae5a8e7c29d490537944d98b 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 7918060742935f5d9802fd752565bc533d65232f99e10bbdc6cc3543823559de 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 src 0af1758bd842bdfb27f2d3e6a5013af1d52aa97dada12d447164d660574a0e94 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 src f239db36a06ca139b1ece9328174478d64cf0497f1178fee3bddf0814a135b85 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 b4de79562a1049d85a8756a3a683b63be9dfe8e860130456fdcc5acc540d7d8e 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 24948a8731d5025f97c2daa56a22acdd1addb16b24b6858aef5584136e36f764 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 55f00b0bf6662585ef7eaf296405524849838bee3dccee6273bdcde75cf05f04 A Python Parser - `Testing <https://parso.readthedocs.io/en/latest/docs/development.html#testing>`_ - `PyPI <https://pypi.python.org/pypi/parso>`_ - `Docs <https://parso.readthedocs.org/en/latest/>`_ - Uses `semantic versioning <https://semver.org/>`_ https://github.com/davidhalter/parso python-parso src f72220395b3017a6bfe923ce5b87ed33709734269719e5f8ee555fa01d043824 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 cf9659e9a7f3b465a8c7765ba3386a8f0a3a6d4c9a41c2d204a7a86658586847 Development documents and examples for parso - `Testing <https://parso.readthedocs.io/en/latest/docs/development.html#testing>`_ - `PyPI <https://pypi.python.org/pypi/parso>`_ - `Docs <https://parso.readthedocs.org/en/latest/>`_ - Uses `semantic versioning <https://semver.org/>`_ https://github.com/davidhalter/parso python-parso-help noarch 5839c704e8ba7fb0599c7dcca5fedb2e8fd2e0a40d657d9302f1a698b655b7ae 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 1eb837de79beb276d0c6d58f0736213a0e9d147788c663a17a0b5e806c0f4c75 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 0d6c99af386c7e7623b5c31bece548ad185b18a77b133b8445fb7e1e7451a8d3 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 03c7ae470709e87649c851a6afb5b7aea071fa8a1103c5ccd1714ac1e55a7868 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 ea84a3e08e81ff61dee15ab23cd5fafb982f36d4838c55cd80a5ad6d4619b8e9 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 98964cf22ad93b6fdec5138f4190d448181e1a5b55f7b5f8eeaf15250a6b0c0d 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 src d46616eb5753580a7f138dd7a8793d508aa979801851c9b6d0485772cbcfe35e 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 src d675022ef8bc0a935222db01ffa41020cb90bda750a2d541fa48093faafa654c 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 src 33150a8107d2d8f6a82129bb53160b2a527f8a438d53cbfc5e96e10c00a2baab 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 acd94e93ae8cb43f0ab99970b424673d37ad5dab197268272e3645ae83748964 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-pure-eval-help noarch 83e9dfd09abc1d41fa4ce4c8b13ab992134ad3101d73da88990b870c6838e95e 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 45815f1657d427696f4669cf4c72de467eaef5f7df82de4997052e0c4972a3f0 Python 3 DNS library Python 3 DNS library: https://launchpad.net/py3dns python-py3dns-help noarch 8df89ce8d0b38abb9730b7f6de086e7b67e102a7c05d208c919a5eb96a6fb3e2 Development documents and examples for py3dns Python 3 DNS library: https://launchpad.net/py3dns python-pyLibravatar src 8f2b2aaeb4641fdd90e2a28f7f8ac33b5764087b9ad892ce8778461c57b6cb3f 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-pyLibravatar src d9ea612b3f2d47836f2f33187f66b93e8f84989cc9c9c48aed0824ba69bedaf4 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 ebf54b49f1dd1205a462dc8ba3e3785a51d6ca57354edfd7c4fd3ea9cca4020e A Python svg graph plotting library A Python svg graph plotting library. https://www.pygal.org/ python-pygal-help noarch 49e4bb345da889a0fe608a2e5792543b7ca56ba7a337eb70bffdd278f46596b2 Development documents and examples for pygal https://www.pygal.org/ python-pygit2 src e14ae9845fb403a257628de868141627b4298d153b10cfa7bf4141adea929add 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 src c791a02719286c5926341788c210046055f121aecc6e075b6680d88b2e5316dc 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 src a7eb31e1abfb164a77e51d2a792cf21c7f9f45a41d9a54bd123f1d981ab686e8 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 dec252ff909b9e1c4a1df26cc52e4a01335a57890ec395b5546d7ef51a3376c1 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-debuginfo aarch64 3c6f3e024b7844bc5e9a2701dd3e80bcf1467a645f5f50601854585453e966fa 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 8c8664ef72572c38ad16c343fad83f6ffb15c7f4d5c74202f62d2078c649474f 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-debugsource aarch64 e9ad5fc7883df7ae38370ec7fe963da5835e42c9100c5d8b009716ff1419b41a 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 072cf9fb549a5e756b9a5e6e88c106dd77e2cde04334bf3630d587b356512e7a 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-pygit2-help aarch64 fd38c9d0bbc58cd57b2999bfadb04452cd9d074a371a331b171b23cbd032d4b3 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 ebdf2b75bef00b575bfb8197e2b0b5ce67fc4d3654cd7435de6c5bbb66abc931 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 6e40503a0a935adac05e0e6f521a8d8f792f864e2f870251294525701a9653e1 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 7bff11e8cad6838fd65480c56c4c1aa7265fccfd38e3bae9a84a18b77292243e 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 c4635249b5b09553e2bdcdc03d82d682bd3c76c6379cbd72632ffafef4e02dae 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 fd79ec48050e3df65554ebe4c0bba300d624825c1bbf2d4fcae459f587588124 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-retask src d636ee90b90a01683c7566ae159cc856f4484cc8bda1c5f2123252125d662745 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-retask src 108d6f45fe53fd02c984603514f9ae15207ba2956a931164a76d91652f972922 Task Queue implementation in python using redis. retask is a python module to create distributed task queues using Redis. You can read the latest documentation `here <http://retask.readthedocs.org/>`_. Release build is done via [asaman](https://pypi.org/project/asaman/) from the tarball. https://pypi.org/project/retask/ python-rpmautospec src 7c18e8319366947f24ea123c8c562fe0c52a13877573de4e7bdf02bff5264c39 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-rpmautospec src cf9c41c41a769fe88de8ff1f3117fa01286a2ab845683753c751de0f634d4caf 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-rpmautospec src eb52777dfd95eb2894b203225a20004704eea61d630a308d94110a87382f327f 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-rpmautospec src 79789cb3733c297f2972fbb9f1a00383bcb55f3df6af702313f872d1feda0a46 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 0e66a9cd4e1553198161a26421a94b5aa0685c264c36042bd162c79b118a0522 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 src e2d85b5f75c5552d3ae11206bc2ca6b9bc9b29c146562ebe82500a153a9450cd 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 src eb081563c93b63644097c9910eaabc477eb336111fca10527b6b23cfe7bc0117 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 src f4900f5f705ac43fa96449387dec2d4064a5ae8605ed83b645f4d016ddbf9aab 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 75e1dee15d981cce124ff36d88b1987e37e3518a9c1fb35c42334b48531f65c9 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-stack-data-help noarch 67cb1c65ca89611710693dcdadfc95d6368de2653c277358ee74aa6fd5f498fe 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 ff02459c5b1eceb899671d5c2fbe5f9038f79fd0dc43cac4d48988ff50794f9b Dictionary with Jinja2 expansion Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary python-templated-dictionary-help noarch c90fd9b08916980dce1fe79265fe83dd382f3f7c4c627eb2d24057beac62e5fd Development documents and examples for templated-dictionary Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary python3-Authlib noarch 458495dfc7c5bf043312a031c6fcaec13d784b37efc8eb5e9d506e6827aa2433 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 7766b12a070e1d7db70461b2c26b0ca98bdaa6428fb8bb2cfa10164f522dd6e2 Kerberos5 Credential Cache Collection Utilities Kerberos5 Credential Cache Collection Utilities. https://pagure.io/cccolutils python3-Flask-Caching noarch 1857df39d40a0ef067ffa437ff3cfa49801d554ebb04eb4f71c98a0cba370de6 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 7ce91a9f6db0e2d1dff978286c607af4d71d9d914c87b646eef76d74dee20b14 OpenID support for Flask Flask-OpenID adds openid support to flask applications http://github.com/mitsuhiko/flask-openid/ python3-Flask-WTF noarch c5f0258c8736438a284d73558f4964a9591099b91b382759e5037a026fca4bbb 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 15a13e573c24bfcd93dd987f5ec5cde53b774f9b06131afc1f745aa2568c1194 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 7fdc0a8e434f03bbd64509e5afa1955c34e5580f5a3b1045c28fadbc38b67d5d 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 68a3beb1b2b2529129792d642f0e960dda9e7e91b6677e93fcc163884f43e7f5 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 f729946e266d14c7c43d4f2ae749ac6c19daba468d881f259d841d37aaf0ca06 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 366c84a0f0110b7bd57f6d4ab0bc965a3df9befebb911dc2f80cd435e8e448e2 Build manual page from python's ArgumentParser object. Automatically build manpage from argparse https://github.com/praiskup/argparse-manpage python3-asttokens noarch 2b7cc8e2f5087e5f8e44875c1b08925b77e5309ce79c35f223594b820c5232f1 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 5ceac88b3bf3b21f170059aae14be1b495316d8713fa97b304f294f06dd2c906 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 cf6e836a70142fd014c216ff6d978eb5dd0738644f04cd813710e2bee1e80615 A thin, practical wrapper around terminal capabilities in Python Blessed is a thin, practical wrapper around terminal styling, screen positioning, and keyboard input. It provides: - Styles, color, and maybe a little positioning without necessarily clearing the whole screen first. - Works great with standard Python string formatting. - Provides up-to-the-moment terminal height and width, so you can respond to terminal size changes. - Avoids making a mess if the output gets piped to a non-terminal: outputs to any file-like object such as StringIO, files, or pipes. - Uses the terminfo(5) database so it works with any terminal type and supports any terminal capability: No more C-like calls to tigetstr and tparm. - Keeps a minimum of internal state, so you can feel free to mix and match with calls to curses or whatever other terminal libraries you like. - Provides plenty of context managers to safely express terminal modes, automatically restoring the terminal to a safe state on exit. - Act intelligently when somebody redirects your output to a file, omitting all of the terminal sequences such as styling, colors, or positioning. - Dead-simple keyboard handling: safely decoding unicode input in your system’s preferred locale and supports application/arrow keys. - Allows the printable length of strings containing sequences to be determined. https://github.com/jquast/blessed python3-blessed noarch 07e0ceb5f06e632edc899bc60e69788dd6862f065bd9140d620ef391801884ff 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 6534af091cc217b8d85aeaceee48eea6603603cd6c97dfad8ae4deebc91598cf 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 8fe5c6a71689040170edeefd468aeb7dc494d0053d181f4f27fec8a8f4bbf95a 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 noarch 828af79041c3d52cd607ce7a239eb5f4be0cb774521878a05bff7e2c9715b720 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 noarch 67c6a20bc6557f0d620b6255dec93a5750666a8857c8f9ad554dce0b12b88e7a 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 26cb83062785afbab19d873ff3db56f720f0733b79dbd13212c81dc14d4b592b 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-copr-common noarch 7ceb8cfaad4c4f09ffd9c5cb4f2ea246de33f6b51daf4271f22a951baa3b1c3c 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-copr-common noarch f72816d6eb0e267281637282a5aa9d3156bd9cd2e9630d5eb1f930f7ecd1ba59 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 8fd44fff3c90b07b590ae46870ce05d5ee7c9e3fa74ffea23c8a594cf202e7f3 A utility for manipulating ini files crudini A utility for manipulating ini files http://github.com/pixelb/crudini python3-debtcollector noarch 9641208242f17daf0b6f157e632a00b06bf2c0d60be15226c34272d506058958 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 2d6d8852c901959013fd4265b9daa872b2fea4a38f0ebf0fbe1738b91efafede 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-email-validator noarch 6757808aa33c8777b15c3a0dd242257b5d919adef8a866ded1451173e2e79ff9 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 1552548c2b6d35ff06cfd744c19ade390f8c712c269f97cc6ed85ba0312b8a53 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-executing noarch 5c37fe6f4267e0c633fbd37900aae6a1fa3de51334751ee1e62db45aec7466ab 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 496205e8f30143e387b7ac39bc9487113cbcb6bb5faa5fb89d02d5f8c4748a43 Flask-SQLAlchemy - Whoosh Integration Customizable Flask - SQLAlchemy - Whoosh integration https://github.com/bkabrda/flask-whooshee python3-html2text noarch 607fca623de5091e51595de301ab9c63b85c6e38946661ca30ab9da4c0d7c84a Turn HTML into equivalent Markdown-structured text. Convert HTML to Markdown-formatted text. https://github.com/Alir3z4/html2text/ python3-html5-parser aarch64 518de71f2364dadd34f72ed5b4207c67fc8b0b4ebdc6d85e65054c128dbd37c9 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 7a2761c48fc6afe155416cce507bcc5859efe457816f30d2642fd742332337ad IPython-enabled pdb https://github.com/gotcha/ipdb python3-ipython noarch 95b006763fcc67b01d5ad8163646f78f5f9b739d748bd6c55961ed7f08598d66 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-ipython noarch 10421a7dc2538fbe80a103cda3b56babf72443ac2a8da097f7457c0bbaa5a8c3 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 3eabb74e42dec358a920f297ed8d704763c0563678a0e35610288c002d433f6d 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 09e18d65a698baa78d7956b25d54904b42a86828afcb84e257f2ba3a007cae15 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 8132514f6d8b2c8671b7171759c09da958d89b54e92b5036ee8c047c820762a8 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 9cecc4fcf58aecd1b2f9199fd786f0bf47a752820596e413869d181b04612a7f Inline Matplotlib backend for Jupyter This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python3-matplotlib-inline noarch e8bf74ed927ccc7954892af88cfdcac52e4640ac3df0d6e5e97df37100a0b896 Inline Matplotlib backend for Jupyter This package provides support for matplotlib to display figures directly inline in the Jupyter notebook and related clients, as shown below. With conda: ```bash conda install -c conda-forge matplotlib-inline ``` With pip: ```bash pip install matplotlib-inline ``` Note that in current versions of JupyterLab and Jupyter Notebook, the explicit use of the `%matplotlib inline` directive is not needed anymore, though other third-party clients may still require it. This will produce a figure immediately below: ```python %matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp'); ``` Licensed under the terms of the BSD 3-Clause License, by the IPython Development Team (see `LICENSE` file). BSD 3-Clause License Copyright (c) 2019-2022, IPython Development Team. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. https://github.com/ipython/matplotlib-inline python3-novaclient noarch d717fa3cef693bde11cbce52c13bd0f8da0ddcf89532d74e72da1d103564f1d0 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 d1118d923c560d346168bd8c998b5cba07ff0873070e5e2da6cba965c05905a9 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 49e3964ca622c6388c79cc64dc285d50c9906d9d3f4e9c544997c089079bdcab 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 3b02bd5efbb0a03fd3cca9eb731abddc3017770dee0a458c4f99b05131a8c83d 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 a361032815ee979208fe750769550505b8f9c6af72c8c3b62084d23990a93f8a This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python3-openid-teams noarch d47c4bc0a00d6ec86e872d55401d5eb759b090c70b57d948965239b308cb8ba3 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python3-openid-teams noarch 75cda510c1dda540f2dabe5923c781d3d1d30af39b95f16a0c6ef9686d1ce54e This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python3-openid-teams noarch 8f0f86aacf0e02abedeb4f466df9ed4fd37b9e91a362b0b20ceb9aaaa5c8fb28 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 98297151886ffc5d3e09e5afe9a8294ec8e1c0602ea79b8e5d94bc4a89496291 Python OpenID Connect client with token caching and management Python OpenID Connect client with token caching and management. python3-os-service-types noarch 179ceaceca1f6568d6f9be241783e5864d66884c6f98309b60f90010d4f49a9d Python library for consuming OpenStack sevice-types-authority data https://pypi.org/project/os-service-types/ python3-oslo-concurrency noarch 19904da346f4d555e737ed2babc4365885a82dba3fdd150d16474dc6a8dfb634 Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python3-oslo-concurrency noarch ed52fafd9d8aa337e443aeb931e5f566dd331c8d4af6d955215c25fc203fe74e Oslo Concurrency library OpenStack library for all concurrency-related code https://docs.openstack.org/oslo.concurrency/latest/ python3-oslo-config noarch b690a50aef5f411057c593c736f263cbfcb84ac1aebe26af3a2de57c70ed30b4 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-config noarch 790b5ce5d1425a226af7b2741c609b353b7fee0a489614684ac12925a447b6f2 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-config noarch 470a2add4b03e0222a29e622f1e3b0b7b9470a0f14e58205476f9b39fb4975ee 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 fb3a7eb59791c8d4caae47bd87f8d34c11b88c2aeed10062f6a3248d4d90a22a Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python3-oslo-i18n noarch c235de1fc8ed7d77bd1636b1e5bee7c304d808199b99f1b301a418374785df91 Oslo i18n library Internationalization and translation library https://docs.openstack.org/oslo.i18n/latest python3-oslo-serialization noarch 1452b492a97c8a1eb0ca6cc3f92c5639e30ae21a45c8957f73ff7092d941aa78 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-serialization noarch 1d8c248cbf0e80d5ea2499ac49935cca3bedc45f8e1a4eeb7eb6c08ded49755f 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 c6c53dd351d373623cc445926dfb2b9cfaed0bd43c441a87de6f03b0b3dd6a53 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-oslo-utils noarch 43b5ba15a258a291c09bbae306a995e66525057ee542b3167c3f2bfeb6478db3 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 2d7495cd20b64470408ac94bd169b31db8d03e3ca1739a8ddaf97b012557c059 A Python Parser - `Testing <https://parso.readthedocs.io/en/latest/docs/development.html#testing>`_ - `PyPI <https://pypi.python.org/pypi/parso>`_ - `Docs <https://parso.readthedocs.org/en/latest/>`_ - Uses `semantic versioning <https://semver.org/>`_ https://github.com/davidhalter/parso python3-parso noarch 639570a0756f8da9b6bc9cec70f4c6a52ca8b22258895b8fae411f5ba2a3c080 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 305d19f1e79b947c0c1504e293590a393863557a3beebacdd5da5f220d2c6632 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 56685fad5f4c67119e115e95cc623b38120e8446954e976c3eaa635f6d7e307b 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 7803b1d55240d790a0ea41d652ee398762ec08cb835d8ed5a26f7abe573cacba 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-pure-eval noarch 8af7e5210c3424fe1f82cce4c767205e821dbdfb26c292a91e339b37bff0ead8 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 cc828bc98129435c033ae76ac2ac32d4e612e8071b41321b8f7fd4a42f235f2a Python 3 DNS library Python 3 DNS library: https://launchpad.net/py3dns python3-pyLibravatar noarch 44938a44f8f164a156232566092d66d92568c9aed0e7a061c2826fa0124c816f 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-pyLibravatar noarch cbc6dcde2f3396901aad16f558e6afeb2f1a869299dd9d6f418ae21de8fa2401 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 29c4a902ccf0a9c33c0c67773097a3073b8cec3ff4d1b0328d71a7821a5224e7 A Python svg graph plotting library https://www.pygal.org/ python3-pygit2 aarch64 347c7c6f25690d33dbf9d7fd7166a3ce6640c7d9ed354da4bd4a3b6075a8b616 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-pygit2 aarch64 609b794731d2f6f4c7459d66577fb4dd6e7cba48353efe9ed471543486940f1c 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 b3ea4ac265cd9344a3e14fa6ba5c5e2cc8604042bca00f7e55f60dd7c83e08c3 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-python-openid-teams noarch 7a264bf5bf297b15f67ebd774cb3decfccfc209dfb03647a5f8dd916d8d33a88 This is an implementation of the OpenID teams extension for python-openid UNKNOWN http://www.github.com/puiterwijk/python-openid-teams/ python3-resalloc noarch ee79e0ea65cf59c044f269afdf41f220528724fd016b44110fa5e31b832cae02 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-resalloc noarch 909ba9f311d3f22debb497520af7f62cc15d58282031f592fc150750f5c17bf7 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 1b310b55936ab567af543deefab2bb3ea413664588a02bd515ffd08cd6f5c53c 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 e9f41d881464061bcf0346f72ed97a078b2bbae22af124a965a8cfc5c466847a 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-retask noarch 36ca458739d0c56928b2a6d1d1b3e8ed4ef5d23fbe1934fe8d2be38eac0be327 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 bd4de94944141f90164b4ce22e1b0769c2f6a9656b582029f667fb60ba3ad2d2 Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpkg noarch d4b8990aaaf1681a252c239a65519e026c79510ddebbc9f57ab1ffd726378895 Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpkg noarch ea2e7959c51278e8dd2e5c7d6f8587237c6cdc30d620295e186e099fcea7127d Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpkg noarch 596caa206231b8076544656ea33f4835f02439b4b6762947e55142372bc1c28e Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpkg noarch 6914edd47beb989a0ad4cf0e8587d351dbcbcfa343c2d2d70afb608bf849febe Python library for interacting with rpm+git A python library for managing RPM package sources in a git repository. https://pagure.io/rpkg python3-rpkg noarch de93d47062a0b4787355b23ae457024a285f6cda706855ea79f02019ed11322d 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 dcf3c26501590d313e77b41f7af6b2215a00e884288f3f2bef82539d104583e2 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-rpmautospec noarch 3cddc9c962c546cfe29769ecaa83a9b62f213a03b34dd3e41106c520581f3dac 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 52027c43b73972f695b58b463420984755a3d1d20891117cf5c9a37c41d8499a 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-stack-data noarch 25509f6369acf5a15005a5c781b90af6e207267247dea9c10ffc75be7c916003 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 9c245e6f2027c811fd8c0e7f00494d662383c7d7835f105565846a96dc9e7dfe Dictionary with Jinja2 expansion Dictionary where __getitem__() is run through Jinja2 template. https://github.com/xsuchy/templated-dictionary resalloc noarch 0e8c2fe79d5b6292892922d77a23d0ffd024c5b881ac291981449468a2c37e36 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 noarch 8feca920ac096a5437e9aa7645e2e2f5b6b3bd5436fe66cb5a46641c8b2b2443 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 9d65fa5c53d4408bef0e2ea73a6aa99f32d9347635a1c9460a36a3b92b7a0a29 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 38ac515a3c9cff212a41823b92b009ccf7e4c78d0d56100fc24eaa0b51229901 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 ce4c29dbc02f98c1a657144f19cfe9093c801f1e5f049708facd3c1950773051 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 c85a7610fdc56b87bf1c577e6d78c405d572aa3f5762cf233b6ab9ca2169afdc 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 6772190ebc6f6bbd60742ffb828ae9d92c9eed6a62ff6cf07165746ca53384bc 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-selinux noarch 48b9a8781c26f510c950e071e369f07ec14e01cf155a94da641a4572a57030bc 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 2ec2c92d36c604df450c0a88ff744de38796e2ca5963a4b259baf5a583b83451 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-server noarch 00ae7144df57bca8a2e42a57c86a6bf53b4e416c55d3a6514f3c643731056855 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 0e8fe84258ca5c5a60c7fa4b8eb80c8a1ab5e4e46bdd8f213f167a946a42766d 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 resalloc-webui noarch 5080b28ada4d60fdf8e4578ab7bcbf98fa243ad060f6df085a8b828e81fabc2c 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 3ca5ef27ea809cf67bcb7d839810a0a9fb749953937bd96d7c11ff58d472b1f1 Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src 4387f1de5a5fd0407b0603181f37ed76f58b4c64c049f8c53fcee5a582bbe1b6 Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src cbeda11cbf8fe620413278941c5d2bfacd1e408989592e96908a5a960d399f5f Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src 77154b3b580cf13f1e5a3e1059c0c7ce32323aa5466a267c696f9eab1376e207 Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src c31ccf814196c2b893c9614e133107403a7854f668644d0bc31903269c777eee Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src ca39ec857b411bc6e3b8b2df3e5152f0f489eb5c56daaae3fdfa0f5474b1576f Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg src 70e83e5306e6656ef576926e7c3df5907cb00d8a9cb9e0ac8d807c8fd76c9666 Python library for interacting with rpm+git Python library for interacting with rpm+git https://pagure.io/rpkg rpkg noarch 0fdfd5df1ebad563560dbcffa2b35bf3b595a28ba6273d56eb6eb26aef009235 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 noarch f6e5d80cf6271060550fcd67b72c8fae4aa32b06413f48e21ec11e164ab2697e 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 noarch a10e59fc252a498000edce12fd5be083673ea2af9d0c6496184125016cf3cd62 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 noarch 2e4dcad09f17175040990e9e613f1783255b5d53cd7aad4e44a6392fb490bd56 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 712a4229db2a33e42f13cc963086c8af6a74f19c853f0fb8d6069325aca9006c Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-common noarch cb80de153450c8498ccaf8259b42e3571c477dc4650b4cf22803a99835336efb Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-common noarch 0f0584ac1bbae7e23a1deb6a67f25f9b5a267c6557dcfad20d1a72f49518f36b Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-common noarch 05bb6263fa0b23a548a136a20bc9b37d84cfaf3730a9a33fcc9a7034009b673e Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-common noarch 1bc6aed1040891314942c8fb2cd6dd1a6cd9d78cce5328d0983bb9dde98be17e Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-common noarch 51c1f20b136098d69f967653479fe675d11f526b0cc17d33fe00b2ddbee743c1 Common files for rpkg Common files for python2-rpkg and python3-rpkg. https://pagure.io/rpkg rpkg-macros noarch aafb65c9f8f915205f2f195aebacfd220d34805fe1277b8d4ba4367d9e26845a 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 e3dd4036b3106e54b03efe3f0c93b745ff8a25ca518003b8131d973bebf7466e 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 d886a8c23762c5288f5c33316f05beeebcde0777fea47578ace9d8803941d1ec 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 rpkg-util src 749f0c2b1f7ee420174d32953e566b1af35c3b4446f17b675376d57e812a8aea 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 rpkg-util src 5d2cf21c9801d07acaeb4352879b5ea2c7e6e52891e99cd2fd5b28b80a94268c 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 rpkg-util src 45bcf751f73e0e7c47f83c68284b7289e4d2709533f59843ab4bdad7662d4175 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 e80ddfc44fa3d3f69e05f60c02e6253684ffb25b305fcd3f02f0400dd65fc9c7 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 554285f445a9f0db2fc89a258a4776acd561c54e2c022b4d0e35585be57c18e6 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 4b24b4f6b784086a7d4b7d902615fa284fddc57f9ada858bc79fc477d959f7fc 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 40e86e217241a9835eb0741736441e91acb9d1c67b2c4ed96eb37aba91b0eda4 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 6fe764af1f80168fa9ce66bd37d00f6c8faf09af4f5606a07e83cd38d7d41b7e CLI tool for generating RPM releases and changelogs CLI tool for generating RPM releases and changelogs https://pagure.io/fedora-infra/rpmautospec rpmautospec noarch 207281610e2aa72f4c2d3dc55a7c91f06cee477781a7c12beade820e99f4a3df 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 547c8519a4ae4003258c169f9f4360f88051c245b93ac1655047e2a6bd044a6f Rpmautospec RPM macros for local rpmbuild RPM macros with placeholders for building rpmautospec enabled packages localy https://pagure.io/fedora-infra/rpmautospec rpmautospec-rpm-macros noarch fd753c0a564011f4781900d9d91142a80f2c9a182473aac4d64cc7a0dda6c441 Rpmautospec RPM macros for local rpmbuild RPM macros with placeholders for building rpmautospec enabled packages localy https://pagure.io/fedora-infra/rpmautospec tini aarch64 f5b8f9cf7610ef6ee075f5a9cf1aefd3a3d8fd662ccee751edc6bdfbea5dbf28 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 46d3af99f76d4c9838b2ac2c0f4e3e49df718d50158803861ebb033460c63401 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 85033fa83fcf4217eeb03cf61ab3e5f56b502e26c96dac53b0fbed5ac693ab40 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 53471c23369deabcb10aa4e0acb62b0183da29d18bed7ff19c3a79de0b1b15f2 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 10af4e527a19064c9ca77218ca8f82e78de336f9aa591655d0c4150db2c82b16 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 76907c10ed5f351bea8e4e7151560c0a82d7d2b68f231a05f50f791f8b4bb0fb 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 24e7d1578aa4e626d33419225fa6eba5655b7e6f73150b0747dfd96730dcee97 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 82a09bdac9b22e4150c8482567b4f1a92d754c8498633b51814726332cd31509 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