# PySAMOSA
![CI](https://github.com/floschl/pysamosa/actions/workflows/ci.yml/badge.svg)
![Release](https://github.com/floschl/pysamosa/actions/workflows/release.yml/badge.svg)
![PyPI](https://img.shields.io/pypi/v/pysamosa)
[![DOI](https://zenodo.org/badge/646028227.svg)](https://zenodo.org/badge/latestdoi/646028227)
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
![]() <div align="center"><img src="https://github.com/floschl/pysamosa/blob/main/resources/logo_name.png?raw=true"
width="500"></div>
PySAMOSA is a Python-based software for processing open ocean and coastal waveforms from SAR satellite
altimetry to measure sea surface heights, wave heights, and wind speed for the oceans and inland waters.
Satellite altimetry is a space-borne remote sensing technique used for Earth observation. More details on satellite
altimetry can be found [here](https://www.altimetry.info/file/Radar_Altimetry_Tutorial.pdf).
The process of extracting of the three geophysical parameters from the reflected echoes/waveforms is called retracking. The measured (noisy) waveforms are fitted against the open ocean power return echo waveform model SAMOSA2 [1,2].
In the coastal zone, the return echoes are affected by spurious signals from strongly reflective targets such as sand and mud banks, tidal flats, shipping platforms, sheltered bays, or calm waters close to the shoreline.
The following European Space Agency (ESA) satellite altimetry missions are supported:
- Sentinel-3 (S3)
- Sentinel-6 Michael Freilich (S6-MF)
The software retracks the waveforms, i.e. the Level-1b (L1b) data, to extract the
retracked variables SWH, range, and Pu.
The open ocean retracker implementation specification documents from the official EUMETSAT baseline are used (S3 [1],
S6-MF [2]).
For retracking coastal waveforms the following retrackers are implemented:
- SAMOSA+ [3]
- CORAL [4,5]
In addition, FF-SAR-processed S6-MF data can be retracked using the zero-Doppler beam of the SAMOSA2 model and a
specially adapted $\alpha_p$ LUT table, created by the ESA L2 GPP project [7]. The application of the FF-SAR-processed data
has been validated in [5].
Not validated (experimental) features:
- CryoSat-2 (CS2) support
- SAMOSA++ coastal retracker [2]
- Monte-carlo SAMOSA2 simulator
## Getting-started
### Usage
Install pysamosa into your environment
$ pip install pysamosa
This is the sample to retrack a single L1b file from the S6-MF mission
``` python
from pathlib import Path
import numpy as np
from pysamosa.common_types import L1bSourceType
from pysamosa.data_access import data_vars_s3, data_vars_s6
from pysamosa.retracker_processor import RetrackerProcessor
from pysamosa.settings_manager import get_default_base_settings, SettingsPreset
l1b_files = []
# l1b_files.append(Path('S6A_P4_1B_HR______20211120T051224_20211120T060836_20220430T212619_3372_038_018_009_EUM__REP_NT_F06.nc'))
l1b_files.append(Path.cwd().parent / '.data' / 's6' / 'l1b' / 'S6A_P4_1B_HR______20211120T051224_20211120T060836_20220430T212619_3372_038_018_009_EUM__REP_NT_F06.nc')
l1b_src_type = L1bSourceType.EUM_S6_F06
data_vars = data_vars_s6
# configure coastal CORAL retracker
pres = SettingsPreset.CORALv2
rp_sets, retrack_sets, fitting_sets, wf_sets, sensor_sets = get_default_base_settings(settings_preset=pres, l1b_src_type=l1b_src_type)
rp_sets.nc_dest_dir = l1b_files[0].parent / 'processed'
rp_sets.n_offset = 0
rp_sets.n_inds = 0 #0 means all
rp_sets.n_procs = 6 #use 6 cores in parallel
rp_sets.skip_if_exists = False
additional_nc_attrs = {
'L1B source type': l1b_src_type.value.upper(),
'Retracker preset': pres.value.upper(),
}
rp = RetrackerProcessor(l1b_source=l1b_files, l1b_data_vars=data_vars['l1b'],
rp_sets=rp_sets,
retrack_sets=retrack_sets,
fitting_sets=fitting_sets,
wf_sets=wf_sets,
sensor_sets=sensor_sets,
nc_attrs_kw=additional_nc_attrs,
bbox=[np.array([-29.05, -29.00, 0, 360])],
)
rp.process() #start processing
print(rp.output_l2) #retracked L2 output can be found in here
```
A running minimal working example for retracking is shown in `notebooks/retracking_example.ipynb`.
### Development
It is highly recommended to use a proper Python IDE, such as
[PyCharm Community](https://www.jetbrainscom/pycharm/download/) or Visual Studio Code.
Using the IDE will allow you to familiarise yourself better with the code, debug and extend it.
Clone the repo
$ git clone {repo_url}
Enter cloned directory
$ cd pysamosa
Install dependencies into your conda env/virtualenv
$ pip install -r requirements.txt
Compile the .pyx files (e.g. model_helpers.pyx) by running cython to build the extensions
For Windows users: An installed C/C++ compiler may be required for installation, e.g. MSCV, which comes with
the free [Visual Studio Community](https://visualstudio.microsoft.com/vs/community/)
$ python setup.py build_ext --inplace
Optional: Compile on an HPC cluster (not normally required)
$ LDSHARED="icc -shared" CC=icc python setup.py build_ext --inplace
## Tips
The following list provides a brief description of the recommended use of the software.
1. **Getting-started with Jupyter Notebook**
The `notebooks/retracking_example.ipynb` contains a sample script how to retrack a sample EUMETSAT baseline L1b file.
The retracked SWH and SWH data are compared with the EUMETSAT baseline L2 data. The `notebooks/demo_script.py` provides
the code example from above to quickly launch a small retracking example.
2. **More entry points**
The files `main_s3.py`, `main_s6.py`, `main_cs.py`, (`main_*.py`) etc. serve as entry points for batch processing of
multiple nc files.
A list of L1b files (or a single file) is read for retracking, which are fully retracked or based on the given
bounding box (bbox) paramater. A retracked L2 file is written out per processed
L1b file.
3. **Settings**
The `RetrackerProcessor` inputs require the `RetrackerProcessorSettings`, `RetrackerSettings`, `FittingSettings`,
`WaveformSettings`, and `SensorSettings` objects to be inserted during initialisation. The default settings of these settings objects can be retrieved with the `get_default_base_settings` function based on the three
settings `L1bSourceType` and `SettingsPreset`.
For instance, the following code snippet is taken from the `main_s3.py` file and retracks Sentinel-3 data with the default SAMOSA-based open ocean retracker with no SettingsPreset (100 waveforms from measurement index 25800,
and using 6 cores).
```python
l1b_src_type = L1bSourceType.EUM_S3
pres = SettingsPreset.NONE #use this for the standard SAMOSA-based retracker [2]
# pres = SettingsPreset.CORALv2 #use this for CORALv2 [5]
# pres = SettingsPreset.NONE #use this for SAMOSA+ [3]
rp_sets, retrack_sets, fitting_sets, wf_sets, sensor_sets = get_default_base_settings(settings_preset=pres, l1b_src_type=l1b_src_type)
rp_sets.nc_dest_dir = nc_dest_path / run_name
rp_sets.n_offset = 25800
rp_sets.n_inds = 100
rp_sets.n_procs = 6
rp_sets.skip_if_exists = False
```
4. **Evaluation environment**
There are several unit tests located in `./pysamosa/tests/` that aim to analyse the retracked output in more detail.
The most important test scripts are `test_retrack_multi.py`, which includes retracking of small along-track
segments of the S3A, S6, CS2 missions (and a generic input nc file).
`test_retrack_single` allows you to check the retracking result of a single waveform and compare it to reference
retracking result.
<span style="color:red; font-weight:bold">Please uncomment the line `mpl.use('TkAgg')` in file `conftest.py` to
plot the test output, which is particularly useful for the retracking tests in files `tests/test_retrack_multi.
py` and `tests/test_retrack_multi.py`.</span>
5. **Difference between CORALv1 and CORALv2**
- v2 has two additional extensions that were required for S6-MF
- retrack_sets.interference_masking_mask_before_le = True
Interference signals before the leading edge are also masked out by the adaptive inteference mitigation scheme (AIM, CORAL feature)
- fitting_sets.Fit_Var_2_MinMax_Hs = (0.0, 20)
lower SWH boundary for fitting procedure is set to 0.0, as defined in [2]
6. **Quality flag**
During the retracking process, the quality flag variables `swh_qual' and `range_qual' (where the latter is just a copy of the former)
are part of the retracked output and indicate the quality of the retracking of each individual waveform (0=good, 1=bad).
This makes a difference particularly in coastal scenarios where the waveforms are affected by spurious signals which tend
to cause incorrectly retracked waveforms. The CORAL coastal retracker maximises the number of valid records in the coastal zone.
We therefore emphasise the importance of considering `swh_qual`/`range_qual` quality flags in the retracked product.
## Validation
### Run tests
To run all the unit tests (using the pytest framework), run
$ pytest
### Comparison with EUMETSAT L2 baseline data
Comparison of a retracked open ocean segment from S3 and S6-MF missions with the EUMETSAT L2 baseline (S3: 004,
S6-MF: F06)
(generated by `notebooks/retracking_example.ipynb` Jupyter notebook)
S3 | S6-MF
:-:|:-:
![](https://github.com/floschl/pysamosa/blob/main/resources/S3_comparison_w_baseline.jpg?raw=true) | ![](https://github.com/floschl/pysamosa/blob/main/resources/S6_comparison_w_baseline.jpg?raw=true)
## Contributions
This software is intended to be a community-based project. Contributions to this project are very welcome.
In this case:
- Fork this repository
- Submit a pull request to be merged back into this repository.
Before submitting changes, please check that your changes pass flake8, black, isort and the
tests, including testing other Python versions with tox:
$ flake8 pysamosa tests scripts
$ black . --check --diff
$ isort . --check-only --diff
$ pytest
$ tox
If your pull request is accepted, you will be included in the next official release and will be listed as a
co-author for the DOI link created by Zenodo.
## Future work
Possible developments of this project are:
Retracking-related
- Align CS-2 retracking with the CS-2 baseline processing chain, validate against
[SAMpy](https://github.com/cls-obsnadir-dev/SAMPy) developed as part of the [ESA Cryo-TEMPO project](https://earth.esa.int/eogateway/documents/20142/37627/Cryo-TEMPO-ATBD-Coastal-Oceans.pdf)
- Implement evolutions of the EUMETSAT's baseline processing chain [6], e.g. the numerical retracking planned
for Q3/2023
Software-related
- Create notebook for a coastal retracking demo
- Create richer documentation (readthedocs)
## Citation
If you use this software or the code, please cite this DOI:
Florian Schlembach; Marcello Passaro. PySAMOSA: An Open-source Software Framework for Retracking SAMOSA-based, Open
Ocean and Coastal Waveforms of SAR Satellite Altimetry. Zenodo. https://zenodo.org/badge/latestdoi/646028227.
## Acknowledgement
The authors are grateful to
Salvatore Dinardo for his support in implementing the SAMOSA-based and SAMOSA+ [3] retracking algorithms.
This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the
[audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template.
## References
[1] SAMOSA Detailed Processing Model: Christine Gommenginger, Cristina Martin-Puig, Meric Srokosz, Marco Caparrini, Salvatore Dinardo, Bruno Lucas, Marco Restano, Américo, Ambrózio and Jérôme Benveniste, Detailed Processing Model of the Sentinel-3 SRAL SAR altimeter ocean waveform retracker, Version 2.5.2, 31 October 2017, Under ESA-ESRIN Contract No. 20698/07/I-LG (SAMOSA), Restricted access as defined in the Contract, Jérôme Benveniste (Jerome.Benvensite@esa.int) pers. comm.
[2] EUMETSAT. Sentinel-6/Jason-CS ALT Level 2 Product Generation Specification (L2 ALT PGS), Version V4D; 2022.
https://www.eumetsat.int/media/48266.
[3] Dinardo, Salvatore. ‘Techniques and Applications for Satellite SAR Altimetry over Water, Land and Ice’.
Dissertation, Technische Universität, 2020. https://tuprints.ulb.tu-darmstadt.de/11343/.
[4] Schlembach, F.; Passaro, M.; Dettmering, D.; Bidlot, J.; Seitz, F. Interference-Sensitive Coastal SAR Altimetry
Retracking Strategy for Measuring Significant Wave Height. Remote Sensing of Environment 2022, 274, 112968. https://doi.org/10.1016/j.rse.2022.112968.
[5] Schlembach, F.; Ehlers, F.; Kleinherenbrink, M.; Passaro, M.; Dettmering, D.; Seitz, F.; Slobbe, C. Benefits of Fully Focused SAR Altimetry to Coastal Wave Height Estimates: A Case Study in the North Sea. Remote Sensing of Environment 2023, 289, 113517. https://doi.org/10.1016/j.rse.2023.113517.
[6] Scharroo, R.; Martin-Puig, C.; Meloni, M.; Nogueira Loddo, C.; Grant, M.; Lucas, B. Sentinel-6 Products Status. Ocean Surface Topography Science Team (OSTST) meeting in Venice 2022. https://doi.org/10.24400/527896/a03-2022.3671.
[7] ESA L2 GPP Project: FF-SAR SAMOSA LUT generation was funded under ESA contract 4000118128/16/NL/AI.
Raw data
{
"_id": null,
"home_page": "https://github.com/floschl/pysamosa",
"name": "pysamosa",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "satellite altimetry retracking samosa+ samosa coastal open ocean sentinel esasar altimetry ff-sar fully focused",
"author": "Florian Schlembach",
"author_email": "florian.schlembach@tum.de",
"download_url": "https://files.pythonhosted.org/packages/0e/8e/c1caca44fee3272cec7b88cef924b1c9f5865d23b14ab27f636e32ae6788/pysamosa-1.0.0.tar.gz",
"platform": null,
"description": "# PySAMOSA\n\n![CI](https://github.com/floschl/pysamosa/actions/workflows/ci.yml/badge.svg)\n![Release](https://github.com/floschl/pysamosa/actions/workflows/release.yml/badge.svg)\n![PyPI](https://img.shields.io/pypi/v/pysamosa)\n[![DOI](https://zenodo.org/badge/646028227.svg)](https://zenodo.org/badge/latestdoi/646028227)\n[![License: LGPL v3](https://img.shields.io/badge/License-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)\n\n![]() <div align=\"center\"><img src=\"https://github.com/floschl/pysamosa/blob/main/resources/logo_name.png?raw=true\"\nwidth=\"500\"></div>\n\nPySAMOSA is a Python-based software for processing open ocean and coastal waveforms from SAR satellite\naltimetry to measure sea surface heights, wave heights, and wind speed for the oceans and inland waters.\nSatellite altimetry is a space-borne remote sensing technique used for Earth observation. More details on satellite\naltimetry can be found [here](https://www.altimetry.info/file/Radar_Altimetry_Tutorial.pdf).\n\nThe process of extracting of the three geophysical parameters from the reflected echoes/waveforms is called retracking. The measured (noisy) waveforms are fitted against the open ocean power return echo waveform model SAMOSA2 [1,2].\n\nIn the coastal zone, the return echoes are affected by spurious signals from strongly reflective targets such as sand and mud banks, tidal flats, shipping platforms, sheltered bays, or calm waters close to the shoreline.\n\nThe following European Space Agency (ESA) satellite altimetry missions are supported:\n- Sentinel-3 (S3)\n- Sentinel-6 Michael Freilich (S6-MF)\n\nThe software retracks the waveforms, i.e. the Level-1b (L1b) data, to extract the\nretracked variables SWH, range, and Pu.\n\nThe open ocean retracker implementation specification documents from the official EUMETSAT baseline are used (S3 [1],\nS6-MF [2]).\n\nFor retracking coastal waveforms the following retrackers are implemented:\n- SAMOSA+ [3]\n- CORAL [4,5]\n\nIn addition, FF-SAR-processed S6-MF data can be retracked using the zero-Doppler beam of the SAMOSA2 model and a\nspecially adapted $\\alpha_p$ LUT table, created by the ESA L2 GPP project [7]. The application of the FF-SAR-processed data\nhas been validated in [5].\n\nNot validated (experimental) features:\n- CryoSat-2 (CS2) support\n- SAMOSA++ coastal retracker [2]\n- Monte-carlo SAMOSA2 simulator\n\n## Getting-started\n\n### Usage\n\nInstall pysamosa into your environment\n\n $ pip install pysamosa\n\nThis is the sample to retrack a single L1b file from the S6-MF mission\n\n``` python\nfrom pathlib import Path\nimport numpy as np\n\nfrom pysamosa.common_types import L1bSourceType\nfrom pysamosa.data_access import data_vars_s3, data_vars_s6\nfrom pysamosa.retracker_processor import RetrackerProcessor\nfrom pysamosa.settings_manager import get_default_base_settings, SettingsPreset\n\n\nl1b_files = []\n# l1b_files.append(Path('S6A_P4_1B_HR______20211120T051224_20211120T060836_20220430T212619_3372_038_018_009_EUM__REP_NT_F06.nc'))\nl1b_files.append(Path.cwd().parent / '.data' / 's6' / 'l1b' / 'S6A_P4_1B_HR______20211120T051224_20211120T060836_20220430T212619_3372_038_018_009_EUM__REP_NT_F06.nc')\n\nl1b_src_type = L1bSourceType.EUM_S6_F06\ndata_vars = data_vars_s6\n\n# configure coastal CORAL retracker\npres = SettingsPreset.CORALv2\nrp_sets, retrack_sets, fitting_sets, wf_sets, sensor_sets = get_default_base_settings(settings_preset=pres, l1b_src_type=l1b_src_type)\n\nrp_sets.nc_dest_dir = l1b_files[0].parent / 'processed'\nrp_sets.n_offset = 0\nrp_sets.n_inds = 0 #0 means all\nrp_sets.n_procs = 6 #use 6 cores in parallel\nrp_sets.skip_if_exists = False\n\nadditional_nc_attrs = {\n 'L1B source type': l1b_src_type.value.upper(),\n 'Retracker preset': pres.value.upper(),\n}\n\nrp = RetrackerProcessor(l1b_source=l1b_files, l1b_data_vars=data_vars['l1b'],\n rp_sets=rp_sets,\n retrack_sets=retrack_sets,\n fitting_sets=fitting_sets,\n wf_sets=wf_sets,\n sensor_sets=sensor_sets,\n nc_attrs_kw=additional_nc_attrs,\n bbox=[np.array([-29.05, -29.00, 0, 360])],\n )\n\nrp.process() #start processing\n\nprint(rp.output_l2) #retracked L2 output can be found in here\n```\n\nA running minimal working example for retracking is shown in `notebooks/retracking_example.ipynb`.\n\n### Development\n\nIt is highly recommended to use a proper Python IDE, such as\n[PyCharm Community](https://www.jetbrainscom/pycharm/download/) or Visual Studio Code.\nUsing the IDE will allow you to familiarise yourself better with the code, debug and extend it.\n\nClone the repo\n\n $ git clone {repo_url}\n\nEnter cloned directory\n\n $ cd pysamosa\n\nInstall dependencies into your conda env/virtualenv\n\n $ pip install -r requirements.txt\n\nCompile the .pyx files (e.g. model_helpers.pyx) by running cython to build the extensions\nFor Windows users: An installed C/C++ compiler may be required for installation, e.g. MSCV, which comes with\nthe free [Visual Studio Community](https://visualstudio.microsoft.com/vs/community/)\n\n $ python setup.py build_ext --inplace\n\nOptional: Compile on an HPC cluster (not normally required)\n\n $ LDSHARED=\"icc -shared\" CC=icc python setup.py build_ext --inplace\n\n## Tips\n\nThe following list provides a brief description of the recommended use of the software.\n1. **Getting-started with Jupyter Notebook**\nThe `notebooks/retracking_example.ipynb` contains a sample script how to retrack a sample EUMETSAT baseline L1b file.\nThe retracked SWH and SWH data are compared with the EUMETSAT baseline L2 data. The `notebooks/demo_script.py` provides\nthe code example from above to quickly launch a small retracking example.\n\n2. **More entry points**\nThe files `main_s3.py`, `main_s6.py`, `main_cs.py`, (`main_*.py`) etc. serve as entry points for batch processing of\n multiple nc files.\nA list of L1b files (or a single file) is read for retracking, which are fully retracked or based on the given\n bounding box (bbox) paramater. A retracked L2 file is written out per processed\n L1b file.\n\n3. **Settings**\nThe `RetrackerProcessor` inputs require the `RetrackerProcessorSettings`, `RetrackerSettings`, `FittingSettings`,\n `WaveformSettings`, and `SensorSettings` objects to be inserted during initialisation. The default settings of these settings objects can be retrieved with the `get_default_base_settings` function based on the three\n settings `L1bSourceType` and `SettingsPreset`.\n For instance, the following code snippet is taken from the `main_s3.py` file and retracks Sentinel-3 data with the default SAMOSA-based open ocean retracker with no SettingsPreset (100 waveforms from measurement index 25800,\n and using 6 cores).\n```python\n l1b_src_type = L1bSourceType.EUM_S3\n pres = SettingsPreset.NONE #use this for the standard SAMOSA-based retracker [2]\n # pres = SettingsPreset.CORALv2 #use this for CORALv2 [5]\n # pres = SettingsPreset.NONE #use this for SAMOSA+ [3]\n rp_sets, retrack_sets, fitting_sets, wf_sets, sensor_sets = get_default_base_settings(settings_preset=pres, l1b_src_type=l1b_src_type)\n\n rp_sets.nc_dest_dir = nc_dest_path / run_name\n rp_sets.n_offset = 25800\n rp_sets.n_inds = 100\n rp_sets.n_procs = 6\n rp_sets.skip_if_exists = False\n```\n\n4. **Evaluation environment**\nThere are several unit tests located in `./pysamosa/tests/` that aim to analyse the retracked output in more detail.\nThe most important test scripts are `test_retrack_multi.py`, which includes retracking of small along-track\nsegments of the S3A, S6, CS2 missions (and a generic input nc file).\n`test_retrack_single` allows you to check the retracking result of a single waveform and compare it to reference\n retracking result.\n\n<span style=\"color:red; font-weight:bold\">Please uncomment the line `mpl.use('TkAgg')` in file `conftest.py` to\nplot the test output, which is particularly useful for the retracking tests in files `tests/test_retrack_multi.\npy` and `tests/test_retrack_multi.py`.</span>\n\n\n5. **Difference between CORALv1 and CORALv2**\n- v2 has two additional extensions that were required for S6-MF\n- retrack_sets.interference_masking_mask_before_le = True\nInterference signals before the leading edge are also masked out by the adaptive inteference mitigation scheme (AIM, CORAL feature)\n- fitting_sets.Fit_Var_2_MinMax_Hs = (0.0, 20)\nlower SWH boundary for fitting procedure is set to 0.0, as defined in [2]\n\n6. **Quality flag**\nDuring the retracking process, the quality flag variables `swh_qual' and `range_qual' (where the latter is just a copy of the former)\nare part of the retracked output and indicate the quality of the retracking of each individual waveform (0=good, 1=bad).\nThis makes a difference particularly in coastal scenarios where the waveforms are affected by spurious signals which tend\nto cause incorrectly retracked waveforms. The CORAL coastal retracker maximises the number of valid records in the coastal zone.\nWe therefore emphasise the importance of considering `swh_qual`/`range_qual` quality flags in the retracked product.\n\n## Validation\n\n### Run tests\n\nTo run all the unit tests (using the pytest framework), run\n\n $ pytest\n\n### Comparison with EUMETSAT L2 baseline data\n\nComparison of a retracked open ocean segment from S3 and S6-MF missions with the EUMETSAT L2 baseline (S3: 004,\nS6-MF: F06)\n(generated by `notebooks/retracking_example.ipynb` Jupyter notebook)\n\nS3 | S6-MF\n:-:|:-:\n![](https://github.com/floschl/pysamosa/blob/main/resources/S3_comparison_w_baseline.jpg?raw=true) | ![](https://github.com/floschl/pysamosa/blob/main/resources/S6_comparison_w_baseline.jpg?raw=true)\n\n## Contributions\n\nThis software is intended to be a community-based project. Contributions to this project are very welcome.\nIn this case:\n- Fork this repository\n- Submit a pull request to be merged back into this repository.\n\nBefore submitting changes, please check that your changes pass flake8, black, isort and the\n tests, including testing other Python versions with tox:\n\n $ flake8 pysamosa tests scripts\n $ black . --check --diff\n $ isort . --check-only --diff\n $ pytest\n $ tox\n\nIf your pull request is accepted, you will be included in the next official release and will be listed as a\nco-author for the DOI link created by Zenodo.\n\n## Future work\n\nPossible developments of this project are:\n\nRetracking-related\n- Align CS-2 retracking with the CS-2 baseline processing chain, validate against\n[SAMpy](https://github.com/cls-obsnadir-dev/SAMPy) developed as part of the [ESA Cryo-TEMPO project](https://earth.esa.int/eogateway/documents/20142/37627/Cryo-TEMPO-ATBD-Coastal-Oceans.pdf)\n- Implement evolutions of the EUMETSAT's baseline processing chain [6], e.g. the numerical retracking planned\n for Q3/2023\n\nSoftware-related\n- Create notebook for a coastal retracking demo\n- Create richer documentation (readthedocs)\n\n## Citation\n\nIf you use this software or the code, please cite this DOI:\n\nFlorian Schlembach; Marcello Passaro. PySAMOSA: An Open-source Software Framework for Retracking SAMOSA-based, Open\nOcean and Coastal Waveforms of SAR Satellite Altimetry. Zenodo. https://zenodo.org/badge/latestdoi/646028227.\n\n## Acknowledgement\n\nThe authors are grateful to\n\nSalvatore Dinardo for his support in implementing the SAMOSA-based and SAMOSA+ [3] retracking algorithms.\n\nThis package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the\n[audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template.\n\n## References\n\n[1] SAMOSA Detailed Processing Model: Christine Gommenginger, Cristina Martin-Puig, Meric Srokosz, Marco Caparrini, Salvatore Dinardo, Bruno Lucas, Marco Restano, Am\u00e9rico, Ambr\u00f3zio and J\u00e9r\u00f4me Benveniste, Detailed Processing Model of the Sentinel-3 SRAL SAR altimeter ocean waveform retracker, Version 2.5.2, 31 October 2017, Under ESA-ESRIN Contract No. 20698/07/I-LG (SAMOSA), Restricted access as defined in the Contract, J\u00e9r\u00f4me Benveniste (Jerome.Benvensite@esa.int) pers. comm.\n\n[2] EUMETSAT. Sentinel-6/Jason-CS ALT Level 2 Product Generation Specification (L2 ALT PGS), Version V4D; 2022.\nhttps://www.eumetsat.int/media/48266.\n\n[3] Dinardo, Salvatore. \u2018Techniques and Applications for Satellite SAR Altimetry over Water, Land and Ice\u2019.\nDissertation, Technische Universit\u00e4t, 2020. https://tuprints.ulb.tu-darmstadt.de/11343/.\n\n[4] Schlembach, F.; Passaro, M.; Dettmering, D.; Bidlot, J.; Seitz, F. Interference-Sensitive Coastal SAR Altimetry\nRetracking Strategy for Measuring Significant Wave Height. Remote Sensing of Environment 2022, 274, 112968. https://doi.org/10.1016/j.rse.2022.112968.\n\n[5] Schlembach, F.; Ehlers, F.; Kleinherenbrink, M.; Passaro, M.; Dettmering, D.; Seitz, F.; Slobbe, C. Benefits of Fully Focused SAR Altimetry to Coastal Wave Height Estimates: A Case Study in the North Sea. Remote Sensing of Environment 2023, 289, 113517. https://doi.org/10.1016/j.rse.2023.113517.\n\n[6] Scharroo, R.; Martin-Puig, C.; Meloni, M.; Nogueira Loddo, C.; Grant, M.; Lucas, B. Sentinel-6 Products Status. Ocean Surface Topography Science Team (OSTST) meeting in Venice 2022. https://doi.org/10.24400/527896/a03-2022.3671.\n\n[7] ESA L2 GPP Project: FF-SAR SAMOSA LUT generation was funded under ESA contract 4000118128/16/NL/AI.\n",
"bugtrack_url": null,
"license": "GNU Lesser General Public License v3 or later (LGPLv3+)",
"summary": "PySAMOSA is a software framework for processing open ocean and coastal waveforms from SAR satellite altimetry to measure sea surface heights, wave heights, and wind speed for the oceans and inland water bodies. Satellite altimetry is a space-borne remote sensing technique used for Earth observation.",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/floschl/pysamosa"
},
"split_keywords": [
"satellite",
"altimetry",
"retracking",
"samosa+",
"samosa",
"coastal",
"open",
"ocean",
"sentinel",
"esasar",
"altimetry",
"ff-sar",
"fully",
"focused"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3ab052244b4ccbdf088b322e90c22eb4ab1b9cfae83875c0c4bbcc3019b34167",
"md5": "3232c61ba7bcda8a2be59e86d31d54e8",
"sha256": "b117f598b1fe52999c00284e7f19485f44eb895f9064f8fcd7f1c29a13756baf"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "3232c61ba7bcda8a2be59e86d31d54e8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 3967826,
"upload_time": "2023-08-13T08:43:59",
"upload_time_iso_8601": "2023-08-13T08:43:59.514619Z",
"url": "https://files.pythonhosted.org/packages/3a/b0/52244b4ccbdf088b322e90c22eb4ab1b9cfae83875c0c4bbcc3019b34167/pysamosa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7626e4e285ea7523a5af88e12bf85a4ad73c71c1cdb363709d2c5804cc32a811",
"md5": "fef98306f7060bea91e829804a587396",
"sha256": "b58525da785ef7dea3b23c342370e55081754e0c86645f7a0502f1e6d4da0ab9"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fef98306f7060bea91e829804a587396",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 4315089,
"upload_time": "2023-08-13T08:44:02",
"upload_time_iso_8601": "2023-08-13T08:44:02.553964Z",
"url": "https://files.pythonhosted.org/packages/76/26/e4e285ea7523a5af88e12bf85a4ad73c71c1cdb363709d2c5804cc32a811/pysamosa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b57233fa4fe3a0ab8dce02363fb17b4333f2d213e6a922422e2ff3fcef6f9492",
"md5": "292190e5ee715cc2c1acd00b2d280db2",
"sha256": "c853453b5aa053b5fe95dd876b8d8fe1a1174b06630fc3131c4861623c6d553c"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "292190e5ee715cc2c1acd00b2d280db2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 4300721,
"upload_time": "2023-08-13T08:44:04",
"upload_time_iso_8601": "2023-08-13T08:44:04.689074Z",
"url": "https://files.pythonhosted.org/packages/b5/72/33fa4fe3a0ab8dce02363fb17b4333f2d213e6a922422e2ff3fcef6f9492/pysamosa-1.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c0e6980eb7c3171a4e2b331894bc82bbc8cce7abdc9ea5b9aa1212c5e17552f6",
"md5": "353bd0862f2189b78389c9f571ba8fbf",
"sha256": "7c67d27cb42d9ce27dfd9d73e9c853ab3037ee10e19767582a80ffe9b7bfb657"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "353bd0862f2189b78389c9f571ba8fbf",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 4298673,
"upload_time": "2023-08-13T08:44:07",
"upload_time_iso_8601": "2023-08-13T08:44:07.224358Z",
"url": "https://files.pythonhosted.org/packages/c0/e6/980eb7c3171a4e2b331894bc82bbc8cce7abdc9ea5b9aa1212c5e17552f6/pysamosa-1.0.0-cp310-cp310-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1b3e2e45fc25df8dbccdb235c7de865021375ea35874a90e8edc380402d5b480",
"md5": "7b2fefdc8e86afab7ce25951c962b543",
"sha256": "1a54a8881003a9b05d03b1d30495f8c8ec5c1c69e3a42b80645f1484bc97c772"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "7b2fefdc8e86afab7ce25951c962b543",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 4321435,
"upload_time": "2023-08-13T08:44:09",
"upload_time_iso_8601": "2023-08-13T08:44:09.290475Z",
"url": "https://files.pythonhosted.org/packages/1b/3e/2e45fc25df8dbccdb235c7de865021375ea35874a90e8edc380402d5b480/pysamosa-1.0.0-cp310-cp310-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf61c7bc7ce59bf3360389c19c7d1a87714526091c90dfb935fa261f947d7915",
"md5": "a4f78ffc3e755228782ca9a358a908ae",
"sha256": "fdb2533f7950c1f9efaf813e06606b987e98ed0ec9f094d817c4fbd76acc9ebc"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "a4f78ffc3e755228782ca9a358a908ae",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 3949166,
"upload_time": "2023-08-13T08:44:10",
"upload_time_iso_8601": "2023-08-13T08:44:10.994751Z",
"url": "https://files.pythonhosted.org/packages/bf/61/c7bc7ce59bf3360389c19c7d1a87714526091c90dfb935fa261f947d7915/pysamosa-1.0.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "00df54bb2e1c21d6d775164392affad86b38638ff4c2c71fb482fd288a43c3ba",
"md5": "cdd92c461d5d6365a2c464969a1ef5b7",
"sha256": "afa34063ae42fcda7c500c3441cdebfb2321a7adf9dc4d2c9c9753ffa96340ce"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "cdd92c461d5d6365a2c464969a1ef5b7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 3960516,
"upload_time": "2023-08-13T08:44:13",
"upload_time_iso_8601": "2023-08-13T08:44:13.482163Z",
"url": "https://files.pythonhosted.org/packages/00/df/54bb2e1c21d6d775164392affad86b38638ff4c2c71fb482fd288a43c3ba/pysamosa-1.0.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "397b58bd557670c6c2f72baab18287681d5ffb63f096d2c3374562b6d4dcb723",
"md5": "d66a61575174eb9234d18896adeed60a",
"sha256": "14987a3ff08e07fad189d3c09e8e9a2a73fe080d1a8382121af02127ca1ced33"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "d66a61575174eb9234d18896adeed60a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 3968424,
"upload_time": "2023-08-13T08:44:15",
"upload_time_iso_8601": "2023-08-13T08:44:15.991698Z",
"url": "https://files.pythonhosted.org/packages/39/7b/58bd557670c6c2f72baab18287681d5ffb63f096d2c3374562b6d4dcb723/pysamosa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "460a1ebcaacb775863b9135d3ad550612ba521d25b33e9d4ddf9b9b0cf688152",
"md5": "4a0bbe213c81b2196bba61315ea559a3",
"sha256": "913821ef6eff31dfc32915076a51ed15e7d38533344258ffe30b69771eba74b8"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4a0bbe213c81b2196bba61315ea559a3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 4356048,
"upload_time": "2023-08-13T08:44:18",
"upload_time_iso_8601": "2023-08-13T08:44:18.462584Z",
"url": "https://files.pythonhosted.org/packages/46/0a/1ebcaacb775863b9135d3ad550612ba521d25b33e9d4ddf9b9b0cf688152/pysamosa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "376e2eff6ea49442ebdc87f7fd93db1aefdd043326d88cf5887095de9557f90c",
"md5": "e47d384ca98639829e4f5f19ea22537a",
"sha256": "3900ed95e94c36ae1f397d956e863be28bb2e271df6d7470287cf0d6929473a9"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "e47d384ca98639829e4f5f19ea22537a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 4336528,
"upload_time": "2023-08-13T08:44:20",
"upload_time_iso_8601": "2023-08-13T08:44:20.770875Z",
"url": "https://files.pythonhosted.org/packages/37/6e/2eff6ea49442ebdc87f7fd93db1aefdd043326d88cf5887095de9557f90c/pysamosa-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "535ef1005bfd8f0a0139f870298171a18a9dd044138ec794a074c44a178f08c9",
"md5": "7120fef785e67d40b5aeda7698566e85",
"sha256": "65e76da0d46d64fb1e6811758dbaa20707f75dddadfae3eff2d70e7c28d60117"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "7120fef785e67d40b5aeda7698566e85",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 4331124,
"upload_time": "2023-08-13T08:44:23",
"upload_time_iso_8601": "2023-08-13T08:44:23.065064Z",
"url": "https://files.pythonhosted.org/packages/53/5e/f1005bfd8f0a0139f870298171a18a9dd044138ec794a074c44a178f08c9/pysamosa-1.0.0-cp311-cp311-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6613dcadb3e698bffb4f6007c65bccaf35306208be8d598728b728db240ecc08",
"md5": "6074feace6cb2bd2992cba9a221d3af2",
"sha256": "28baebf7a4a0ea213b2db7738af7391fd3a6b2f8b8eed9fb156bc84baa8f4ee3"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "6074feace6cb2bd2992cba9a221d3af2",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 4358599,
"upload_time": "2023-08-13T08:44:24",
"upload_time_iso_8601": "2023-08-13T08:44:24.696244Z",
"url": "https://files.pythonhosted.org/packages/66/13/dcadb3e698bffb4f6007c65bccaf35306208be8d598728b728db240ecc08/pysamosa-1.0.0-cp311-cp311-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ca597045bb0fadbeae391d4f4f6756e9bc753ba1a74deadae685c560a99a917b",
"md5": "f88b8cb3e2ee311805ee7e5e3a9eab88",
"sha256": "0ac777e1aa92ad0de0479b1a773dabc876bf479f0835331fbb2636058752ed0e"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "f88b8cb3e2ee311805ee7e5e3a9eab88",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 3949332,
"upload_time": "2023-08-13T08:44:26",
"upload_time_iso_8601": "2023-08-13T08:44:26.820304Z",
"url": "https://files.pythonhosted.org/packages/ca/59/7045bb0fadbeae391d4f4f6756e9bc753ba1a74deadae685c560a99a917b/pysamosa-1.0.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2ed41a860b6352a3c750914645dc391cf1b12492dfc2ad59ead526435341de74",
"md5": "f500d9055642948a37b4ba3b554757f2",
"sha256": "e0b33ba362c228b3c5bd7447e3b2feedd09fad468f6965e99e8480f09f682bb3"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "f500d9055642948a37b4ba3b554757f2",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 3961015,
"upload_time": "2023-08-13T08:44:28",
"upload_time_iso_8601": "2023-08-13T08:44:28.652598Z",
"url": "https://files.pythonhosted.org/packages/2e/d4/1a860b6352a3c750914645dc391cf1b12492dfc2ad59ead526435341de74/pysamosa-1.0.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b3453c5e18ac6125d862bae5f59f4905cf3751cbfac84cb74531ad8498b09d24",
"md5": "9794a66b7bb3b548b3737c326c2e343d",
"sha256": "7827fd160b46679cbfadc105c0b977d5d01d7b88dbabaab438f73b473deee31e"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9794a66b7bb3b548b3737c326c2e343d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 3967913,
"upload_time": "2023-08-13T08:44:30",
"upload_time_iso_8601": "2023-08-13T08:44:30.261925Z",
"url": "https://files.pythonhosted.org/packages/b3/45/3c5e18ac6125d862bae5f59f4905cf3751cbfac84cb74531ad8498b09d24/pysamosa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dd53ece380567768e1d2439f75dc9b15cf0a18b980ba6222390866f63f5cf464",
"md5": "4cd0269c05ecfc7815de88a1bb690602",
"sha256": "c4e78edceb9a94be72befc8cdcc6032a2b67d8374acfff04410ab9d14d3563b5"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4cd0269c05ecfc7815de88a1bb690602",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 4321671,
"upload_time": "2023-08-13T08:44:32",
"upload_time_iso_8601": "2023-08-13T08:44:32.170318Z",
"url": "https://files.pythonhosted.org/packages/dd/53/ece380567768e1d2439f75dc9b15cf0a18b980ba6222390866f63f5cf464/pysamosa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "055d9f3c6a62e2cb5e103a50ec6c621cd215a60376aed7a7ad030a9459c29d0e",
"md5": "1c20c2e89cce98e37d26379361ed7aa3",
"sha256": "0a7799c3ed02e4f31c377489251260c6a8841c5115030824064e1f3455afeae6"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "1c20c2e89cce98e37d26379361ed7aa3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 4305981,
"upload_time": "2023-08-13T08:44:34",
"upload_time_iso_8601": "2023-08-13T08:44:34.656308Z",
"url": "https://files.pythonhosted.org/packages/05/5d/9f3c6a62e2cb5e103a50ec6c621cd215a60376aed7a7ad030a9459c29d0e/pysamosa-1.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d49923b5247780cc0d325d7e1532ee3db011202f12786683cbeca9ed072f3344",
"md5": "407626d054bda4bc1fa27c4106919920",
"sha256": "cd6688937ab6498244fa7eb4488083b9c4e10e8cc7a54972884bf516feb13d73"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "407626d054bda4bc1fa27c4106919920",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 4315758,
"upload_time": "2023-08-13T08:44:36",
"upload_time_iso_8601": "2023-08-13T08:44:36.426958Z",
"url": "https://files.pythonhosted.org/packages/d4/99/23b5247780cc0d325d7e1532ee3db011202f12786683cbeca9ed072f3344/pysamosa-1.0.0-cp38-cp38-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a35442174d8b54845431ec5ee20077793c5748a15500a4343926ff682c202aed",
"md5": "e5d10aba66a1cf89f717a856d393d6ed",
"sha256": "e57bb370a0699e71fdc8b3535693a8b7c1194ce2d2f46a821062efa327ccc9f8"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "e5d10aba66a1cf89f717a856d393d6ed",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 4337907,
"upload_time": "2023-08-13T08:44:38",
"upload_time_iso_8601": "2023-08-13T08:44:38.240979Z",
"url": "https://files.pythonhosted.org/packages/a3/54/42174d8b54845431ec5ee20077793c5748a15500a4343926ff682c202aed/pysamosa-1.0.0-cp38-cp38-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ca77981a451114a08455b275fbb9e11dafbdfd9b669ddde93f2a0d5dafbb1e81",
"md5": "0e77936e785a2ccfb994d4c05783ce19",
"sha256": "88adfe1fdf674b587b770a2c6e2128a97eef9cc4be3aa4fe63a99671a2aba3c2"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "0e77936e785a2ccfb994d4c05783ce19",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 3949629,
"upload_time": "2023-08-13T08:44:40",
"upload_time_iso_8601": "2023-08-13T08:44:40.447649Z",
"url": "https://files.pythonhosted.org/packages/ca/77/981a451114a08455b275fbb9e11dafbdfd9b669ddde93f2a0d5dafbb1e81/pysamosa-1.0.0-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1160b7d4a9819d84906746009b42ecbee2b5c23a8eabe47ddf9aa89f4afefbb4",
"md5": "d6f034a1a1e0117cf3b55d50dff55a5d",
"sha256": "5d7452191f24e4b121d4082b61c803ce004cf944402ac40528b114471ca52202"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "d6f034a1a1e0117cf3b55d50dff55a5d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 3961012,
"upload_time": "2023-08-13T08:44:42",
"upload_time_iso_8601": "2023-08-13T08:44:42.141630Z",
"url": "https://files.pythonhosted.org/packages/11/60/b7d4a9819d84906746009b42ecbee2b5c23a8eabe47ddf9aa89f4afefbb4/pysamosa-1.0.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "746b32156471f4566789c6340f1a394608082b0874102eb9cdbf57726df9cd96",
"md5": "90f073f908c4075b8e7c2e84ef53ee78",
"sha256": "207664d94c53789dedaa1e6cb3028a89aa8b8247f1581cabb1575acb7157eea3"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "90f073f908c4075b8e7c2e84ef53ee78",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3968363,
"upload_time": "2023-08-13T08:44:44",
"upload_time_iso_8601": "2023-08-13T08:44:44.550174Z",
"url": "https://files.pythonhosted.org/packages/74/6b/32156471f4566789c6340f1a394608082b0874102eb9cdbf57726df9cd96/pysamosa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b2fa4f53817637b8c8d15ed3088e7633d78fc8ff24fda25063be372ce37e3641",
"md5": "b0a7cd527f03f8ad520697fb326c6e71",
"sha256": "5464e16090a266fbcfc047982babe40089436197343ac902606db03697b4045c"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b0a7cd527f03f8ad520697fb326c6e71",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 4318019,
"upload_time": "2023-08-13T08:44:47",
"upload_time_iso_8601": "2023-08-13T08:44:47.000850Z",
"url": "https://files.pythonhosted.org/packages/b2/fa/4f53817637b8c8d15ed3088e7633d78fc8ff24fda25063be372ce37e3641/pysamosa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "09896f0327dfa5e3b84a1a88efc75a6ed9761a61ad1d48afc14a8ee06c650b05",
"md5": "92a02ed2b4fa28d0856409b4aa8cac9a",
"sha256": "caea9210329426d212d87e8f3bcb482c6877eb5cf73a26e19602e871696292cf"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "92a02ed2b4fa28d0856409b4aa8cac9a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 4303041,
"upload_time": "2023-08-13T08:44:48",
"upload_time_iso_8601": "2023-08-13T08:44:48.812705Z",
"url": "https://files.pythonhosted.org/packages/09/89/6f0327dfa5e3b84a1a88efc75a6ed9761a61ad1d48afc14a8ee06c650b05/pysamosa-1.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4342ab1b997cc20ed02948034210f63860186df8db8e35498445ab393ae6f327",
"md5": "a4263541fb9014632fe8f93515bc8211",
"sha256": "99f48c5f9e432c1e2b3b32dc1c61f8ba8730c5c8577d97f393227dc3ca895e95"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "a4263541fb9014632fe8f93515bc8211",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 4301220,
"upload_time": "2023-08-13T08:44:50",
"upload_time_iso_8601": "2023-08-13T08:44:50.454358Z",
"url": "https://files.pythonhosted.org/packages/43/42/ab1b997cc20ed02948034210f63860186df8db8e35498445ab393ae6f327/pysamosa-1.0.0-cp39-cp39-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a6d1ee6efb352912462fbd121efd833c30b2bb9a9eafb1f510acbf70cf0fdaf1",
"md5": "34b78338c9adc642a1f6c10c253e7a92",
"sha256": "8624b5146731e1c2cecbe72ed1ce085bd744fe635b1abdc13bcaece4524322f6"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "34b78338c9adc642a1f6c10c253e7a92",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 4324301,
"upload_time": "2023-08-13T08:44:52",
"upload_time_iso_8601": "2023-08-13T08:44:52.237118Z",
"url": "https://files.pythonhosted.org/packages/a6/d1/ee6efb352912462fbd121efd833c30b2bb9a9eafb1f510acbf70cf0fdaf1/pysamosa-1.0.0-cp39-cp39-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "71090e6667916319f1e35e0fcdc07b7494c0ce85a38bb6e4aa6670c5a8850f98",
"md5": "fcdc39cc4d55356f105bcbc41d039a00",
"sha256": "cad0b25d02cd8dd6ce71e4299cbc44ba7464a4d6b4cf65ded77bcb2964935590"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "fcdc39cc4d55356f105bcbc41d039a00",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3949664,
"upload_time": "2023-08-13T08:44:54",
"upload_time_iso_8601": "2023-08-13T08:44:54.339739Z",
"url": "https://files.pythonhosted.org/packages/71/09/0e6667916319f1e35e0fcdc07b7494c0ce85a38bb6e4aa6670c5a8850f98/pysamosa-1.0.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12742aa6abce695908211d75e8d40b8a6521125fb2cb9acfc77b62234b9cfd59",
"md5": "c4cb405976660b0a2f42595923e6bad1",
"sha256": "d5201c5606ab964a5599c78ab80977ddda8ebc14060485b45b0cffe0a5fc73f9"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "c4cb405976660b0a2f42595923e6bad1",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 3961000,
"upload_time": "2023-08-13T08:44:56",
"upload_time_iso_8601": "2023-08-13T08:44:56.134122Z",
"url": "https://files.pythonhosted.org/packages/12/74/2aa6abce695908211d75e8d40b8a6521125fb2cb9acfc77b62234b9cfd59/pysamosa-1.0.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3a5e0ad4a5b9b7ab70a79892082b52b21f22dbd3497a4b246e859c78fa093923",
"md5": "7a48f66760dd9673f3ac9ec3aa5b5081",
"sha256": "9a77370cf27cb62ead2d530fb07b1fcb1464b26745b05a9adc482c3fd32faffa"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "7a48f66760dd9673f3ac9ec3aa5b5081",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 3949080,
"upload_time": "2023-08-13T08:44:58",
"upload_time_iso_8601": "2023-08-13T08:44:58.012417Z",
"url": "https://files.pythonhosted.org/packages/3a/5e/0ad4a5b9b7ab70a79892082b52b21f22dbd3497a4b246e859c78fa093923/pysamosa-1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b7e57f377982ad4fdd8414d31e1d112551f9e90751199d3a35a65acea2dd551",
"md5": "6ae67d91663456ed3cdd479979405124",
"sha256": "95ae5d2917060d22484d2e6069467f0583f92fe4a86a6ae59ecca7eed2224170"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6ae67d91663456ed3cdd479979405124",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 3963242,
"upload_time": "2023-08-13T08:44:59",
"upload_time_iso_8601": "2023-08-13T08:44:59.635239Z",
"url": "https://files.pythonhosted.org/packages/9b/7e/57f377982ad4fdd8414d31e1d112551f9e90751199d3a35a65acea2dd551/pysamosa-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4656ee964b093652bf5c9f17f8c0290637e080b37806875243a09a665715a546",
"md5": "5fa68572ecdda6e0ec9045c2381b98be",
"sha256": "cb02ed84420614ff71189499d19ccb5bdac7bd191c7ea3d7588d05ac18ebc684"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "5fa68572ecdda6e0ec9045c2381b98be",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 3964344,
"upload_time": "2023-08-13T08:45:01",
"upload_time_iso_8601": "2023-08-13T08:45:01.627704Z",
"url": "https://files.pythonhosted.org/packages/46/56/ee964b093652bf5c9f17f8c0290637e080b37806875243a09a665715a546/pysamosa-1.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f5bccc5e5481e753d0ecffd33d7a810999728949e2e82cc92d15c5ca49fa5e42",
"md5": "4080002bee3421b2efebc00486b84fc7",
"sha256": "f9997432ce3406d377121e0128b58103e50efb55539a130ae28fe97a02c8f99a"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp310-pypy310_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "4080002bee3421b2efebc00486b84fc7",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 3953796,
"upload_time": "2023-08-13T08:45:03",
"upload_time_iso_8601": "2023-08-13T08:45:03.803469Z",
"url": "https://files.pythonhosted.org/packages/f5/bc/cc5e5481e753d0ecffd33d7a810999728949e2e82cc92d15c5ca49fa5e42/pysamosa-1.0.0-pp310-pypy310_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6c640074168a7f2515fb0bf07d4990284fb73f1b9200c9d988bceafb9c4c5d74",
"md5": "b281fbe6e63e7791be836448a406811f",
"sha256": "51b1b87b183482dc4d3d41774e20a182d03eb72fcfdb31ff20932781b564a7e7"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b281fbe6e63e7791be836448a406811f",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 3948307,
"upload_time": "2023-08-13T08:45:06",
"upload_time_iso_8601": "2023-08-13T08:45:06.320804Z",
"url": "https://files.pythonhosted.org/packages/6c/64/0074168a7f2515fb0bf07d4990284fb73f1b9200c9d988bceafb9c4c5d74/pysamosa-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12b3edb4043894b523ddb7da0239fd5edd18a8aad182d8df61deab838610aaa9",
"md5": "751cc31f673116f02141464f77b6b215",
"sha256": "78b3d2af73cb3d0f372873f7a5543123e5c2df7578227c472c7b5a86d90de901"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "751cc31f673116f02141464f77b6b215",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 3962187,
"upload_time": "2023-08-13T08:45:08",
"upload_time_iso_8601": "2023-08-13T08:45:08.306727Z",
"url": "https://files.pythonhosted.org/packages/12/b3/edb4043894b523ddb7da0239fd5edd18a8aad182d8df61deab838610aaa9/pysamosa-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67765e394e9c4561586adf2e76574193f9cc59ccd5d05184b2f8dd904f949342",
"md5": "5f7a97b8e7f88a96b3a29cb56a7eb6b6",
"sha256": "82bbbbecf8dddc05c768a4b8cbb645f2d2f7644a83ee51f830c6a18f4a309a31"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "5f7a97b8e7f88a96b3a29cb56a7eb6b6",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 3963413,
"upload_time": "2023-08-13T08:45:10",
"upload_time_iso_8601": "2023-08-13T08:45:10.665209Z",
"url": "https://files.pythonhosted.org/packages/67/76/5e394e9c4561586adf2e76574193f9cc59ccd5d05184b2f8dd904f949342/pysamosa-1.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d7e59285d41907f7ec5b7d6fa3f04dd85ea0818f1ebe820065be0e8e2859b88c",
"md5": "d9934c33dbc9c5c13faca6ecbb772019",
"sha256": "e4ece37e4f545f14f2921a69f80b16ab091884143308d14f898efb048b0ccaf3"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp38-pypy38_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "d9934c33dbc9c5c13faca6ecbb772019",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 3953315,
"upload_time": "2023-08-13T08:45:12",
"upload_time_iso_8601": "2023-08-13T08:45:12.392847Z",
"url": "https://files.pythonhosted.org/packages/d7/e5/9285d41907f7ec5b7d6fa3f04dd85ea0818f1ebe820065be0e8e2859b88c/pysamosa-1.0.0-pp38-pypy38_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "72d43493304d033a0767e416851153b292acdc15646a712a34ca71b7c2f7fa8e",
"md5": "12fa463c4db7119add1b6b1406830ad2",
"sha256": "cd80455c0ff9a557fc9239bec91c9b368c1d32ec2e96019e621001238e8e65b3"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "12fa463c4db7119add1b6b1406830ad2",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 3948906,
"upload_time": "2023-08-13T08:45:14",
"upload_time_iso_8601": "2023-08-13T08:45:14.907251Z",
"url": "https://files.pythonhosted.org/packages/72/d4/3493304d033a0767e416851153b292acdc15646a712a34ca71b7c2f7fa8e/pysamosa-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "54cbca2a66b6378e6b989f2d7fd0be2ba18e9a9d129883217492408b71091df4",
"md5": "c423ce191c87b0453f7cfa72fc555da0",
"sha256": "cef436779b650840e905abd2b82f1709b05004ffa19a662bc2762a28e34d8198"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c423ce191c87b0453f7cfa72fc555da0",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 3963078,
"upload_time": "2023-08-13T08:45:16",
"upload_time_iso_8601": "2023-08-13T08:45:16.875084Z",
"url": "https://files.pythonhosted.org/packages/54/cb/ca2a66b6378e6b989f2d7fd0be2ba18e9a9d129883217492408b71091df4/pysamosa-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1b9c863d9430c60e4ca657dd621f42f269a5ca20fad4f4a89bd7834464f33477",
"md5": "eb944288e16bb35130682d893983267f",
"sha256": "5213eb10fdc2e0523a01b7b080731a6543e47e380a4fdb7b86fe5ded3565cfa1"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "eb944288e16bb35130682d893983267f",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 3964174,
"upload_time": "2023-08-13T08:45:19",
"upload_time_iso_8601": "2023-08-13T08:45:19.173474Z",
"url": "https://files.pythonhosted.org/packages/1b/9c/863d9430c60e4ca657dd621f42f269a5ca20fad4f4a89bd7834464f33477/pysamosa-1.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c5401ab3efd906dfb090ce517f11eff50e6d168efe9f26735ff9383b52241dc3",
"md5": "a013634f3ae338efd05e8205e0afc588",
"sha256": "c6ac1ddd9b61636a806977ac80bb8dbdd1e0962e634448e51417e90f21f17cdf"
},
"downloads": -1,
"filename": "pysamosa-1.0.0-pp39-pypy39_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "a013634f3ae338efd05e8205e0afc588",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 3953595,
"upload_time": "2023-08-13T08:45:20",
"upload_time_iso_8601": "2023-08-13T08:45:20.926879Z",
"url": "https://files.pythonhosted.org/packages/c5/40/1ab3efd906dfb090ce517f11eff50e6d168efe9f26735ff9383b52241dc3/pysamosa-1.0.0-pp39-pypy39_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0e8ec1caca44fee3272cec7b88cef924b1c9f5865d23b14ab27f636e32ae6788",
"md5": "11082554e7284ec55c482c34284eec64",
"sha256": "5ebdb48ea9ea47d8f329122ad2cae6bea6868b220260257f17ad254eca08c617"
},
"downloads": -1,
"filename": "pysamosa-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "11082554e7284ec55c482c34284eec64",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8006347,
"upload_time": "2023-08-13T08:45:22",
"upload_time_iso_8601": "2023-08-13T08:45:22.829701Z",
"url": "https://files.pythonhosted.org/packages/0e/8e/c1caca44fee3272cec7b88cef924b1c9f5865d23b14ab27f636e32ae6788/pysamosa-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-13 08:45:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "floschl",
"github_project": "pysamosa",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "pysamosa"
}