Skip to main content

A Python wrapper for the FAPEC data compressor.

Project description

FaPyc

A Python wrapper for the FAPEC data compressor. (C) DAPCOM Data Services S.L. - https://www.dapcom.es

The full FAPEC compression and decompression library is included in this package, but a valid license file must be available to properly use it. Without a license, you can still use the decompressor (yet with some limitations, such as the maximum number of threads, the recovery of corrupted files, or the decompression of just one part of a multi-part archive). You can get free evaluation licenses at https://www.dapcom.es/get-fapec/ to test the compressor. For full licenses, please contact us at fapec@dapcom.es Once a valid license is obtained (either full or evaluation), you must define a FAPEC_HOME environment variable pointing to the path where you have stored your fapeclic.dat license file.

Usage

There are 3 main execution modes:

  • File: When invoking Fapyc or Unfapyc on a filename, it will (de)compress it directly into another file.
  • Buffer: You can load the whole file to (de)compress on e.g. a byte array, and then invoke Fapyc/Unfapyc which will leave the result in the output buffer. Obviously, you should be careful with large files, as it may use a lot of RAM.
  • File-to-buffer decompression: You can directly decompress a file (without having to load it beforehand) and leave its decompressed output in a buffer, which you can use afterwards.
  • Chunk: FAPEC internally works in 'chunks' of data, typically 1-8 MB each (and up to 384MB each), which allows to progressively (de)compress a huge file while keeping memory usage under control. For now, this feature is only available in the FAPEC CLI, in WinFAPEC and in the C API, not in Fapyc/Unfapyc yet.

Examples

Compress and decompress a file

In this example we use the kmall option of FAPEC, suitable for this kind of geomaritime data files from Kongsberg Maritime:

from fapyc import Fapyc, Unfapyc, FapecLicense

filename = input("Path to KMALL file: ")

# Here we invoke FAPEC to directly run on files,
# so the memory usage will be small (just 10MB or so)
# although it won't allow us to directly access the
# (de)compressed buffers.
f = Fapyc(filename, chunksize = 2048576, blen = 512)
# Check that we have a valid license
lt = f.fapyc_get_lic_type()
if lt >= 0:
    ln = FapecLicense(lt).name
    lo = f.fapyc_get_lic_owner()
    print("FAPEC",ln,"license granted to",lo)
    f.compress_kmall()
    # Let's now decompress it, as a check
    print("Preparing to decompress %s" % (filename + ".fapec"))
    uf = Unfapyc(filename + ".fapec")
    uf.decompress(output=filename+".dec")
else:
    print("No valid license found")

Decompress an image into a buffer and show it

With this example we can view a colour image compressed with FAPEC:

from fapyc import Unfapyc
import numpy as np
from matplotlib import pyplot as plt

filename = input("Path to FAPEC-compressed 8-bit RGB image file: ")

# Decompress the file into a byte array buffer
uf = Unfapyc(filename = filename)

# Get the image features - assuming part index 0 (OK for a single-part archive; otherwise, we're simply taking the first part)
cmpOpts = uf.fapyc_get_part_cmpopts(0)

# Get the compression algorithm, which should be CILLIC, DWT or HPA for an image
algo = cmpOpts['algorithm'].decode('utf-8')
if algo != 'CILLIC' and algo != 'DWT' and algo != 'HPA':
    raise Exception("Not an image")
else:
    print("Found image compressed with the",algo,"algorithm")

# Get the image features we need
w = cmpOpts['imageWidth']
h = cmpOpts['imageHeight']
bpp = cmpOpts['sampleBits']
bands = cmpOpts['nBands']
coding = cmpOpts['bandsCoding']
coding2text = ['BIP','BIL','BSQ']

# Do some check
if bpp != 8 or bands != 3 or coding != 0:
    raise Exception("This test needs 8-bit colour images (3 colour bands) in pixel-interleaved coding mode")
else:
    print("Image features:",w,"x",h,"pixels,",bpp,"bits per pixel,",bands,"colour bands,",coding2text[coding],"coding")

uf.decompress()
# Check consistency (image dimensions vs. buffer size)
if len(uf.outputBuffer) != 3*w*h:
    print("Image dimensions inconsistent with file contents!")
