Skip to main content

A full featured python library to read from and write to FITS files.

Project description

A python library to read from and write to FITS files.

Build Status (master) tests

Description

This is a python extension written in c and python. Data are read into numerical python arrays.

A version of cfitsio is bundled with this package, there is no need to install your own, nor will this conflict with a version you have installed.

Some Features

  • Read from and write to image, binary, and ascii table extensions.
  • Read arbitrary subsets of table columns and rows without loading all the data to memory.
  • Read image subsets without reading the whole image. Write subsets to existing images.
  • Write and read variable length table columns.
  • Read images and tables using slice notation similar to numpy arrays. This is like a more powerful memmap, since it is column-aware for tables.
  • Append rows to an existing table. Delete row sets and row ranges. Resize tables, or insert rows.
  • Query the columns and rows in a table.
  • Read and write header keywords.
  • Read and write images in tile-compressed format (RICE,GZIP,PLIO,HCOMPRESS).
  • Read/write gzip files directly. Read unix compress (.Z,.zip) and bzip2 (.bz2) files.
  • TDIM information is used to return array columns in the correct shape.
  • Write and read string table columns, including array columns of arbitrary shape.
  • Read and write complex, bool (logical), unsigned integer, signed bytes types.
  • Write checksums into the header and verify them.
  • Insert new columns into tables in-place.
  • Iterate over rows in a table. Data are buffered for efficiency.
  • python 3 support, including python 3 strings

Examples

import fitsio
from fitsio import FITS,FITSHDR

# Often you just want to quickly read or write data without bothering to
# create a FITS object.  In that case, you can use the read and write
# convienience functions.

# read all data from the first hdu that has data
filename='data.fits'
data = fitsio.read(filename)

# read a subset of rows and columns from a table
data = fitsio.read(filename, rows=[35,1001], columns=['x','y'], ext=2)

# read the header
h = fitsio.read_header(filename)
# read both data and header
data,h = fitsio.read(filename, header=True)

# open the file and write a new binary table extension with the data
# array, which is a numpy array with fields, or "recarray".

data = np.zeros(10, dtype=[('id','i8'),('ra','f8'),('dec','f8')])
fitsio.write(filename, data)

# Write an image to the same file. By default a new extension is
# added to the file.  use clobber=True to overwrite an existing file
# instead.  To append rows to an existing table, see below.

fitsio.write(filename, image)

#
# the FITS class gives the you the ability to explore the data, and gives
# more control
#

# open a FITS file for reading and explore
fits=fitsio.FITS('data.fits')

# see what is in here; the FITS object prints itself
print(fits)

file: data.fits
mode: READONLY
extnum hdutype         hduname
0      IMAGE_HDU
1      BINARY_TBL      mytable

# at the python or ipython prompt the fits object will
# print itself
>>> fits
file: data.fits
... etc

# explore the extensions, either by extension number or
# extension name if available
>>> fits[0]

file: data.fits
extension: 0
type: IMAGE_HDU
image info:
  data type: f8
  dims: [4096,2048]

# by name; can also use fits[1]
>>> fits['mytable']

file: data.fits
extension: 1
type: BINARY_TBL
extname: mytable
rows: 4328342
column info:
  i1scalar            u1
  f                   f4
  fvec                f4  array[2]
  darr                f8  array[3,2]
  dvarr               f8  varray[10]
  s                   S5
  svec                S6  array[3]
  svar                S0  vstring[8]
  sarr                S2  array[4,3]

# See bottom for how to get more information for an extension

# [-1] to refers the last HDU
>>> fits[-1]
...

# if there are multiple HDUs with the same name, and an EXTVER
# is set, you can use it.  Here extver=2
#    fits['mytable',2]


# read the image from extension zero
img = fits[0].read()
img = fits[0][:,:]

# read a subset of the image without reading the whole image
img = fits[0][25:35, 45:55]


# read all rows and columns from a binary table extension
data = fits[1].read()
data = fits['mytable'].read()
data = fits[1][:]

# read a subset of rows and columns. By default uses a case-insensitive
# match. The result retains the names with original case.  If columns is a
# sequence, a numpy array with fields, or recarray is returned
data = fits[1].read(rows=[1,5], columns=['index','x','y'])

# Similar but using slice notation
# row subsets
data = fits[1][10:20]
data = fits[1][10:20:2]
data = fits[1][[1,5,18]]

# Using EXTNAME and EXTVER values
data = fits['SCI',2][10:20]

