跳转到主要内容

Python的简单JavaScript解释器

项目描述

https://github.com/amol-/dukpy/actions/workflows/run-tests.yml/badge.svg https://coveralls.io/repos/amol-/dukpy/badge.png?branch=master https://img.shields.io/pypi/v/dukpy.svg

DukPy是一个基于duktape引擎构建的Python简单JavaScript解释器,没有任何外部依赖。它内置了一些常见的转换器,方便使用。

  • CoffeeScript

  • BabelJS

  • TypeScript

  • JSX

  • LESS

CoffeeScript编译器

使用CoffeeScript编译器就像运行

>>> import dukpy
>>> dukpy.coffee_compile('''
...     fill = (container, liquid = "coffee") ->
...         "Filling the #{container} with #{liquid}..."
... ''')
'(function() {\n  var fill;\n\n  fill = function*(container, liquid) {\n    if (liquid == null) {\n      liquid = "coffee";\n    }\n    return "Filling the " + container + " with " + liquid + "...";\n  };\n\n}).call(this);\n'

TypeScript转换器

可以通过dukpy.typescript_compile函数使用TypeScript编译器

>>> import dukpy
>>> dukpy.typescript_compile('''
... class Greeter {
...     constructor(public greeting: string) { }
...     greet() {
...         return "<h1>" + this.greeting + "</h1>";
...     }
... };
...
... var greeter = new Greeter("Hello, world!");
... ''')
'var Greeter = (function () {\n    function Greeter(greeting) {\n        this.greeting = greeting;\n    }\n    Greeter.prototype.greet = function () {\n        return "<h1>" + this.greeting + "</h1>";\n    };\n    return Greeter;\n})();\n;\nvar greeter = new Greeter("Hello, world!");\n'

目前编译器内置了选项,不接受额外的选项,

