8000 GitHub - karellen/wheel-axle at v0.0.1
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

karellen/wheel-axle

{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":452959270,"defaultBranch":"master","name":"wheel-axle","ownerLogin":"karellen","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-01-28T06:12:28.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/17014004?v=4","public":true,"private":false,"isOrgOwned":true},"currentUser":null,"refInfo":{"name":"v0.0.1","listCacheKey":"v0:1745628177.0","canEdit":false,"refType":"tag","currentOid":"f02f834036c4166502eb0a1637a988906ff7431c"},"tree":{"items":[{"name":".github/workflows","path":".github/workflows","contentType":"directory","hasSimplifiedPath":true},{"name":".idea","path":".idea","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"build.py","path":"build.py","contentType":"file"},{"name":"pyproject.toml","path":"pyproject.toml","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":9,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/karellen/wheel-axle/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/karellen/wheel-axle.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone karellen/wheel-axle","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Fkarellen%2Fwheel-axle","zipballUrl":"/karellen/wheel-axle/archive/refs/tags/v0.0.1.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026ref=v0.0.1\u0026repo=452959270"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"4","overviewFiles":[{"displayName":"README.md","repoName":"wheel-axle","refName":"v0.0.1","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eWheel Axle - Python Wheel enhancement library\u003c/h1\u003e\u003ca id=\"user-content-wheel-axle---python-wheel-enhancement-library\" class=\"anchor\" aria-label=\"Permalink: Wheel Axle - Python Wheel enhancement library\" href=\"#wheel-axle---python-wheel-enhancement-library\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://gitter.im/karellen/Lobby\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/26c7a248193ad3a2a99a964c2f4071489ac2c057aa01a86a5cadfda96ea84911/68747470733a2f2f696d672e736869656c64732e696f2f6769747465722f726f6f6d2f6b6172656c6c656e2f4c6f6262793f6c6f676f3d676974746572\" alt=\"Gitter\" data-canonical-src=\"https://img.shields.io/gitter/room/karellen/Lobby?logo=gitter\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/karellen/wheel-axle/actions/workflows/build.yml\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/a8bad3ed969f81e9960254b38739aa88a7d5b80653b4c929afb2c90222c4c8c1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f6b6172656c6c656e2f776865656c2d61786c652f776865656c2d61786c652f6d6173746572\" alt=\"Build Status\" data-canonical-src=\"https://img.shields.io/github/workflow/status/karellen/wheel-axle/wheel-axle/master\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://coveralls.io/r/karellen/wheel-axle?branch=master\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/4a2f5f7469a55f1a13a5d0669fe5aa235bab08bc1aad8d5e61e7dc2b552cb623/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f6769746875622f6b6172656c6c656e2f776865656c2d61786c652f6d61737465723f6c6f676f3d636f766572616c6c73\" alt=\"Coverage Status\" data-canonical-src=\"https://img.shields.io/coveralls/github/karellen/wheel-axle/master?logo=coveralls\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://pypi.org/project/wheel-axle/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/454f349a53265c52ed8beb61450fb1cc08c8ae88424dd0f74b294d93e50e5dca/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f776865656c2d61786c653f6c6f676f3d70797069\" alt=\"PyBuilder Version\" data-canonical-src=\"https://img.shields.io/pypi/v/wheel-axle?logo=pypi\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/wheel-axle/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/b67cba6c0503f7b0dec1f1ad83bf5eef14927a7b536abdf47964778965d1daff/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f776865656c2d61786c653f6c6f676f3d70797069\" alt=\"PyBuilder Python Versions\" data-canonical-src=\"https://img.shields.io/pypi/pyversions/wheel-axle?logo=pypi\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/wheel-axle/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/def4971a979fc3fd084c1ba3038c57d3367c3bc5badeeaa294bc4f1ae50b77b9/68747470733a2f2f696d672e736869656c64732e696f2f707970692f64642f776865656c2d61786c653f6c6f676f3d70797069\" alt=\"PyBuilder Downloads Per Day\" data-canonical-src=\"https://img.shields.io/pypi/dd/wheel-axle?logo=pypi\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/wheel-axle/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/2bae797be2f7c9728789c6aa4f188579cfd696e13a49ca040befb67a957446ac/68747470733a2f2f696d672e736869656c64732e696f2f707970692f64772f776865656c2d61786c653f6c6f676f3d70797069\" alt=\"PyBuilder Downloads Per Week\" data-canonical-src=\"https://img.shields.io/pypi/dw/wheel-axle?logo=pypi\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/wheel-axle/\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/63e44be347f79e08ca5dae0a8c951f8acada30033339a72efb7621eabdd0ceb2/68747470733a2f2f696d672e736869656c64732e696f2f707970692f646d2f776865656c2d61786c653f6c6f676f3d70797069\" alt=\"PyBuilder Downloads Per Month\" data-canonical-src=\"https://img.shields.io/pypi/dm/wheel-axle?logo=pypi\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eProblem\u003c/h2\u003e\u003ca id=\"user-content-problem\" class=\"anchor\" aria-label=\"Permalink: Problem\" href=\"#problem\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\u003ccode\u003ebdist_wheel\u003c/code\u003e does not support symlinks.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ebdist_wheel\u003c/code\u003e does not support overwriting in a convenient way:\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ewhether the distribution is pure-Python\u003c/li\u003e\n\u003cli\u003edistribution ABI tag\u003c/li\u003e\n\u003cli\u003eExtend Python tag override capability\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSolution\u003c/h2\u003e\u003ca id=\"user-content-solution\" class=\"anchor\" aria-label=\"Permalink: Solution\" href=\"#solution\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eWARNING: THIS IS EXPERIMENTAL BETA SOFTWARE. THERE ARE NO WARRANTIES OF ANY KIND. USE AT YOUR OWN RISK.\nADDITIONAL INCLUDED DISCLAIMERS ALSO APPLY.\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eWheel-Axle (\u003ccode\u003eAxle\u003c/code\u003e, \u003ccode\u003ebdist_axle\u003c/code\u003e) is a drop-in replacement/augmentation utility for \u003ccode\u003ewheel\u003c/code\u003e (\u003ccode\u003ebdist_wheel\u003c/code\u003e)\nthat extends and builds spec-compliant wheels.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eDuring the build, \u003ccode\u003eAxle\u003c/code\u003e is able to capture and record symlinks in the following schema paths (locations):\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003epurelib\u003c/li\u003e\n\u003cli\u003eplatlib\u003c/li\u003e\n\u003cli\u003escripts\u003c/li\u003e\n\u003cli\u003eheaders\u003c/li\u003e\n\u003cli\u003edata\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAdditionally, \u003ccode\u003eAxle\u003c/code\u003e is able to customize the tags via additional command line options.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eWhile the generated wheel is fully spec-compliant, additional symlinks functionality is not possible without its\ncompanion library \u003ca href=\"https://github.com/karellen/wheel-axle-runtime\"\u003eWheel Axle Runtime\u003c/a\u003e. Thus, every wheel generated by\nthe \u003ccode\u003ebdist_axle\u003c/code\u003e automatically becomes dependent on \u003ccode\u003ewheel-axle-runtime\u003c/code\u003e that provides post-install logic required.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eImplementation\u003c/h2\u003e\u003ca id=\"user-content-implementation\" class=\"anchor\" aria-label=\"Permalink: Implementation\" href=\"#implementation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe body of the library is as ugly and messy as \u003ccode\u003edistutils\u003c/code\u003e/\u003ccode\u003esetuptools\u003c/code\u003e are, and consists of, mainly, in\nhacking/overwriting various \u003ccode\u003esetuptools\u003c/code\u003e commands to detect, handle and record symlinks and their targets. Once that\nproblem is solved, the list of symlinks is recorded in the \u003ccode\u003e.dist-info/symlinks.txt\u003c/code\u003e\nin the following CSV format:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003esymlink name\u003c/li\u003e\n\u003cli\u003esymlink target\u003c/li\u003e\n\u003cli\u003ea boolean (0 or 1) flag indicating whether the target is a directory\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNOTE: Symlinks may be relative, absolute and/or broken. Symlink targets are recorded verbatim (even when broken) and\nare NOT otherwise interpreted. THIS IS INTENTIONAL. Please\nsee \u003ca href=\"https://github.com/karellen/wheel-axle-runtime#security\"\u003eWheel Axle Runtime Security Notice\u003c/a\u003e\nfor additional information.\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eA special \u003ccode\u003e\u0026lt;distribution name and version\u0026gt;.pth\u003c/code\u003e file is also added to the distribution. When the wheel is installed\nthis \u003ccode\u003e.pth\u003c/code\u003e file triggers the post-install logic via\n\u003ca href=\"https://github.com/karellen/wheel-axle-runtime\"\u003ewheel-axle-runtime\u003c/a\u003e.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsage\u003c/h2\u003e\u003ca id=\"user-content-usage\" class=\"anchor\" aria-label=\"Permalink: Usage\" href=\"#usage\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epython setup.py bdist_wheel \u0026lt;arguments\u0026gt;\u003c/code\u003e can be replaced with \u003ccode\u003epython setup.py bdist_axle \u0026lt;arguments\u0026gt;\u003c/code\u003e. The replacement\nis drop-in.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAdditional functionality is available via the following options:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\" --root-is-pure set to manually override whether the wheel is\n pure (default: None)\n --abi-tag set to override ABI tag (default: None)\"\u003e\u003cpre lang=\"commandline\" class=\"notranslate\"\u003e\u003ccode\u003e --root-is-pure set to manually override whether the wheel is\n pure (default: None)\n --abi-tag set to override ABI tag (default: None)\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eUsing \u003ccode\u003e--python-tag\u003c/code\u003e, \u003ccode\u003e--root-is-pure\u003c/code\u003e and \u003ccode\u003e--abi-tag\u003c/code\u003e allows you to create wheels that carry platform-dependent data\nwhile otherwise containing pure-Python libraries.\u003c/p\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"Wheel Axle - Python Wheel enhancement library","anchor":"wheel-axle---python-wheel-enhancement-library","htmlText":"Wheel Axle - Python Wheel enhancement library"},{"level":2,"text":"Problem","anchor":"problem","htmlText":"Problem"},{"level":2,"text":"Solution","anchor":"solution","htmlText":"Solution"},{"level":2,"text":"Implementation","anchor":"implementation","htmlText":"Implementation"},{"level":2,"text":"Usage","anchor":"usage","htmlText":"Usage"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fkarellen%2Fwheel-axle%2Ftree%2Fv0.0.1"}},{"displayName":"LICENSE","repoName":"wheel-axle","refName":"v0.0.1","path":"LICENSE","preferredFileType":"license","tabName":"License","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fkarellen%2Fwheel-axle%2Ftree%2Fv0.0.1"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-708ec8ade250.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}}

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository fi 9A61 les navigation