# Slicing with reverse (flipped) striding
data = fits[1][40:25]
data = fits[1][40:25:-5]

# all rows of column 'x'
data = fits[1]['x'][:]

# Read a few columns at once. This is more efficient than separate read for
# each column
data = fits[1]['x','y'][:]

# General column and row subsets.
columns=['index','x','y']
rows = [1, 5]
data = fits[1][columns][rows]

# data are returned in the order requested by the user
# and duplicates are preserved
rows = [2, 2, 5]
data = fits[1][columns][rows]

# iterate over rows in a table hdu
# faster if we buffer some rows, let's buffer 1000 at a time
fits=fitsio.FITS(filename,iter_row_buffer=1000)
for row in fits[1]:
    print(row)

# iterate over HDUs in a FITS object
for hdu in fits:
    data=hdu.read()

# Note dvarr shows type varray[10] and svar shows type vstring[8]. These
# are variable length columns and the number specified is the maximum size.
# By default they are read into fixed-length fields in the output array.
# You can over-ride this by constructing the FITS object with the vstorage
# keyword or specifying vstorage when reading.  Sending vstorage='object'
# will store the data in variable size object fields to save memory; the
# default is vstorage='fixed'.  Object fields can also be written out to a
# new FITS file as variable length to save disk space.

fits = fitsio.FITS(filename,vstorage='object')
# OR
data = fits[1].read(vstorage='object')
print(data['dvarr'].dtype)
    dtype('object')


# you can grab a FITS HDU object to simplify notation
hdu1 = fits[1]
data = hdu1['x','y'][35:50]

# get rows that satisfy the input expression.  See "Row Filtering
# Specification" in the cfitsio manual (note no temporary table is
# created in this case, contrary to the cfitsio docs)
w=fits[1].where("x > 0.25 && y < 35.0")
data = fits[1][w]

# read the header
h = fits[0].read_header()
print(h['BITPIX'])
    -64

fits.close()


# now write some data
fits = FITS('test.fits','rw')


# create a rec array.  Note vstr
# is a variable length string
nrows=35
data = np.zeros(nrows, dtype=[('index','i4'),('vstr','O'),('x','f8'),
                              ('arr','f4',(3,4))])
data['index'] = np.arange(nrows,dtype='i4')
data['x'] = np.random.random(nrows)
data['vstr'] = [str(i) for i in xrange(nrows)]
data['arr'] = np.arange(nrows*3*4,dtype='f4').reshape(nrows,3,4)

# create a new table extension and write the data
fits.write(data)

# can also be a list of ordinary arrays if you send the names
array_list=[xarray,yarray,namearray]
names=['x','y','name']
fits.write(array_list, names=names)

# similarly a dict of arrays
fits.write(dict_of_arrays)
fits.write(dict_of_arrays, names=names) # control name order

# append more rows to the table.  The fields in data2 should match columns
# in the table.  missing columns will be filled with zeros
fits[-1].append(data2)

# insert a new column into a table
fits[-1].insert_column('newcol', data)

# insert with a specific colnum
fits[-1].insert_column('newcol', data, colnum=2)

# overwrite rows
fits[-1].write(data)

# overwrite starting at a particular row. The table will grow if needed
fits[-1].write(data, firstrow=350)


# create an image
img=np.arange(2*3,dtype='i4').reshape(2,3)

# write an image in a new HDU (if this is a new file, the primary HDU)
fits.write(img)

# write an image with rice compression
fits.write(img, compress='rice')

# control the compression
fimg=np.random.normal(size=2*3).reshape(2, 3)
fits.write(img, compress='rice', qlevel=16, qmethod='SUBTRACTIVE_DITHER_2')

# lossless gzip compression for integers or floating point
fits.write(img, compress='gzip', qlevel=None)
fits.write(fimg, compress='gzip', qlevel=None)

# overwrite the image
fits[ext].write(img2)

# write into an existing image, starting at the location [300,400]
# the image will be expanded if needed
fits[ext].write(img3, start=[300,400])

# change the shape of the image on disk
fits[ext].reshape([250,100])

# add checksums for the data
fits[-1].write_checksum()

# can later verify data integridy
fits[-1].verify_checksum()

# you can also write a header at the same time.  The header can be
#   - a simple dict (no comments)
#   - a list of dicts with 'name','value','comment' fields
#   - a FITSHDR object