基于DukPY的TypeScript编译器还提供了一个WebAssets(http://webassets.readthedocs.org/en/latest/)过滤器,可以自动编译资产管道中的TypeScript代码。您可以使用以下方式在WebAssets中将此过滤器注册为typescript

from webassets.filter import register_filter
from dukpy.webassets import TypeScript

register_filter(TypeScript)

这使得过滤器可以通过typescript名称使用。

注意:当使用TypeScript编译器运行在浏览器中的代码时,请确保添加https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.24/system.js依赖。因为导入语句是通过SystemJS解析的。

EcmaScript6 BabelJS转换器

要将ES6代码编译为ES5以供日常使用,您可以使用 dukpy.babel_compile

>>> import dukpy
>>> dukpy.babel_compile('''
... class Point {
...     constructor(x, y) {
...             this.x = x;
...         this.y = y;
...         }
...         toString() {
...             return '(' + this.x + ', ' + this.y + ')';
...         }
... }
... ''')
'"use strict";\n\nvar _prototypeProperties = function (child, staticProps, instanceProps) { if (staticProps) Object.defineProperties(child, staticProps); if (instanceProps) Object.defineProperties(child.prototype, instanceProps); };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };\n\nvar Point = (function () {\n    function Point(x, y) {\n        _classCallCheck(this, Point);\n\n        this.x = x;\n        this.y = y;\n    }\n\n    _prototypeProperties(Point, null, {\n        toString: {\n            value: function toString() {\n                return "(" + this.x + ", " + this.y + ")";\n            },\n            writable: true,\n            configurable: true\n        }\n    });\n\n    return Point;\n})();\n'

您可以将 选项 传递给BabelJS编译器,就像在调用 babel_compile() 时的关键字一样。

基于DukPY的BabelJS编译器还提供了一个WebAssets(http://webassets.readthedocs.org/en/latest/)过滤器,以自动在您的资产管道中编译ES6代码。您可以通过以下方式在WebAssets中使用该过滤器并注册为 babeljs

from webassets.filter import register_filter
from dukpy.webassets import BabelJS

register_filter(BabelJS)

这使过滤器可以通过 babeljs 名称使用。目前仅支持一个过滤器选项 BABEL_MODULES_LOADER,其值为 systemjsumd,以指定编译后的代码应使用SystemJS或UMD而不是CommonJS作为模块。

注意:当使用BabelJS编译器编译需要在浏览器中运行的代码时,请确保添加 https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js 依赖项。

JSX到React转换

DukPy提供了一个从JSX到React的内置编译器,这可以通过 dukpy.jsx_compile 获取。

>>> import dukpy
>>> dukpy.jsx_compile('var react_hello = <h1>Hello, world!</h1>;')
u'"use strict";\n\nvar react_hello = React.createElement(\n  "h1",\n  null,\n  "Hello, world!"\n);'

基于DukPY的JSX编译器还提供了一个WebAssets(http://webassets.readthedocs.org/en/latest/)过滤器,以自动在您的资产管道中编译JSX+ES6代码。您可以通过以下方式在WebAssets中使用该过滤器并注册为 babeljsx

from webassets.filter import register_filter
from dukpy.webassets import BabelJSX

register_filter(BabelJSX)

这使得过滤器可以通过 babeljsx 名称使用。此过滤器支持与babel相同的选项。

Less转换

DukPy提供了一个内置的less编译器分发,可通过 dukpy.less_compile 获取。

>>> import dukpy
>>> dukpy.less_compile('.class { width: (1 + 1) }')
'.class {\n  width: 2;\n}\n'

基于DukPY的LESS编译器还提供了一个WebAssets(http://webassets.readthedocs.org/en/latest/)过滤器,以自动在您的资产管道中编译LESS代码。您可以通过以下方式在WebAssets中使用该过滤器并注册为 lessc

from webassets.filter import register_filter
from dukpy.webassets import CompileLess

register_filter(CompileLess)

这使得过滤器可以通过 lessc 名称使用。

使用JavaScript解释器

使用dukpy就像使用带有JavaScript代码的 dukpy.evaljs 函数一样。

>>> import dukpy
>>> dukpy.evaljs("var o = {'value': 5}; o['value'] += 3; o")
{'value': 8}

evaljs 函数执行JavaScript,并尽可能将其结果值作为JSON编码返回。

如果执行失败,将抛出带有失败原因的 dukpy.JSRuntimeError 异常。

传递参数

传递给 evaljs 的任何参数都可在javascript中的 dukpy 对象内部使用。为了在JavaScript中可用,参数必须能够使用JSON进行编码。

>>> import dukpy
>>>
>>> def sum3(value):
...     return dukpy.evaljs("dukpy['value'] + 3", value=value)
...
>>> sum3(7)
10

运行多个脚本

evaljs 函数支持提供多个源代码以在相同上下文中执行。

多个脚本可以通过列表或元组传递

>>> import dukpy
>>> dukpy.evaljs(["var o = {'value': 5}",
...               "o['value'] += 3",
...               "o"])
{'value': 8}

当您的代码需要依赖项才能工作时,这很有用,因为您可以首先加载依赖项,然后加载您的代码。

实际上,DukPy本身就是这样实现coffeescript编译器的。

def coffee_compile(source):
    with open(COFFEE_COMPILER, 'r') as coffeescript_js:
        return evaljs((coffeescript_js.read(), 'CoffeeScript.compile(dukpy.coffeecode)'),
                      coffeecode=source)

使用持久JavaScript解释器

evaljs 函数在每次调用时都会创建一个新的解释器,这通常是方便的,可以避免由于全局变量的污点或不预期的执行状态而引起的错误。

在某些情况下,您可能想运行具有缓慢引导的代码,因此方便在两次不同的调用之间重用相同的解释器,以便引导成本已经在第一次执行期间支付。

这可以通过使用 dukpy.JSInterpreter 对象来实现。

创建一个 dukpy.JSInterpreter 允许在解释器内部评估代码,并且多个 eval 调用将共享同一个解释器和全局状态

>>> import dukpy
>>> interpreter = dukpy.JSInterpreter()
>>> interpreter.evaljs("var o = {'value': 5}; o")
{u'value': 5}
>>> interpreter.evaljs("o.value += 1; o")
{u'value': 6}

使用 require 加载模块

当使用 dukpy.JSInterpreter 对象时,可以使用 require('modulename') 指令在 JavaScript 中加载一个模块。

模块将在所有与 dukpy.JSInterpreter.loader.register_path 注册的目录中进行查找

>>> import dukpy
>>> jsi = dukpy.JSInterpreter()
>>> jsi.loader.register_path('./js_modules')
>>> jsi.evaljs("isEmpty = require('fbjs/lib/isEmpty'); isEmpty([1])")
False

从 npmjs.org 安装软件包

使用持久 JavaScript 解释器时,也可以通过 dukpy.install_jspackage 函数从 npmjs.org 安装软件包

>>> import dukpy
>>> jsi = dukpy.JSInterpreter()
>>> dukpy.install_jspackage('promise', None, './js_modules')
Packages going to be installed: promise->7.1.1, asap->2.0.3
Fetching https://registry.npmjs.org/promise/-/promise-7.1.1.tgz..........................
Fetching https://registry.npmjs.org/asap/-/asap-2.0.3.tgz............
Installing promise in ./js_modules Done!

同样,dukpy-install 壳命令也提供了相同的功能

$ dukpy-install -d ./js_modules promise
Packages going to be installed: promise->7.1.1, asap->2.0.3
Fetching https://registry.npmjs.org/promise/-/promise-7.1.1.tgz..........................
Fetching https://registry.npmjs.org/asap/-/asap-2.0.3.tgz............
Installing promise in ./js_modules Done!

请注意,目前 install_jspackage 还无法解析冲突的依赖关系。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

dukpy-0.4.0.tar.gz (2.0 MB 查看散列)

上传时间

构建分布

dukpy-0.4.0-pp310-pypy310_pp73-win_amd64.whl (1.3 MB 查看散列)

上传时间 PyPy Windows x86-64

dukpy-0.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看散列)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB 查看散列)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看散列)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (1.3 MB 查看散列)

上传时间 PyPy macOS 11.0+ ARM64

dukpy-0.4.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

dukpy-0.4.0-pp39-pypy39_pp73-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 PyPy Windows x86-64

dukpy-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

dukpy-0.4.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

dukpy-0.4.0-pp38-pypy38_pp73-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 PyPy Windows x86-64

dukpy-0.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

dukpy-0.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

dukpy-0.4.0-pp37-pypy37_pp73-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 PyPy Windows x86-64

dukpy-0.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

dukpy-0.4.0-cp312-cp312-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

dukpy-0.4.0-cp312-cp312-win32.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86

dukpy-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ x86_64

dukpy-0.4.0-cp312-cp312-musllinux_1_1_i686.whl (2.5 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ i686

dukpy-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86_64

dukpy-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

dukpy-0.4.0-cp312-cp312-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ x86_64

dukpy-0.4.0-cp311-cp311-win_amd64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

dukpy-0.4.0-cp311-cp311-win32.whl (1.3 MB 查看哈希值)

上传于 CPython 3.11 Windows x86

dukpy-0.4.0-cp311-cp311-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp311-cp311-musllinux_1_1_i686.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ i686

dukpy-0.4.0-cp311-cp311-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

dukpy-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

dukpy-0.4.0-cp310-cp310-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

dukpy-0.4.0-cp310-cp310-win32.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86

dukpy-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp310-cp310-musllinux_1_1_i686.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ i686

dukpy-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

dukpy-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.10 macOS 10.9+ x86-64

dukpy-0.4.0-cp39-cp39-win_amd64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

dukpy-0.4.0-cp39-cp39-win32.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86

dukpy-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希)

上传时间 CPython 3.9 musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp39-cp39-musllinux_1_1_i686.whl (2.5 MB 查看哈希)

上传时间 CPython 3.9 musllinux: musl 1.1+ i686

dukpy-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希)

