Skip to main content

C/C++ NES emulator with Python bindings

Project description

cynes - C/C++ NES emulator with Python bindings

cynes is a lightweight multi-platform NES emulator providing a simple Python interface. The core of the emulation is based on the very complete documentation provided by the Nesdev Wiki. The current implementation consists of

  • A cycle-accurate CPU emulation
  • A cycle-accurate PPU emulation
  • A cycle-accurate APU emulation (even though it does not produce any sound)
  • Few basic NES mappers (more to come)

The Python bindings allow to interact easily with one or several NES emulators at the same time, ideal for machine learning application.

Installation

cynes can be installed using pip :

pip install cynes

It can also be built from source using (requires cmake) :

git clone https://github.com/Youlixx/cynes
cd cynes/
pip install .

How to use

A cynes NES emulator can be created by instantiating a new NES object. The following code is the minimal code to run a ROM file.

from cynes.windowed import WindowedNES

# We initialize a new emulator by specifying the ROM file used
with WindowedNES("rom.nes") as nes:
    # While the emulator should not be closed, we can continue the emulation
    while not nes.should_close:
        # The step method run the emulation for a single frame
        # It also returns the content of the frame buffer as a numpy array
        frame = nes.step()

Multiple emulators can be created at once by instantiating several NES objects.

Windowed / Headless modes

The default NES class run in "headless" mode, meaning that no rendering is performed. A simple wrapper around the base emulator providing a basic renderer and input handling using SDL2 is present in the windowed submodule.

from cynes import NES
from cynes.windowed import WindowedNES

# We can create a NES emulator without a rendering window
nes_headless = NES("rom.nes")

while not nes_headless.has_crashed:
    frame = nes_headless.step()

# And with the rendering window
nes_windowed = WindowedNES("rom.nes")

while not nes_windowed.should_close:
    frame = nes_windowed.step()

While the rendering overhead is quite small, running in headless mode can improve the performances when the window is not needed. The content of the frame buffer can always be accessed using the step method.

Controller

The state of the controller can be directly modified using the following syntax :

from cynes import *

# Simple input
nes.controller = NES_INPUT_RIGHT

# Multiple button presses at once
nes.controller = NES_INPUT_RIGHT | NES_INPUT_A

# Chaining multiple button presses at once
nes.controller = NES_INPUT_START
nes.controller |= NES_INPUT_B
nes.controller |= NES_INPUT_SELECT

# Undefined behavior
nes.controller = NES_INPUT_RIGHT | NES_INPUT_LEFT
nes.controller = NES_INPUT_DOWN | NES_INPUT_UP

# Run the emulator with the specified controller state for 5 frames
nes.step(frames=5)

Note that the state of the controller is maintained even after the step method is called. This means that it has to be reset to 0 to release the buttons.

Two controllers can be used at the same time. The state of the second controller can be modified by updating the 8 most significant bits of the same variable.

# P1 will press left and P2 will press the right button
nes.controller = NES_INPUT_LEFT | NES_INPUT_RIGHT << 8

Key handlers

Key handlers are a simple way of associating custom actions to shortcuts. This feature is only present with the windowed mode. The key events (and their associated handlers) are fired when calling the step method.

# Disable the default window controls
nes = WindowedNES("rom.nes", default_handlers=False)

# Custom key handlers can be defined using the register method
import sdl2

def kill():
    nes.close()

nes.register(sdl2.SDL_SCANCODE_O, kill)

By default, the emulator comes with key handlers that map window keys to the controller buttons. The mapping is the following :

  • the arrow keys for the D-pad
  • the keys X and Z for the A and B buttons respectively
  • the keys A and S for the SELECT and START buttons respectively

Save states

The state of the emulator can be saved as a numpy array and later be restored.

# The state of the emulator can be dump using the save method
save_state = nes.save()

# And restored using the load method
nes.load(save_state)

Memory modification should never be performed directly on a save state, as it is prone to memory corruption. Theses two methods can be quite slow, therefore, they should be called sparsely.

Memory access

The memory of the emulator can be read from and written to using the following syntax :

# The memory content can be accessed as if the emulator was an array
player_state = nes[0x000E]

# And can be written in a similar fashion
nes[0x075A] = 0x8

Note that only the CPU RAM $0000 - $1FFFF and the mapper RAM $6000 - $7FFF should be accessed. Trying to read / write a value to other addresses may de-synchronize the components of the emulator, resulting in a undefined behavior.

