samlib


Namesamlib JSON
Version 1.280.0.1 PyPI version JSON
download
home_page
SummaryHigh-level library for NREL's SAM Simulation Core (SSC)
upload_time2023-12-08 16:43:58
maintainer
docs_urlNone
author
requires_python>=3.10
license
keywords nrel sam ssc system advisor model model techno-economic
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # samlib

_Samlib_ is a high-level Python wrapper to the [_SAM_ _SSC_ library](https://github.com/NREL/ssc/)
from the [_SAM_ SDK](https://sam.nrel.gov/sdk).


## Overview

_Samlib_ uses [cffi](https://pypi.org/project/cffi/) to build Pythonic library
bindings to the _SAM_ _SSC_ library. It includes _typing_ stubs for static type
analysis and code completion.


## Installation

Install _samlib_ using *pip*:
```shell
pip install samlib
```


## Example usage

```python
import samlib
from samlib.modules import pvsamv1

wfd = samlib.Data()  # weather forecast data
wfd.lat = 38.743212
wfd.lon = -117.431238
...

data = pvsamv1.Data()
data.solar_resource_data = wfd
data.use_wf_albedo = 0
...

module = pvsamv1.Module()
module.exec(data)

# Use results saved in data
```


## Versioning

_Samlib_ uses semantic versioning with a twist. The version includes the _SSC_
revision number after the API major version and before the remaining API
version: _major.REV.minor_. This provides for pinning _samlib_ to a particular
API version or to a combination of API + _SSC_ revision. The _SSC_ revision is
the final component of _SSC_ release versions.

Here are a couple of examples:
* `samlib ~= 0` specifies _samlib_ API version 0, using the latest _SSC_ revision.
* `samlib ~= 0.240` specifies _samlib_ API version 0, using _SSC_ revision 240
  (which corresponds to SSC release _2020.2.29.r2.ssc.240_)

The major version is incremented for potentially breaking _samlib_ API changes
while the minor version is incremented for non-breaking API changes. There may
be additional _.N_ suffixes for releases with duplicate _SSC_ library revisions
or _rcN_ or _.postN_ suffixes for release candidates or post-release,
build-only updates.


## License

_Samlib_ is provided under a [BSD 3-Clause license](LICENSE).

The _SAM_ _SSC_, distributed in binary form in _samlib_ wheels, is also
licensed under a [BSD 3-clause license](SSC-LICENSE).


## Building

Building requires _cmake_ >= 3.24, a C++ compiler, and the Python _build_
package, which can be installed with `pip install --upgrade build`.

On windows, _cmake_ can be installed using `winget install --id Kitware.CMake`.

_CMake_ and _SSC_ options can be set using environment variables. See the
[_CMake_](https://cmake.org/cmake/help/latest/) and
[_SSC_](https://github.com/NREL/SAM/wiki) documentation for more details.

Environment variables may be provided to control the build.

#### Variables for building sdist or wheel targets:

SSC_RELEASE=TAG

: SSC revision to download and build; TAG should match an SSC tag from the NREL
  SSC git repository in the form `YYYY.MM.DD[.rcN].ssc.REV`. This variable is
  required when building sdist or wheel distributions from git source.

SAMLIB_EXTRA_VERSION=X

: Append X to the generated wheel version

#### Variables for building wheel targets:

SSC_BUILD_DIR=PATH

: Absolute path to a build directory; can speed up repeated builds

SSC_BUILD_JOBS=N

: Number of parallel build jobs

SSC_BUILD_DEBUG=yes

: Enable debug build

SSC_PATCHES=LIST

: A space-separated list of patches (without suffix), from the patches
  directory, to apply before building

PLATFORM_NAME=NAME

: Build platform name (e.g., manylinux2010_x86_64) The _wheel_ build target
  requires environment variables to control the build.

The _build-samlib.py_ script provides a wrapper for building _samlib_ source
and wheel distributions and sets the appropriate environment variables based
on the options provided during execution.


### Universal wheels

Building universal (fat) wheels on macOS requires a recent SDK. Execute the
following command, replacing the deployment target if desired.

```shell
env MACOSX_DEPLOYMENT_TARGET=10.9 CMAKE_OSX_ARCHITECTURES="arm64;x86_64" CFLAGS="-arch arm64 -arch x86_64" \
  python build-samlib.py --build-dir build/macos --plat-name macosx_10_9_universal2
```


### Building *manylinux* wheels

Building *manylinux* wheels requires *docker* and one of the
[manylinux](https://github.com/pypa/manylinux) docker images.

1. Pull the latest *manylinux* image for the desired architecture:
```shell
docker pull quay.io/pypa/manylinux_2_28_x86_64
```
2. Open a bash shell in the docker container:
```shell
docker run -it --rm --volume $PWD:/home/samlib:rw --user $UID:$GID --workdir /home/samlib quay.io/pypa/manylinux_2_28_x86_64 bash -l
```
3. Build a wheel for each desired Python version:
```shell
/opt/python/cp38-cp38/bin/python build-samlib.py --build-dir=build/manylinux --jobs=10 --plat-name=$AUDITWHEEL_PLAT
```
4. Exit the shell and docker container:
```shell
exit
```

Optionally, this one command can be used to build wheels for a range of Python versions:
```shell
docker pull quay.io/pypa/manylinux_2_28_x86_64 && \
docker run -it --rm --volume "$PWD":/home/samlib:rw --user "$UID:$GID" --workdir /home/samlib \
  quay.io/pypa/manylinux_2_28_x86_64 bash -c \
  'for v in {10..12}; do /opt/python/cp3$v-cp3$v/bin/python build-samlib.py --build-dir=build/manylinux --jobs=10 --plat-name="$AUDITWHEEL_PLAT"; done'
```


### Build issues

The following are build issues that might occur and possible solutions.

#### <limits> C++ header not included

_SSC_ revision 267, 268, and 274 may fail to build on Linux with the following error:

```
error: ‘numeric_limits’ is not a member of ‘std’
```

Applying the _limits_ patch should fix the issue.

```shell
env SAMLIB_PATCHES="limits" ... pyproject-build
```

#### gcc with -Werror=alloc-size-larger-than=

Recent versions of gcc may produce an error similar to the following error when building:

```
error: argument 1 range [18446744056529682432, 18446744073709551608] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]
   52 |   dest = (type *) malloc( sizeof(type)*size ); \
      |                   ~~~~~~^~~~~~~~~~~~~~~~~~~~~
```

This check can be disabled by setting `CXXFLAGS="-Wno-error=alloc-size-larger-than="`:

```shell
env CXXFLAGS="-Wno-error=alloc-size-larger-than=" python build-smalib.py
```

#### Visual Studio is missing ATL build tools

If _C++ ATL Build Tools_ haven't been installed for Visual Studio, the following error may be seen:

```
fatal error C1083: Cannot open include file: 'AtlBase.h': No such file or directory
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "samlib",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "NREL,SAM,SSC,System Advisor Model,model,techno-economic",
    "author": "",
    "author_email": "Brandon Carpenter <brandon@avantus.com>",
    "download_url": "https://files.pythonhosted.org/packages/ef/a7/4bbdf137d198e1b0042eaf922e910e6d8350887f2347e2bb623dfc33acb8/samlib-1.280.0.1.tar.gz",
    "platform": null,
    "description": "# samlib\n\n_Samlib_ is a high-level Python wrapper to the [_SAM_ _SSC_ library](https://github.com/NREL/ssc/)\nfrom the [_SAM_ SDK](https://sam.nrel.gov/sdk).\n\n\n## Overview\n\n_Samlib_ uses [cffi](https://pypi.org/project/cffi/) to build Pythonic library\nbindings to the _SAM_ _SSC_ library. It includes _typing_ stubs for static type\nanalysis and code completion.\n\n\n## Installation\n\nInstall _samlib_ using *pip*:\n```shell\npip install samlib\n```\n\n\n## Example usage\n\n```python\nimport samlib\nfrom samlib.modules import pvsamv1\n\nwfd = samlib.Data()  # weather forecast data\nwfd.lat = 38.743212\nwfd.lon = -117.431238\n...\n\ndata = pvsamv1.Data()\ndata.solar_resource_data = wfd\ndata.use_wf_albedo = 0\n...\n\nmodule = pvsamv1.Module()\nmodule.exec(data)\n\n# Use results saved in data\n```\n\n\n## Versioning\n\n_Samlib_ uses semantic versioning with a twist. The version includes the _SSC_\nrevision number after the API major version and before the remaining API\nversion: _major.REV.minor_. This provides for pinning _samlib_ to a particular\nAPI version or to a combination of API + _SSC_ revision. The _SSC_ revision is\nthe final component of _SSC_ release versions.\n\nHere are a couple of examples:\n* `samlib ~= 0` specifies _samlib_ API version 0, using the latest _SSC_ revision.\n* `samlib ~= 0.240` specifies _samlib_ API version 0, using _SSC_ revision 240\n  (which corresponds to SSC release _2020.2.29.r2.ssc.240_)\n\nThe major version is incremented for potentially breaking _samlib_ API changes\nwhile the minor version is incremented for non-breaking API changes. There may\nbe additional _.N_ suffixes for releases with duplicate _SSC_ library revisions\nor _rcN_ or _.postN_ suffixes for release candidates or post-release,\nbuild-only updates.\n\n\n## License\n\n_Samlib_ is provided under a [BSD 3-Clause license](LICENSE).\n\nThe _SAM_ _SSC_, distributed in binary form in _samlib_ wheels, is also\nlicensed under a [BSD 3-clause license](SSC-LICENSE).\n\n\n## Building\n\nBuilding requires _cmake_ >= 3.24, a C++ compiler, and the Python _build_\npackage, which can be installed with `pip install --upgrade build`.\n\nOn windows, _cmake_ can be installed using `winget install --id Kitware.CMake`.\n\n_CMake_ and _SSC_ options can be set using environment variables. See the\n[_CMake_](https://cmake.org/cmake/help/latest/) and\n[_SSC_](https://github.com/NREL/SAM/wiki) documentation for more details.\n\nEnvironment variables may be provided to control the build.\n\n#### Variables for building sdist or wheel targets:\n\nSSC_RELEASE=TAG\n\n: SSC revision to download and build; TAG should match an SSC tag from the NREL\n  SSC git repository in the form `YYYY.MM.DD[.rcN].ssc.REV`. This variable is\n  required when building sdist or wheel distributions from git source.\n\nSAMLIB_EXTRA_VERSION=X\n\n: Append X to the generated wheel version\n\n#### Variables for building wheel targets:\n\nSSC_BUILD_DIR=PATH\n\n: Absolute path to a build directory; can speed up repeated builds\n\nSSC_BUILD_JOBS=N\n\n: Number of parallel build jobs\n\nSSC_BUILD_DEBUG=yes\n\n: Enable debug build\n\nSSC_PATCHES=LIST\n\n: A space-separated list of patches (without suffix), from the patches\n  directory, to apply before building\n\nPLATFORM_NAME=NAME\n\n: Build platform name (e.g., manylinux2010_x86_64) The _wheel_ build target\n  requires environment variables to control the build.\n\nThe _build-samlib.py_ script provides a wrapper for building _samlib_ source\nand wheel distributions and sets the appropriate environment variables based\non the options provided during execution.\n\n\n### Universal wheels\n\nBuilding universal (fat) wheels on macOS requires a recent SDK. Execute the\nfollowing command, replacing the deployment target if desired.\n\n```shell\nenv MACOSX_DEPLOYMENT_TARGET=10.9 CMAKE_OSX_ARCHITECTURES=\"arm64;x86_64\" CFLAGS=\"-arch arm64 -arch x86_64\" \\\n  python build-samlib.py --build-dir build/macos --plat-name macosx_10_9_universal2\n```\n\n\n### Building *manylinux* wheels\n\nBuilding *manylinux* wheels requires *docker* and one of the\n[manylinux](https://github.com/pypa/manylinux) docker images.\n\n1. Pull the latest *manylinux* image for the desired architecture:\n```shell\ndocker pull quay.io/pypa/manylinux_2_28_x86_64\n```\n2. Open a bash shell in the docker container:\n```shell\ndocker run -it --rm --volume $PWD:/home/samlib:rw --user $UID:$GID --workdir /home/samlib quay.io/pypa/manylinux_2_28_x86_64 bash -l\n```\n3. Build a wheel for each desired Python version:\n```shell\n/opt/python/cp38-cp38/bin/python build-samlib.py --build-dir=build/manylinux --jobs=10 --plat-name=$AUDITWHEEL_PLAT\n```\n4. Exit the shell and docker container:\n```shell\nexit\n```\n\nOptionally, this one command can be used to build wheels for a range of Python versions:\n```shell\ndocker pull quay.io/pypa/manylinux_2_28_x86_64 && \\\ndocker run -it --rm --volume \"$PWD\":/home/samlib:rw --user \"$UID:$GID\" --workdir /home/samlib \\\n  quay.io/pypa/manylinux_2_28_x86_64 bash -c \\\n  'for v in {10..12}; do /opt/python/cp3$v-cp3$v/bin/python build-samlib.py --build-dir=build/manylinux --jobs=10 --plat-name=\"$AUDITWHEEL_PLAT\"; done'\n```\n\n\n### Build issues\n\nThe following are build issues that might occur and possible solutions.\n\n#### <limits> C++ header not included\n\n_SSC_ revision 267, 268, and 274 may fail to build on Linux with the following error:\n\n```\nerror: \u2018numeric_limits\u2019 is not a member of \u2018std\u2019\n```\n\nApplying the _limits_ patch should fix the issue.\n\n```shell\nenv SAMLIB_PATCHES=\"limits\" ... pyproject-build\n```\n\n#### gcc with -Werror=alloc-size-larger-than=\n\nRecent versions of gcc may produce an error similar to the following error when building:\n\n```\nerror: argument 1 range [18446744056529682432, 18446744073709551608] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]\n   52 |   dest = (type *) malloc( sizeof(type)*size ); \\\n      |                   ~~~~~~^~~~~~~~~~~~~~~~~~~~~\n```\n\nThis check can be disabled by setting `CXXFLAGS=\"-Wno-error=alloc-size-larger-than=\"`:\n\n```shell\nenv CXXFLAGS=\"-Wno-error=alloc-size-larger-than=\" python build-smalib.py\n```\n\n#### Visual Studio is missing ATL build tools\n\nIf _C++ ATL Build Tools_ haven't been installed for Visual Studio, the following error may be seen:\n\n```\nfatal error C1083: Cannot open include file: 'AtlBase.h': No such file or directory\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "High-level library for NREL's SAM Simulation Core (SSC)",
    "version": "1.280.0.1",
    "project_urls": {
        "Source Code": "https://bitbucket.org/avantus/samlib"
    },
    "split_keywords": [
        "nrel",
        "sam",
        "ssc",
        "system advisor model",
        "model",
        "techno-economic"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ef2254fc8ef84abe59597549f3a2cd11da6321107717ad57b8d8ab013b502f7f",
                "md5": "8004e529f7eebdbeebdf8dac1b2a6181",
                "sha256": "6bef8574947fc4ba853702c89e248b881e9c0748236276de68e6e35bf1da702e"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "8004e529f7eebdbeebdf8dac1b2a6181",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 19224375,
            "upload_time": "2023-12-08T16:41:58",
            "upload_time_iso_8601": "2023-12-08T16:41:58.674229Z",
            "url": "https://files.pythonhosted.org/packages/ef/22/54fc8ef84abe59597549f3a2cd11da6321107717ad57b8d8ab013b502f7f/samlib-1.280.0.1-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e592300f12b3f1854e24e3f26e8c04d5562a565167dca92fe910b5308debca1c",
                "md5": "5aee24c37c1a4f5356b8a67bc12ba905",
                "sha256": "236861a8826be36cdd1611d5759ba7efd1530a455cce4daea6096cbbdeabd92a"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5aee24c37c1a4f5356b8a67bc12ba905",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 10956426,
            "upload_time": "2023-12-08T16:42:12",
            "upload_time_iso_8601": "2023-12-08T16:42:12.649967Z",
            "url": "https://files.pythonhosted.org/packages/e5/92/300f12b3f1854e24e3f26e8c04d5562a565167dca92fe910b5308debca1c/samlib-1.280.0.1-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "47ab9d257b9fe96b70130d18d05db3ffad53937b34a48f2fdaaab1c798f88c16",
                "md5": "f583ed9642b2b35155c0c7b08e24830f",
                "sha256": "1647045f503f1e53ff97a7fd3951459b8229ee57c8414645717f6c5d45d898f4"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f583ed9642b2b35155c0c7b08e24830f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 8486953,
            "upload_time": "2023-12-08T16:42:24",
            "upload_time_iso_8601": "2023-12-08T16:42:24.010586Z",
            "url": "https://files.pythonhosted.org/packages/47/ab/9d257b9fe96b70130d18d05db3ffad53937b34a48f2fdaaab1c798f88c16/samlib-1.280.0.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "30cd2b7cb711e701cbcda90eba29f39dbfe554bc9c7a7f23fb1e594ff1c9f292",
                "md5": "5f4fd31b98d7392f815c29d516757e69",
                "sha256": "176cad4cdf096e850662eff86656a863c7b495dd4789d4981bd54ec9f2d750d0"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "5f4fd31b98d7392f815c29d516757e69",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 19224375,
            "upload_time": "2023-12-08T16:42:46",
            "upload_time_iso_8601": "2023-12-08T16:42:46.276109Z",
            "url": "https://files.pythonhosted.org/packages/30/cd/2b7cb711e701cbcda90eba29f39dbfe554bc9c7a7f23fb1e594ff1c9f292/samlib-1.280.0.1-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e975ec53e294b9a23a20b381efa37c0de30633def28e2f406066663cc78fbbe",
                "md5": "04bd318a3c75748522258700630d5a98",
                "sha256": "3058ae156035ecc21d6310123180710712a600aae39b535628b9e3222c607849"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "04bd318a3c75748522258700630d5a98",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 10956429,
            "upload_time": "2023-12-08T16:43:00",
            "upload_time_iso_8601": "2023-12-08T16:43:00.654941Z",
            "url": "https://files.pythonhosted.org/packages/4e/97/5ec53e294b9a23a20b381efa37c0de30633def28e2f406066663cc78fbbe/samlib-1.280.0.1-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a4ae649aae557d6530ec0faeec9002ae6d8495449dbe0dd0a61e99e97c354e8c",
                "md5": "59344e88fb15bd6152ca69b40c3bcbd2",
                "sha256": "843739d431bc5d63ea48a6090fdf9af9122a270a1fa1238c4a4217e393ce2fd4"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "59344e88fb15bd6152ca69b40c3bcbd2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 8486950,
            "upload_time": "2023-12-08T16:43:11",
            "upload_time_iso_8601": "2023-12-08T16:43:11.120070Z",
            "url": "https://files.pythonhosted.org/packages/a4/ae/649aae557d6530ec0faeec9002ae6d8495449dbe0dd0a61e99e97c354e8c/samlib-1.280.0.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b7a9cce72c00f3cb8d35436d6b03a8370aae2a14c49d98daf6162cc36ce92878",
                "md5": "9a2928f44768fcf43382f293272533a1",
                "sha256": "fcbd69f54e99bb9090a774bba974d07d0278fe09519c77c46bc06bc22c8f9d9e"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp312-cp312-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "9a2928f44768fcf43382f293272533a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 19224564,
            "upload_time": "2023-12-08T16:43:30",
            "upload_time_iso_8601": "2023-12-08T16:43:30.453252Z",
            "url": "https://files.pythonhosted.org/packages/b7/a9/cce72c00f3cb8d35436d6b03a8370aae2a14c49d98daf6162cc36ce92878/samlib-1.280.0.1-cp312-cp312-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d70c84e920738510bb2d43090d93944c1c713bb1da869ec00677013cf8c2ea2",
                "md5": "f9ee9362b7a222b35ff2562a4817535a",
                "sha256": "15ca91bcb44cdd87626ab1861dd80b8508fde4e12b1cda00ee577b962c3c7576"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp312-cp312-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f9ee9362b7a222b35ff2562a4817535a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 10957795,
            "upload_time": "2023-12-08T16:43:43",
            "upload_time_iso_8601": "2023-12-08T16:43:43.955554Z",
            "url": "https://files.pythonhosted.org/packages/6d/70/c84e920738510bb2d43090d93944c1c713bb1da869ec00677013cf8c2ea2/samlib-1.280.0.1-cp312-cp312-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "952d128f8c499901ed1dfc60213a58f3b13dea6ac270036f3590e0e5fee03a0d",
                "md5": "2b9abbaac021ca49e0561409e1b87325",
                "sha256": "c3b3f1e07ff045700178d2d8d698895ed3f770f571eb9352fd17f41c1ed0ac62"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2b9abbaac021ca49e0561409e1b87325",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 8486158,
            "upload_time": "2023-12-08T16:43:53",
            "upload_time_iso_8601": "2023-12-08T16:43:53.955542Z",
            "url": "https://files.pythonhosted.org/packages/95/2d/128f8c499901ed1dfc60213a58f3b13dea6ac270036f3590e0e5fee03a0d/samlib-1.280.0.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "efa74bbdf137d198e1b0042eaf922e910e6d8350887f2347e2bb623dfc33acb8",
                "md5": "05c8aed5fde116df94aa366c9a1e332c",
                "sha256": "e138302fa8488d9cdbfefb5a2e1f7b875158a2daebf67ea8cccd1a210f0a07d9"
            },
            "downloads": -1,
            "filename": "samlib-1.280.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "05c8aed5fde116df94aa366c9a1e332c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 18728,
            "upload_time": "2023-12-08T16:43:58",
            "upload_time_iso_8601": "2023-12-08T16:43:58.625850Z",
            "url": "https://files.pythonhosted.org/packages/ef/a7/4bbdf137d198e1b0042eaf922e910e6d8350887f2347e2bb623dfc33acb8/samlib-1.280.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-08 16:43:58",
    "github": false,
    "gitlab": false,
    "bitbucket": true,
    "codeberg": false,
    "bitbucket_user": "avantus",
    "bitbucket_project": "samlib",
    "lcname": "samlib"
}
        
Elapsed time: 0.15634s