else:
    # Reshape this one-dimensional array into a three-dimensional array (height, width, colours) to plot it
    ima = np.reshape(np.frombuffer(uf.outputBuffer, dtype=np.dtype('u1')), (h, w, 3))
    plt.imshow(ima)
    plt.show()

Compress and decompress a buffer

In this example we use the tab option of FAPEC, which typically outperforms gzip and bzip2 on tabulated text/numerical data such as point clouds or certain scientific data files:

from fapyc import Fapyc, Unfapyc

filename = input("Path to file: ")
file = open(filename, "rb")
# Beware - Load the whole file to memory
data = file.read()
f = Fapyc(buffer = data)
# Use 2 threads
f.fapyc_set_nthreads(2)
# Invoke our tabulated-text compression algorithm
# indicating a comma separator
f.compress_tabtxt(sep1=',')
print("Ratio =", round(float(len(data))/len(f.outputBuffer), 4))

# Now we decompress the buffer into another buffer
uf = Unfapyc(buffer = f.outputBuffer)
uf.fapyc_set_useropts(0, 3, 0, 0, 0)
uf.decompress()
print("Decompressed size:", len(uf.outputBuffer))

Decompress a file into a buffer, and do some operations on it

Here we provide a quite specific use case, based on the ESA/DPAC Gaia DR3 bulk catalogue (which is publicly available as FAPEC-compressed CSVs). In this example, we decompress two of the files, and while getting their CSV-formatted contents with Pandas we filter the contents according to some conditions, and generate some plots. This is just to illustrate how you can directly work on several compressed files. Note that it may require quite a lot of RAM, perhaps 4GB. You may need to install pyqt5 with pip.

from fapyc import Unfapyc
from io import BytesIO
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors
import gc

filename = input("Path to GaiaDR3 csv.fapec file: ")
filename2 = input("Path to another GaiaDR3 csv.fapec file: ")

### Option 1: open the file, load it to memory (beware!), and decompress the buffer; it would be like this:
#file = open(filename, "rb")
#data = file.read()
#uf = Unfapyc(buffer = data)

### Option 2: directly decompress from the file into a buffer:
uf = Unfapyc(filename = filename)

# Here we'll use a verbose mode to see the decompression progress
uf.fapyc_set_useropts(2, 3, 0, 0, 0)
uf.fapyc_set_nthreads(2)
# Invoke decompressor
uf.decompress()

# Define our query (filter):
myq = "ra_error < 0.1 & dec_error < 0.1 & ruwe > 0.5 & ruwe < 2"

# Regenerate the CSV from the bytes buffer
print("Decoding and filtering CSV...")
df = pd.read_csv(BytesIO(uf.outputBuffer), comment="#").query(myq)

# Repeat for the 2nd file
uf = Unfapyc(filename = filename2)
uf.fapyc_set_useropts(2, 3, 0, 0, 0)
uf.fapyc_set_nthreads(2)
uf.decompress()
print("Decoding, filtering and joining CSV...")
df = pd.concat([df, pd.read_csv(BytesIO(uf.outputBuffer), comment="#").query(myq)])
# Remove NaNs and nulls from these two columns
df = df[np.isfinite(df['bp_rp'])]
df = df[np.isfinite(df['phot_g_mean_mag'])]
# Delete Unfapyc and force garbage collection, to try to free some memory
del uf
gc.collect()

print("Info from the filtered CSVs:")
print(df.info())

# Prepare some nice histograms for all data
plt.subplot(2,2,1)
plt.title("Skymap (%d sources)" % df.shape[0])
plt.xlabel("RA")
plt.ylabel("DEC")
print("Getting 2D histogram...")
plt.hist2d(df.ra, df.dec, bins=(200, 200), cmap=plt.cm.jet)
plt.colorbar()

plt.subplot(2,2,2)
plt.title("G-mag distribution")
plt.xlabel("G magnitude")
plt.ylabel("Counts")
plt.yscale("log")
print("Getting histogram...")
plt.hist(df.phot_g_mean_mag, bins=(100))

plt.subplot(2,2,3)
plt.title("Colour-Magnitude Diagram")
plt.xlabel("BP-RP")
plt.ylabel("G")
print("Getting 2D histogram...")
plt.hist2d(df.bp_rp, df.phot_g_mean_mag, bins=(100, 100), norm = colors.LogNorm(), cmap=plt.cm.jet)
plt.colorbar()