Closing

An emulator is automatically closed when the object is released by Python. In windowed mode, the close method can be used to close the window without having to wait for Python to release the object. As presented previously, the WindowedNES can also be used as a context manager, which will call close automatically when exiting the context. It can also be closed manually using the close method.

# In windowed mode, this can be used to close the window
nes.close()

# Deleting the emulator in windowed mode also closes the window
del nes

# The method should_close indicates whether or not the emulator function should be called
nes.close()
nes.should_close # True

When the emulator is closed, but the object is not deleted yet, the should_close property will be set to True, indicating that calling any NES function will not work properly. This method can also return True in two other cases :

  • When the CPU of the emulator is frozen. When the CPU hits a JAM instruction (illegal opcode), it is frozen until the emulator is reset. This should never happen, but memory corruptions can cause them, so be careful when accessing the NES memory.
  • In windowed mode, when the window is closed or when the ESC key is pressed.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cynes-0.1.2.tar.gz (15.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cynes-0.1.2-cp314-cp314-win_amd64.whl (124.6 kB view details)

Uploaded CPython 3.14Windows x86-64

cynes-0.1.2-cp314-cp314-win32.whl (115.9 kB view details)

Uploaded CPython 3.14Windows x86

cynes-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (169.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (119.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cynes-0.1.2-cp313-cp313-win_amd64.whl (121.7 kB view details)

Uploaded CPython 3.13Windows x86-64

cynes-0.1.2-cp313-cp313-win32.whl (112.8 kB view details)

Uploaded CPython 3.13Windows x86

cynes-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (168.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (119.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cynes-0.1.2-cp312-cp312-win_amd64.whl (121.7 kB view details)

Uploaded CPython 3.12Windows x86-64

cynes-0.1.2-cp312-cp312-win32.whl (112.8 kB view details)

Uploaded CPython 3.12Windows x86

cynes-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (169.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (119.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cynes-0.1.2-cp311-cp311-win_amd64.whl (120.6 kB view details)

Uploaded CPython 3.11Windows x86-64

cynes-0.1.2-cp311-cp311-win32.whl (112.2 kB view details)

Uploaded CPython 3.11Windows x86

cynes-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (167.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (118.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cynes-0.1.2-cp310-cp310-win_amd64.whl (119.9 kB view details)

Uploaded CPython 3.10Windows x86-64

cynes-0.1.2-cp310-cp310-win32.whl (111.2 kB view details)

Uploaded CPython 3.10Windows x86

cynes-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (166.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (116.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cynes-0.1.2-cp39-cp39-win_amd64.whl (120.9 kB view details)

Uploaded CPython 3.9Windows x86-64

cynes-0.1.2-cp39-cp39-win32.whl (111.2 kB view details)

Uploaded CPython 3.9Windows x86

cynes-0.1.2-cp39-cp39-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cynes-0.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (166.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

cynes-0.1.2-cp39-cp39-macosx_11_0_arm64.whl (116.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file cynes-0.1.2.tar.gz.

File metadata

  • Download URL: cynes-0.1.2.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3bee8d35249ca8eed509de5fcc140e12ca9982cfead5eb37fe6ebb6b3b7cf833
MD5 5ccda0aa891f137e27f0d7f48c17590b
BLAKE2b-256 c1d12194d875767852ceed5f44fabc88528ea6bedbe814f65a2cfb02dffb3199

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 124.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 703e765b405fc33709eb457512225767ff55ade6cb164f8ac162540b9b8b1349
MD5 574865101aa3c30c3fe542a31399b5d9
BLAKE2b-256 6ef26e7ba82eed5114d10b29aeabe41f21300f34f3b96f3830cc663eb8eabebb

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp314-cp314-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp314-cp314-win32.whl
  • Upload date:
  • Size: 115.9 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 abad7eeb891df88642fd7d8012d083ceed11d33e37b84738f01290233526da20
MD5 f142e02454603c6027431961f400c120
BLAKE2b-256 54deab51ba1b3f99ae34b1536b26d2f6768b952beb2865358c10fb11a24bd951

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc939219a8aeecda886ec01a54ba247aa57003ebdd6b40cf6fe9a2b2aac1b6bf
MD5 275df934c0f2ae3badb4b235042a472f
BLAKE2b-256 9c50ac51280baffefaaa46d8d828752300bb9c8fa4c9252701c6965a2e237d87

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a883716690045967c40cc3e1f140c0d5eb12753ab29b1b6df1b89961050a4fa
MD5 6a46aa0703b8651f87d20c7d4a7396ae
BLAKE2b-256 7166f6d7640868f78c062c87ae05ef6efd5bd8061a79e67a8f622c5f830acbe7

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a2dc00e7ccbd1d742637494ae67c4cdf030124bcaeef3018c42ee9082c21daf
MD5 069ba787d62b806bddb4c046c667e298
BLAKE2b-256 d0d6a7b613280cb4a71032dfa102a6159c7f25126315f8415584b700fac6d2f8

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 121.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 969eef5461d284bdd8bc22abd15c847047607ccf74fc6cace44e52156007afe7
MD5 d9e2e26c85bc6acfa00d24b59f9a5e6f
BLAKE2b-256 ae7d899eff568d54c0dc6f089048d62bddc91c77fd0d6b8afaba94a466a43fac

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 112.8 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 3d0d62dd41533367da7e6783a6c0b5cdbadb7a85a58995b117d3c093ff070082
MD5 b11e8f48a14398f61015cd83c7a9e53c
BLAKE2b-256 410c56182e65e4a02860c17884f114358aaae032b736d936bf05418f6c5d738d

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2cedff4043940a72e0adb48f698c1e4fa1a5fcdf9e0d97bf36c046f34c935d4c
MD5 3f94ea50159869bd0f60d5adc43bfe5f
BLAKE2b-256 82d54f5aa523d1a2d652ed383d62d2f9e677a26e9dfe62f86184a31cb9b844cb

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70734dd2a1f4396f5bafdc3c7e90041dcc29fccfc2ddcb997116a84368444012
MD5 0869dd9f53a0ec9901e086e789324261
BLAKE2b-256 841596b58e387aa058fc7a56709a631f349f865e2d43061d0b676c370c8f3d6b

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ee1d7fd382948d9068ae4e32f19df6475b3ac11c5c7455f618af6cfd71dadb4
MD5 86e01b4126ce2ee3fcef1d17a3268399
BLAKE2b-256 d3ac5e23f0852875e924556d3ce1a8447ac6b54297d191fab90329f5fc7507d3

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 121.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 83129343b6fdaf6d5981522efc913ad7d649db99ed2d32b4c08258a3b8dd57b0
MD5 9709a4b930e6d799fac11118a4542e15
BLAKE2b-256 aedd067dfe0a81cb1a1ee3ed5f92c00e6a34d4891ffac895177d5ccd268eece9

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 112.8 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 5b69636fd8597880b2ad4bf57a5fa71b938763402c20e1b35bdae93a9cbd716d
MD5 ba1479fb4a8c331aeb7c6b03c1905315
BLAKE2b-256 224aeaf354ff2edcbfe1093622617ac1a13f767ea4d8a9115eb01f5dc23e84c5

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8d031a5bcf5137ce0191c6b211de420da8cc09ccf47888cad58d910face2abc6
MD5 53313599216f8f66e87bb10b44dc787a
BLAKE2b-256 1470d4225d1ccb1c7d4f6c162029abcd1ef8100d9c9ff2e751927691c72fa1b4

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 655aae0f6a2151597a5f183ccc9987245df572fe23eb7f2b4f9f08112dad3cd8
MD5 42259f8cc15ff3528b161f08fe4cd480
BLAKE2b-256 258847cdcfd5615d52b570d38cbf6747fdc73a6beeeb5aed728e3a9c7c4708d8

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed52aefcde6da67625f11fa61a5773e4373e09ad40bd694805bc99824ca4b8b2
MD5 6d298e45c8dbb3a64c1e874e83cea926
BLAKE2b-256 a909118fcbbfda7bd83f45a65351d73f83932c6e27f9b2b3252772f926d34c1c

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 120.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 07c44a93421e636fa9644d0a77c869c3266877fdfa0aaaa445e7d373ef183c06
MD5 0db1ddfab675f5fda3c753d076050f1d
BLAKE2b-256 e356f400491d247ecd71337ed4ca38249a46c3800465db13d6af0155c9157161

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 112.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 61664c38b04a560b1f61e260c0bbcf118423efa28830b860aaf099d4049b1345
MD5 31777c7d6bab04e1db7568efe5d5fede
BLAKE2b-256 b1b77145fa3f30025c755028d6e21d9e759b9941440dabf3a8bf60da227b48b7

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ca7a5e24e7c0313332338dab9eeb3d365a1e1b3c8cabde50d342a169f9fa3095
MD5 1dd704cebe3d59d9e932a4d479f3c394
BLAKE2b-256 59851cf0bebb57288ed05a0f6cdda984edd62a40ba1f67a2b52e6f06eaabe369

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e93756ba36711dcd8a84e40854ff72cb9e568d971752dd143a642b49977498e9
MD5 eaf5b26ece8c9908a082354ef15623c1
BLAKE2b-256 7e9f676aa110ea9d78b993539a3f3c527263d070c2263f64917374cdbc043cb7

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfea2d8878c8d467fb627c97920853687e7cd4db18e2189c5110ef462f46eb4e
MD5 41367dcc0fc74f07b57ac015d73d3e5a
BLAKE2b-256 188fe37cd1552cd9556eb2218577ec5182519722e7091081a04983cf66c71179

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 119.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d89b991610de6c1380ba42153fbab7a1294266fa2ac12021bce90e731a8b78ed
MD5 48148da42471776337abdac50f2a67c7
BLAKE2b-256 b40dbf4db63a45d068fe07a2278877355810f4e1d0e2d3c74d4f5b226ef5cfb4

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 111.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 510eae51b03d178fc284e5577dc6c2c435be6fb1d26be24affaa6c1811cdb45f
MD5 b99df5569d9f6ae4b449d6a3b177a083
BLAKE2b-256 23d99b7926f919859201bd8bacac388d7bece720fb46b952b45e7dee9e25e2f0

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 22e48311edc794afc5f19de223f164879527457fb4c3f5f3448d5448b14c5eb1
MD5 fe38c5f5f70cbcda1fcd6f0e51c69f44
BLAKE2b-256 40278b75229db82d5d8fca4979270236cacbf1e5404b5c7ba929945f9920d7cc

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 299dbc08b838b4dbe468c06d921dd6b4c45a76bf47780d9b48e05fc4500a1919
MD5 ac56a1460dfd9e53898c5915d6dc30ae
BLAKE2b-256 3008c4e2f5c6499a03778ee9de29f3da25418d4d0caf5628d89a384287d9f7dd

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d73453d343f756560223d9332477d9894c580af3e5bd5385c987dd3d3faf0b41
MD5 d825ba6ce68825cb47b50ccd8b51abfc
BLAKE2b-256 e4df54140ff4d433f20d41caeecd8b672d6da882255c07e1d35350480c8ce8d5

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 120.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6dd4f7cd1ace075ef66b222e8e6a9af8600011f4e847b482fa94bfa40a553c73
MD5 635b61b9a8b2817e2e4bc72339c605a0
BLAKE2b-256 e138e53da62494d236feda1f30642d7040014d83a1a33c6aae9ea36c8915f2b6

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp39-cp39-win32.whl.

File metadata

  • Download URL: cynes-0.1.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 111.2 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 d491a83a92ac46a5063f68fd078219e2906da66b38adc398c170549b383155b9
MD5 9b1f05f086a594336a2898c7fdb3a6ee
BLAKE2b-256 b9b5d60804a1f8ac81d1a59f9efe3e408cdee773150e73bba58c50f426e68539

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ca95203588cd3934c5be5c8e572cbfc526754730df4e15c2885d7c22148cb80
MD5 02b2e6dfeae2816d688b1f5886452b40
BLAKE2b-256 48632e792915953c762c2eede3e029d8ea8ee87d50d1c517d976743d69510ea0

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cynes-0.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 99764553de958c6b8bb42d43952cecb1f64beb17094b57f5cedf7fc616ba2574
MD5 5f21c3688dc17d123039046716a0056e
BLAKE2b-256 adb25f123c359d30d2338689551caf996ada0719d59877e7a93fc453730e781d

See more details on using hashes here.

File details

Details for the file cynes-0.1.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cynes-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 116.9 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cynes-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6c20de7edd3f3f59a522747e039b190168c6a3b910b43775bf989ad1e4e2bdf
MD5 d28dbc8d9b6a1906165596a52139f94b
BLAKE2b-256 51843d9c73c0105fd71e97cc73f110dd049ca945b4413c62a536aa9d4722514f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page