hdict = {'somekey': 35, 'location': 'kitt peak'}
fits.write(data, header=hdict)
hlist = [{'name':'observer', 'value':'ES', 'comment':'who'},
         {'name':'location','value':'CTIO'},
         {'name':'photometric','value':True}]
fits.write(data, header=hlist)
hdr=FITSHDR(hlist)
fits.write(data, header=hdr)

# you can add individual keys to an existing HDU
fits[1].write_key(name, value, comment="my comment")

# Write multiple header keys to an existing HDU. Here records
# is the same as sent with header= above
fits[1].write_keys(records)

# write special COMMENT fields
fits[1].write_comment("observer JS")
fits[1].write_comment("we had good weather")

# write special history fields
fits[1].write_history("processed with software X")
fits[1].write_history("re-processed with software Y")

fits.close()

# using a context, the file is closed automatically after leaving the block
with FITS('path/to/file') as fits:
    data = fits[ext].read()

    # you can check if a header exists using "in":
    if 'blah' in fits:
        data=fits['blah'].read()
    if 2 in f:
        data=fits[2].read()

# methods to get more information about extension.  For extension 1:
f[1].get_info()             # lots of info about the extension
f[1].has_data()             # returns True if data is present in extension
f[1].get_extname()
f[1].get_extver()
f[1].get_extnum()           # return zero-offset extension number
f[1].get_exttype()          # 'BINARY_TBL' or 'ASCII_TBL' or 'IMAGE_HDU'
f[1].get_offsets()          # byte offsets (header_start, data_start, data_end)
f[1].is_compressed()        # for images. True if tile-compressed
f[1].get_colnames()         # for tables
f[1].get_colname(colnum)    # for tables find the name from column number
f[1].get_nrows()            # for tables
f[1].get_rec_dtype()        # for tables
f[1].get_rec_column_descr() # for tables
f[1].get_vstorage()         # for tables, storage mechanism for variable
                            # length columns

# public attributes you can feel free to change as needed
f[1].lower           # If True, lower case colnames on output
f[1].upper           # If True, upper case colnames on output
f[1].case_sensitive  # if True, names are matched case sensitive

Installation

The easiest way is using pip or conda. To get the latest release

pip install fitsio

# update fitsio (and everything else)
pip install fitsio --upgrade

# if pip refuses to update to a newer version
pip install fitsio --upgrade --ignore-installed

# if you only want to upgrade fitsio
pip install fitsio --no-deps --upgrade --ignore-installed

# for conda, use conda-forge
conda install -c conda-forge fitsio

You can also get the latest source tarball release from

https://pypi.python.org/pypi/fitsio

or the bleeding edge source from github or use git. To check out the code for the first time

git clone https://github.com/esheldon/fitsio.git

Or at a later time to update to the latest

cd fitsio
git update

Use tar xvfz to untar the file, enter the fitsio directory and type

python setup.py install

optionally with a prefix

python setup.py install --prefix=/some/path

Requirements

  • python 2 or python 3
  • a C compiler and build tools like make, patch, etc.
  • numpy (See the note below. Generally, numpy 1.11 or later is better.)

Do not use numpy 1.10.0 or 1.10.1

There is a serious performance regression in numpy 1.10 that results in fitsio running tens to hundreds of times slower. A fix may be forthcoming in a later release. Please comment here if this has already impacted your work https://github.com/numpy/numpy/issues/6467

Tests

The unit tests should all pass for full support.

pytest fitsio

Some tests may fail if certain libraries are not available, such as bzip2. This failure only implies that bzipped files cannot be read, without affecting other functionality.

Notes on Usage and Features

cfitsio bundling

We bundle cfitsio partly because many deployed versions of cfitsio in the wild do not have support for interesting features like tiled image compression. Bundling a version that meets our needs is a safe alternative.

array ordering

Since numpy uses C order, FITS uses fortran order, we have to write the TDIM and image dimensions in reverse order, but write the data as is. Then we need to also reverse the dims as read from the header when creating the numpy dtype, but read as is.

distutils vs setuptools

As of version 1.0.0, fitsio has been transitioned to setuptools for packaging and installation. There are many reasons to do this (and to not do this). However, at a practical level, what this means for you is that you may have trouble uninstalling older versions with pip via pip uninstall fitsio. If you do, the best thing to do is to manually remove the files manually. See this stackoverflow question for example.

python 3 strings

As of version 1.0.0, fitsio now supports Python 3 strings natively. This support means that for Python 3, native strings are read from and written correctly to FITS files. All byte string columns are treated as ASCII-encoded unicode strings as well. For FITS files written with a previous version of fitsio, the data in Python 3 will now come back as a string and not a byte string. Note that this support is not the same as full unicode support. Internally, fitsio only supports the ASCII character set.