Wheel Axle - Python Wheel enhancement library

Gitter Build Status Coverage Status

PyBuilder Version PyBuilder Python Versions PyBuilder Downloads Per Day PyBuilder Downloads Per Week PyBuilder Downloads Per Month

Problem

  1. bdist_wheel does not support symlinks.
  2. bdist_wheel does not support overwriting in a convenient way:
    • whether the distribution is pure-Python
    • distribution ABI tag
    • Extend Python tag override capability

Solution

WARNING: THIS IS EXPERIMENTAL BETA SOFTWARE. THERE ARE NO WARRANTIES OF ANY KIND. USE AT YOUR OWN RISK. ADDITIONAL INCLUDED DISCLAIMERS ALSO APPLY.

Wheel-Axle (Axle, bdist_axle) is a drop-in replacement/augmentation utility for wheel (bdist_wheel) that extends and builds spec-compliant wheels.

During the build, Axle is able to capture and record symlinks in the following schema paths (locations):

  • purelib
  • platlib
  • scripts
  • headers
  • data

Additionally, Axle is able to customize the tags via additional command line options.

While the generated wheel is fully spec-compliant, additional symlinks functionality is not possible without its companion library Wheel Axle Runtime. Thus, every wheel generated by the bdist_axle automatically becomes dependent on wheel-axle-runtime that provides post-install logic required.

Implementation

The body of the library is as ugly and messy as distutils/setuptools are, and consists of, mainly, in hacking/overwriting various setuptools commands to detect, handle and record symlinks and their targets. Once that problem is solved, the list of symlinks is recorded in the .dist-info/symlinks.txt in the following CSV format:

  1. symlink name
  2. symlink target
  3. a boolean (0 or 1) flag indicating whether the target is a directory

NOTE: Symlinks may be relative, absolute and/or broken. Symlink targets are recorded verbatim (even when broken) and are NOT otherwise interpreted. THIS IS INTENTIONAL. Please see Wheel Axle Runtime Security Notice for additional information.

A special <distribution name and version>.pth file is also added to the distribution. When the wheel is installed this .pth file triggers the post-install logic via wheel-axle-runtime.

Usage

python setup.py bdist_wheel <arguments> can be replaced with python setup.py bdist_axle <arguments>. The replacement is drop-in.

Additional functionality is available via the following options:

  --root-is-pure    set to manually override whether the wheel is
                    pure (default: None)
  --abi-tag         set to override ABI tag (default: None)

Using --python-tag, --root-is-pure and --abi-tag allows you to create wheels that carry platform-dependent data while otherwise containing pure-Python libraries.

0