上传时间 CPython 3.9 musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (1.3 MB 查看哈希)

上传时间 CPython 3.9 macOS 11.0+ ARM64

dukpy-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl (1.4 MB 查看哈希)

上传时间 CPython 3.9 macOS 10.9+ x86-64

dukpy-0.4.0-cp38-cp38-win_amd64.whl (1.3 MB 查看哈希)

上传时间 CPython 3.8 Windows x86-64

dukpy-0.4.0-cp38-cp38-win32.whl (1.3 MB 查看哈希)

上传时间 CPython 3.8 Windows x86

dukpy-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp38-cp38-musllinux_1_1_i686.whl (2.5 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ i686

dukpy-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp38-cp38-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

dukpy-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

dukpy-0.4.0-cp37-cp37m-win_amd64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

dukpy-0.4.0-cp37-cp37m-win32.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m Windows x86

dukpy-0.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp37-cp37m-musllinux_1_1_i686.whl (2.5 MB 查看哈希)

上传时间: CPython 3.7m musllinux: musl 1.1+ i686

dukpy-0.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希)

上传时间: CPython 3.7m musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希)

上传时间: CPython 3.7m manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希)

上传时间: CPython 3.7m manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希)

上传时间: CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl (1.4 MB 查看哈希)

上传时间: CPython 3.7m macOS 10.9+ x86-64

dukpy-0.4.0-cp36-cp36m-win_amd64.whl (1.3 MB 查看哈希)

上传时间: CPython 3.6m Windows x86-64

dukpy-0.4.0-cp36-cp36m-win32.whl (1.3 MB 查看哈希)

上传时间: CPython 3.6m Windows x86

dukpy-0.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl (2.5 MB 查看哈希)

上传时间: CPython 3.6m musllinux: musl 1.1+ x86-64

dukpy-0.4.0-cp36-cp36m-musllinux_1_1_i686.whl (2.4 MB 查看哈希)

上传时间: CPython 3.6m musllinux: musl 1.1+ i686

dukpy-0.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl (2.4 MB 查看哈希)

上传于 CPython 3.6m musllinux: musl 1.1+ ARM64

dukpy-0.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ x86-64

dukpy-0.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ ARM64

dukpy-0.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.4 MB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

dukpy-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.6m macOS 10.9+ x86-64

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面