TODO

  • HDU groups: does anyone use these? If so open an issue!

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

fitsio-1.2.5.tar.gz (4.5 MB view details)

Uploaded Source

Built Distributions

fitsio-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl (853.9 kB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

fitsio-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (828.7 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

fitsio-1.2.5-cp313-cp313-macosx_14_0_arm64.whl (726.7 kB view details)

Uploaded CPython 3.13 macOS 14.0+ ARM64

fitsio-1.2.5-cp313-cp313-macosx_13_0_x86_64.whl (725.6 kB view details)

Uploaded CPython 3.13 macOS 13.0+ x86-64

fitsio-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl (853.8 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

fitsio-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (828.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fitsio-1.2.5-cp312-cp312-macosx_14_0_arm64.whl (726.7 kB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

fitsio-1.2.5-cp312-cp312-macosx_13_0_x86_64.whl (725.6 kB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

fitsio-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl (852.1 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

fitsio-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (827.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fitsio-1.2.5-cp311-cp311-macosx_14_0_arm64.whl (726.5 kB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

fitsio-1.2.5-cp311-cp311-macosx_13_0_x86_64.whl (725.4 kB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

fitsio-1.2.5-cp310-cp310-musllinux_1_2_x86_64.whl (851.7 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

fitsio-1.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (826.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fitsio-1.2.5-cp310-cp310-macosx_14_0_arm64.whl (726.5 kB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

fitsio-1.2.5-cp310-cp310-macosx_13_0_x86_64.whl (725.4 kB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

fitsio-1.2.5-cp39-cp39-musllinux_1_2_x86_64.whl (851.2 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

fitsio-1.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (825.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fitsio-1.2.5-cp39-cp39-macosx_14_0_arm64.whl (726.5 kB view details)

Uploaded CPython 3.9 macOS 14.0+ ARM64

fitsio-1.2.5-cp39-cp39-macosx_13_0_x86_64.whl (725.4 kB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

File details

Details for the file fitsio-1.2.5.tar.gz.

File metadata

  • Download URL: fitsio-1.2.5.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for fitsio-1.2.5.tar.gz
Algorithm Hash digest
SHA256 001e8689cf82229e19bc20e62494b1eba777aaca7471723ba67a4bac24fdd0d6
MD5 f82d9c08dd30e36843744d3836b16466
BLAKE2b-256 8e73b7b5b30c4eea97cff704df802327af237b3d5227756b5da94191a7955159

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18a2b15df5c6050436f45b5a32f183648593ad57cca9c323d1bac5745b5d9a16
MD5 3f5fe193d90cd55d1e6c79a7352b9ff0
BLAKE2b-256 69e3e52c5f601c1c4a101ac5cf67ec213949b1ff4141f40a33aeecff9c0f0836

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9475691c306e86358ad4e0f5c340e7653e7817809281614c8d3e2d0861d61739
MD5 8c43863207f8ef3063dd11b58b525235
BLAKE2b-256 ee54b4980c4ac40b0c6ade95565a6effac2366cd0c96fd5c62a86ef922bdd7b7

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 149ab0822d8d2314e026b06fbb87a0ff9276adc8be333b3801cde7651ee243f9
MD5 45dd4bb58f98ff6f77e158c62a1eb1e3
BLAKE2b-256 8bd4d842a26c163af13d47ca29aec355f77171a20246aa85af93dcd2936f3d03

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d9929be29326b6284e45dfa92969a094e1406a3ce17c832b27d46edcb868ea9e
MD5 65d6fc83b02c9c4cd8a556a718ade4c5
BLAKE2b-256 aa77ddd892938329496edc0dc9b5eb6e82abdb7a9bfc6889eabbf64ac63f277c

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ae4a38030e4902ee17e05dfda7b6d5c3d219debf46d352ac68c695c68068b278
MD5 8393ce1f921c1628dd70789884bdf351
BLAKE2b-256 27fcae02a3b6c1705f209b1735fbdd54a4e2d87940b4fbbf8e3898ae8768f771

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72b98039fe44af7278c7037b641911114f0c3d57a0783c5cb1e717b8b550f955
MD5 b5c7e0cb1fc77e6909f3083fef469cfb
BLAKE2b-256 130aa9c523dbeef9a746898972e9fba3a99471308d0822017037d080255f9f42

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 67590bb0fd207da882f051ffd3818f86930700a0c94938f0b6fa1e2d120acd01
MD5 1ecde4b22fc6e6daf6eb2c0133adb2fd
BLAKE2b-256 8808b0fb358e61995f0762694d782b7314862660e1e89bbf8f3b86bf5b912cea

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8b4becfdca7ce737d1191fbc78b2a2b1ce908fbc7e62bf6b3e31c1d4bf36d84a
MD5 cf0fc3976ffb3dec06aadcfde5f16cbc
BLAKE2b-256 70075fba1123f95c52afe30943daef97cd755b89843e4fd807830497dc904e61

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 30cec65aa78bf2d9cdf3ed313869e62954baf20c0490ddc53a3d59afd7f4164c
MD5 c17d95a3f26947d99370440ba1111e14
BLAKE2b-256 3b1464e9e0b9352fcac4a9a1698267ff60368de8f53f7b229747ec862d36d1bc

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31360003f6713e250ea6cdd356a94442b9b5275a495ec73049bdf91a16677fce
MD5 6d36578d6e00c864e4d4a8d823df9c54
BLAKE2b-256 37e46fdf942fce195efbd60912d85bb608cb58019dd5f814864e7c0a836c0246

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2cf86c7ca4b5a9783354bcbe11b89b5d0e784c94ad1c6b155fa95f166c93f28a
MD5 6bf405dc421a8c69fb47dc58c9b7cd3c
BLAKE2b-256 99ee843363c8820a3a7340f523328e16e46bbfab19d7490102a90c5d6145983f

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 984be90b6e651c162d8196d86ec15490f5cf0af42875a913959eceff58e99aa8
MD5 91690b65fc3701c346619364d1aecfa6
BLAKE2b-256 e66200f20ed8a267b3177f59475e716c7b269f7aae5c551c8670b6591028f672

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a1ea195e996a0073eb0b587e37f6e0fc80d1855e7e58316edac696b47241c24f
MD5 f307f5b887cbdf9351dd8fa74c09df1a
BLAKE2b-256 33c53df4b7d35e1cc805947a3d58d4455365af8bee08e92f0b7648fc447c55bb

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4301c0bd74a3576dbdabf44e096d81c045ad8e347a5cc5f230cb0405f7c0330f
MD5 bce789288a7a68f66063ba7bd0550257
BLAKE2b-256 8296294f3680635d2432f44197fd2b0b5e3830e452099cb32d26448f6337ecd2

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0cd2f98491042c21f74b53881e1054ffdacb3486d3f12518264d5d475a3264d7
MD5 4923ebf40f842bd557912b9b7071c377
BLAKE2b-256 27e876ab69debc0b9881cd5bcf776b3e8b8e3164eee484bde5f675e857757a6c

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 562ba1ec7f5240dfe6e9faf89f5e87cf893f7a43560ae64a1363047b3ed4546d
MD5 194719c5d64db9e18aa919d9ec3f5b9d
BLAKE2b-256 aa256731e059b8605e2fae3ff256c94bea8ced621d6161f695314460d9fbe751

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6eb3a15d2c615c1988211b5a854c97040251bb6292483e3e6e78ac48557a6c2e
MD5 7f5755b8e0b7ef7d9dc1177a1d69a8cb
BLAKE2b-256 629d67b5b8e3bd1fb9d5b463128285f4bdf4d65e6ba10bba5e1e83924e490233

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00b31a361a2d9b3a68367a44d41d483dd199a31207fdaadc8849cdf3746345c4
MD5 bb190381fc1a3509c1c9177c30bcc789
BLAKE2b-256 2838204dc9e65f61f58d46d5aeea727583eb9b4ef77a2c7dc863f5215d0022d4

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e5949463033ff8e32accf6fab5bf7992fb3371ea6d010f7bfe8619b4e2bf0c9b
MD5 d9257c275416902c5aa8473c149d2ef1
BLAKE2b-256 379ee1ed9dd7b7beeb61230aa521e262dc0da9376350bc0a91aa8262691d6283

See more details on using hashes here.

File details

Details for the file fitsio-1.2.5-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for fitsio-1.2.5-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f30805d7dc903d3880f464b96f01f5980b425203a8352a4def6ab8721d322f21
MD5 9c578247947bd72afdd8fabbd028fad3
BLAKE2b-256 4ba590e2a70afa3fb736c1a53deff8a8865178f95952369305950dae5b494ddc

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page