plt.subplot(2,2,4)
plt.title("Parallax error distribution")
plt.xlabel("G magnitude")
plt.ylabel("Parallax error")
print("Getting 2D histogram...")
plt.hist2d(df.phot_g_mean_mag, df.parallax_error, bins=(100, 100), norm = colors.LogNorm(), cmap=plt.cm.jet)

print("Plotting...")
plt.show()

Compress file with a logger

In this example, the user can provide a Python logger to get an information message from Fapyc, like if any error occurs.

import logging
from fapyc import Fapyc, Unfapyc

filename = input("Path to the file to compress: ")
logger_file = 'fapyc.log'
logger = logging.getLogger(__name__)
logging.basicConfig(filename=logger_file, filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logger.setLevel(logging.DEBUG)


file = open(filename, "rb")
data = file.read()
file.close()


f = Fapyc(filename = filename, logger = logger)
f.compress_doubles(output = "a.fapec")

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

fapyc-0.5.0-cp312-cp312-win_amd64.whl (830.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

fapyc-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl (555.3 kB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

fapyc-0.5.0-cp312-cp312-macosx_13_0_arm64.whl (506.0 kB view details)

Uploaded CPython 3.12 macOS 13.0+ ARM64

fapyc-0.5.0-cp311-cp311-win_amd64.whl (832.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

fapyc-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl (557.8 kB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

fapyc-0.5.0-cp311-cp311-macosx_13_0_arm64.whl (506.0 kB view details)

Uploaded CPython 3.11 macOS 13.0+ ARM64

fapyc-0.5.0-cp310-cp310-win_amd64.whl (832.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

fapyc-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl (557.3 kB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

fapyc-0.5.0-cp310-cp310-macosx_13_0_arm64.whl (505.5 kB view details)

Uploaded CPython 3.10 macOS 13.0+ ARM64

fapyc-0.5.0-cp39-cp39-win_amd64.whl (840.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

fapyc-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp39-cp39-macosx_13_0_x86_64.whl (558.0 kB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

fapyc-0.5.0-cp39-cp39-macosx_13_0_arm64.whl (506.1 kB view details)

Uploaded CPython 3.9 macOS 13.0+ ARM64

fapyc-0.5.0-cp38-cp38-win_amd64.whl (840.3 kB view details)

Uploaded CPython 3.8 Windows x86-64

fapyc-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp38-cp38-macosx_13_0_x86_64.whl (558.2 kB view details)

Uploaded CPython 3.8 macOS 13.0+ x86-64

fapyc-0.5.0-cp38-cp38-macosx_13_0_arm64.whl (506.4 kB view details)

Uploaded CPython 3.8 macOS 13.0+ ARM64

fapyc-0.5.0-cp37-cp37m-win_amd64.whl (839.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

fapyc-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (997.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp37-cp37m-macosx_13_0_x86_64.whl (557.0 kB view details)

Uploaded CPython 3.7m macOS 13.0+ x86-64

fapyc-0.5.0-cp37-cp37m-macosx_13_0_arm64.whl (504.8 kB view details)

Uploaded CPython 3.7m macOS 13.0+ ARM64

fapyc-0.5.0-cp36-cp36m-win_amd64.whl (842.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

fapyc-0.5.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (977.5 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

fapyc-0.5.0-cp36-cp36m-macosx_13_0_x86_64.whl (552.3 kB view details)

Uploaded CPython 3.6m macOS 13.0+ x86-64

fapyc-0.5.0-cp36-cp36m-macosx_13_0_arm64.whl (500.8 kB view details)

Uploaded CPython 3.6m macOS 13.0+ ARM64

File details

Details for the file fapyc-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 830.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 79dbb06183373847f8a578ab085f93d47db9da237869845f00d3718230f35a18
MD5 4901561f123e186a769b1ee53cdd3e5b
BLAKE2b-256 ae961cd01eba53b3fdc649010e4df57c2da619e8c3a993174a638577de93a4ea

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7c76cafdf194ac2be2cf0b17de085e48f72f16a70b32d84ff8ff4554c60d045
MD5 e69b372863e42a248abc9ef198c59e74
BLAKE2b-256 557933376ccecf0aaf45439dd547671380cd9d93209315f34d24c44e18cbc718

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f2899596eb70a82104aa209b8ccefe06ae5b28856c2ff3610b42a2677bf91fb6
MD5 6903326da585f2ae7b69af08f2ab5495
BLAKE2b-256 ecf5ebd2f2cbd9baa69222656a25723f0deda32db7d7678b4ca2e2a97d176a5f

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b6c4c394960edef91bf10a249d6db020085d44c5ec9d6de43b2b073c81948876
MD5 1f47e256aabd22f4996a608f7bc2aa9f
BLAKE2b-256 c81d4b1b6621b5560beb4e792f00f4e5f1b326de690699a03f0c6c080ce4980b

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 832.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3896d9f96e670dd7b4b76cdeb30e4671b68bfe4b434e65bfb090ff4a56332169
MD5 2fb08832fc4e81823f2d5fc59993bde3
BLAKE2b-256 04012be3d87283a2282d472d93e848b06184d60dad5df13d100972d8d3b75011

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 265cf750ad362b5b94465e819ee40c7dfc880a4fcd3efd733c3fece487007754
MD5 6270f8e8f64fd28e17de38030b69f9ff
BLAKE2b-256 7d14396f99086791d22d2e5ff7320de1f4ef49f7bd9502f0c588e1a1c6d729c0

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b3390146fc1290668b2468d3ddf1eb5ff497cac734d67a4164c17d521e7c1f6f
MD5 c4f1d772b778170d6267bc01afb9524a
BLAKE2b-256 9d117456be40f1b9a31f39b02f1b7b0b6a3ec1402749f31704829cd0f25d6ee0

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4010e5400abc6cbbfa56066358e1930b107eb1fb63ed7ec9f60952f151c3caa6
MD5 6dd1a4baf68d4ae20741421af78a3f22
BLAKE2b-256 c28e29c3a7ddab9c372a1605b85326b29e308ba49fcd9029987283b13f535abf

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 832.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 841485e86a68aea078ed82799026e4705be746b8b84a8bc8662a8e60ba4ae045
MD5 2042139d65555f5e4e39f975f6241fe9
BLAKE2b-256 6630ae4737f982ae3cb915ddbc2ca6cba8b735d9f65f7fd7c8f607c7559482a4

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd2d87820d36f22f6ad1535111449b54e92c75b1386b271a9d1a79940ddf538f
MD5 9ee533328b78b08ebb892980be1603b5
BLAKE2b-256 5eca27c4eb9a936a9193a8a3452f9efb9a9cbbe7314d25110906ecf613ed244c

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3ce638ff576a7db33bb822462240ce3721327fc114365adbf503cc08ec019683
MD5 0963f689eddd8be375133badc5ea7c8a
BLAKE2b-256 93378348a1d53375a8a3247a338dda49ba9fb612bca78f60791da7b8387b72eb

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c8a75caeeda355c40da5b10212498b5a584635df0a2c2669b657ab22b2a8374c
MD5 30a64f7c18984967c1cadf2db6a910e1
BLAKE2b-256 cd6fa5cdac4915beed4f483c387af3eb890c4a9634a0b24de8a43c658b8919a5

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 840.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f93d704e1e7d91cdf65a26d2935fa25b2f03b2cc2eeb41d664acac8f7e8365e1
MD5 24bd3bb75fb7545ec0ebf82659e49507
BLAKE2b-256 b94ce04d3a9e44e8fdf81e3f6af318f0e217c831bbeeac441ba36218e79e53eb

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 693567e2d031d60aff5436b023bac6c601c603764cf05b1a3f2caabf3c070eb8
MD5 cce73265136976791007adbe2dd4950c
BLAKE2b-256 392430b2dc0d20255ebafcb40ed12d83d4c432f0c0d37fe09c8b61f873829a16

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a070082714e523f3582159dcb0a9ef1e5461cb2838f97760d5a6ff003693976d
MD5 c5bc01c936a5b82d7a4848aff17994bd
BLAKE2b-256 b9e1d9149f21c9132c5044f62dcb6b8ac7e207c6b605c7368df34c9362683c0b

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dd7fe2d72c1140b862dafc511455f91cf6ac8f3f50bc2fe0d79d21b127baf00a
MD5 2bff06400e1c6da9dbf44f25848a5d6d
BLAKE2b-256 531f51006e899cc1afe4c573c394ba97db06f529251f5af3014570078c1546f4

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 840.3 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 794c79eeb67996629ae0e15851613695459fab877fe61d390ff9bbd4be84cf15
MD5 caf0f1b9b1a6bb1a2fe7abad20e635f8
BLAKE2b-256 c2a5fb1706b55a38fa020e5f8a1fd37ff667acbcec3530fedd9785c0fab3be43

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a899d3bd710beca670e25f1f6479f3af88c45e3278233165f909b5eca3f3098
MD5 2631041968c31bddda250446b8ce4c70
BLAKE2b-256 1e201f677a9868024d53a1e2e37d7e3f3f1e7d624c68acfe68906852d6f0f9d2

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp38-cp38-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp38-cp38-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d6395461696191d4d159e379ec7bc6f84656ba581853d903076b2e2362b80f92
MD5 cf2d1202e000de3d7640662f42008d89
BLAKE2b-256 8a60c43ce304bdb8fd635ae0885002b3f1036e91dab831afb79bcc4f3a294b48

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp38-cp38-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp38-cp38-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 59b6572924bf7a5db9923ab11d0041cf9a2e6d141b5a98f3f47b02bde9bf629d
MD5 c38ce95526e27b50cec011461e9a3327
BLAKE2b-256 122158f76f7ea8e1b71473bddc5e0523aecc450d8686ce2b3463db800ffdd1b5

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 839.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 416a026ba7bcbc853d8d3ec0ddee8d5439b0af40591299c65bec352a8a4c2205
MD5 c6888cf5a2dbfefb89ad065972d02aac
BLAKE2b-256 45bc1c9fd295c4e7fbca825c9def93ee6733127c66697321094649d93d31a3af

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ada9effbda4cb32faf74f489a48c82ace8aa009edea1d9eaa073779b23c14479
MD5 5c4e01728b54e591e5b4d3325cd85f11
BLAKE2b-256 1278263bd816a80dba48922be62759645d3a803a5c1ce8b7930b84bc74f3672b

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp37-cp37m-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp37-cp37m-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 608435eb87323f1e1001b26cd841aa9b5d82aaaf5061adc4fbc2fb9eb19a341e
MD5 de469491d38be0e25db72df8a3242084
BLAKE2b-256 66f7f765a4af3fef3b0e875d4ef9eeada1f174fc43f94aefa95935a509f94c27

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp37-cp37m-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp37-cp37m-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5435940cc8201a2e40894e299527ecd817f36f043627f7139b922d80172d7310
MD5 8f6dd8d813aa18e0c5719a742045d938
BLAKE2b-256 a8a3d00b293ebef13357c0f4b6625c3aaa3f46165db7b46d3166197b24ab8c62

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: fapyc-0.5.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 842.9 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0

File hashes

Hashes for fapyc-0.5.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 1e05d62282c0ebb83eb003f00544cd3950813f24808458da6b7753a16e48e140
MD5 be54b1bc2e76868e51ebc94ced348b41
BLAKE2b-256 5f0e2dfd7795bd7be32adf0198545608153119eb1a87b801eb6a05d8a31e501a

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 817df33d3d455ff8d1c3acf99c509f30bc74af7e2372c3f44cf1711a6e3a1bcf
MD5 24884735d350869b56a223222c21e945
BLAKE2b-256 15004393b0c8adcf69c30ad35637d5e70ecb68288926d8e3d7b877cdb649ac69

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp36-cp36m-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp36-cp36m-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3b70d46ae2ee8b80645caba2118fa0fd908f1ededc2fdcb58f6b3cd6a6878073
MD5 67c3dfba1b3c6fd09e2304895b56b823
BLAKE2b-256 36cfb62149916bc54887276e4dca0a8eefd5dc5dba1e068bc03d72931cee4438

See more details on using hashes here.

File details

Details for the file fapyc-0.5.0-cp36-cp36m-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for fapyc-0.5.0-cp36-cp36m-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2ea4833324849025e010f59ce5253f53fdb5fb13f03bc7a36e889d32fb9dfa6a
MD5 67c2aebf9abab43b925d6b798b5ea72e
BLAKE2b-256 e7b706c929b8719b261fffb45f1fefacf5bf4bf2617d3686a19dacfaa6f04cb2

See more details on using hashes here.

Supported by

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