cxxbuild


Namecxxbuild JSON
Version 1.5.2 PyPI version JSON
download
home_page
SummaryCxxBuild is a python script to easily build C++ programs: just invoke 'cxxbuild' and it works!
upload_time2024-01-05 03:02:47
maintainer
docs_urlNone
author
requires_python>=3.9
licenseMIT License Copyright (c) 2023 manydeps Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords build cplusplus dependencies cxxdeps cmake bazel
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # cxxbuild / cxxdeps

[![Demo on windows, linux and macos](https://github.com/manydeps/cxxbuild/actions/workflows/demo.yml/badge.svg)](https://github.com/manydeps/cxxbuild/actions/workflows/demo.yml)

![C++11](https://img.shields.io/badge/std-c%2B%2B11-blue) ![C++14](https://img.shields.io/badge/std-c%2B%2B14-blue) ![C++17](https://img.shields.io/badge/std-c%2B%2B17-blue) ![C++20](https://img.shields.io/badge/std-c%2B%2B20-blue) ![C++23](https://img.shields.io/badge/std-c%2B%2B23-blue)

[![DOI](https://zenodo.org/badge/715821683.svg)](https://zenodo.org/doi/10.5281/zenodo.10447208)

Version: `cxxbuild version=1.5.2`  Installation: `pip install cxxbuild`

cxxbuild is a python script to easily build C++ programs: just invoke 'cxxbuild' and it works!

For basic introduction, read the post: [Using cxxbuild to easily build C++ project with tests and dependencies](https://igormcoelho.medium.com/using-cxxbuild-to-easily-build-c-project-with-tests-and-dependencies-a3726b453f75)

We know it is very hard to start a C++ project and learn basics of build systems such as CMake and Bazel, and package managers like conan and vcpkg... so just type "cxxbuild" and be happy!

The strongest point of this project is the `cxxdeps.txt` format, 
that allow easy specification of dependencies from different package managers (in similar style of python `requirements.txt` format)

To use it locally, just copy [cxxbuild/cxxbuild.py](cxxbuild/cxxbuild.py) file to your project and execute it: `python3 cxxbuild.py help`

Or, just install it from pip: `pip install cxxbuild`

Then, just run: `cxxbuild help`

From this point, we assume cxxbuild is installed in your system :)

## Basic commands

`cxxbuild` has four main modes (three unimplemented, yet):

- build mode (default): just pass some root directory with files
- clean mode (unimplemented): will clean specific build files
- lint mode (unimplemented): will lint project files
- test mode (unimplemented): will run project tests

## Running demos 


- Demo 1 [README](demo/project1/README.md): `cxxbuild demo/project1`
- Demo 2 [README](demo/project2/README.md): `cxxbuild demo/project2`
- Demo 3 [README](demo/project3/README.md): `cxxbuild demo/project3`
- Demo 4 [README](demo/project4/README.md): `cxxbuild demo/project4 --c++20`

All of them support both CMake and Bazel build systems,
for common platforms Linux, Windows and Mac.

## Test summary for demos

- demo/project1: runs on linux, osx and windows* (bash only) - default c++17 (works with c++11 to c++23)
- demo/project2: runs on linux, osx and windows (bash and cmd) - default c++17 (works with c++11 to c++23)
- demo/project3: runs on linux, osx and windows* (bash only) - default c++17 (works with c++11 to c++23)
- demo/project4: runs on linux, osx and windows* (bash only) - requires minimum c++20

(*) Some limitations on windows/cmd are related to fmt dependency on cmake, not cxxbuild.

## Running demo 1 (explained)

`python3 cxxbuild/cxxbuild.py demo/project1`

OR, after installation:

`cxxbuild demo/project1`


It will:

- read dependencies from cxxdeps.txt file, if available
- generate a CMakeLists.txt on project (backup your file if you already have one!)
- build with cmake+ninja (default) or any other provided build system

Generated binaries will be on `demo/project1/build/`

- `demo1`: binary with entrypoint (main) for demo (file: `src/demo1.cpp`)
- `my_test`: binary with unit tests (file: `tests/my_test.cpp`)

To clean it (since `clean` command is still unimplemented), just delete `build/` folder.

### Expected project organization

The tool cxxbuild assumes that:

- source code (.cpp, .cc, .c, etc) is located on a `src/` folder
    * this can be changed with `--src SRC_PATH` option
- test code is located on a `tests/` folder
    * this can be changed with `--tests TEST_PATH` option
- header only libraries are located on a `include/` folder
    * this can be changed with `--include INCLUDE_PATH` option

The reason for `src/` folder is:

1. enforces some "basic" project organization (I know many people don't like a `src/` folder...)
2. recursively searching source files on root folder yields some issues,
as `build/` folder in same directory level becomes contaminated with external .cpp dependencies, thus requiring some clever exclusion algorithm

The reason for `tests/` folder is:

1. enforces some "basic" project organization (I know many people don't like a `tests/` folder...)
2. it is hard to distinguish between binary `.cpp` files and unit test files, 
unless  some other "standard" is imposed, such as naming `tests.cpp` (but what about multiple tests then?)

The reason for `include/` folder is:

1. this is classic organization, c'mon!!!
2. this is necessary to isolate header only library and make it easier for others to include them... if you don't want to offer a header only library, ok then, just put everything on `src/` folder and that is fine!

These things can be easily changed, either manually on [cxxbuild.py](cxxbuild.py) script, or by opening an issue and we discuss if some other option is really necessary... 
Note that this project does not aim to have many personalizations and complications, let's use KISS method!

## Advantages and Drawbacks

Greatest advantage of this project is to easily describe dependencies on a `cxxdeps.txt` file.

An example is:

```
fmt == "9.1.0"     [ fmt ]                    git *    https://github.com/fmtlib/fmt.git
Catch2 == "v3.3.1" [ Catch2::Catch2WithMain ] git test https://github.com/catchorg/Catch2.git
m
```

This is quite simple and powerful, with few lines describing the following:

- take `fmt` project from git repository in specific version
- take `Catch2` project from git repository in specific version and use it for tests only
- take system `-lm` dependency

The `git` part could be any package manager, such as conan and vcpkg, although not implemented yet!
The `git` can be specified for `cmake` or `bazel`, like `cmake+git` or `bazel+git`.

It can also be `bcr`, for the Bazel Central Registry, or more specifically: `bazel+bcr` (not supported for `cmake+bcr`)

### Ongoing extensions for cxxdeps
Some ongoing extensions will allow managing dev dependencies, 
such as build systems (cmake, bazel, etc) and C/C++ package managers (conan, etc), all automatically on `cxxdeps.txt` (or exclusively on `cxxdeps.dev.txt`):
```
cmake == *          [ cmake ]       pip dev [ ninja ]
ninja:windows == *  [ ninja ]       choco dev
ninja:linux == *    [ ninja-build ] apt dev
bazel:windows == *  [ bazelisk ]    choco dev 
bazel:linux == *    [ bazelisk ]    npm dev 
conan == *          [ conan ]       pip dev
```

Note that we can support triplet package notation on project name, 
so as different system package managers (such as apt on ubuntu/debian).
Some package dependency notation can be useful as well to orchestrate installation
flow, when necessary (as an example, ninja could be forcefully installed before cmake).

Other extension is some `build` section... similar to `dev`, but it installs automatically
before build process. The `build` can be seen as a *mandatory* `dev` dependency.
Some *configure* actions and *patches* could also happen in `build` phase 
(which are in fact some *pre-build* actions).

cxxdeps is a cool thing!
- In fact, this was the most motivating part of this project, so feel free to check more painful experiences directly on [manydeps-gmp](https://github.com/manydeps/manydeps-gmp) project!

### Writing cxxdeps in `.toml` format

It is currently possible to write `cxxdeps.toml` file, that automatically generates `cxxdeps.txt` and `cxxdeps.dev.txt` files. Some users may find this easier to understand:

```toml
[all]
fmt={ git="https://github.com/fmtlib/fmt.git", tag="9.1.0", links=["fmt"] }
m={ links=["m"] }
pthread={}

[test]
catch2={ git="https://github.com/catchorg/Catch2.git", tag="v3.3.1", links=[
    "Catch2::Catch2WithMain"
] }

[dev]
bazel=[{ choco=["bazelisk"], platform="windows" }, { npm=["bazelisk"], platform="linux" }]
ninja=[{ choco=["ninja"], platform="windows" }, { apt=["ninja-build"], platform="linux" }]
cmake={ pip=["cmake"], deps=["ninja"] }
conan={ pip=["conan"] }
```

Here one can find sections `all` (equivalent to `*`), `test` and `dev`.
This example install system libraries `-lm` and `-lpthread` for runtime dependencies (`all`),
`catch2` test library linked with cmake `Catch2::Catch2WithMain`, and defines several dev packages.

Check an example in project3 with: `python3 cxxbuild/cxxbuild.py demo/project3`

### Drawbacks

None that I know, yet :)

Some people may dislike the imposed organization, like `src/` and `tests/`, but it can be changed manually on script. The idea here is to really make a simplistic script, that really works with highly complex setups (such as taking dependencies from remote and dealing with build systems like cmake and bazel). These things are hard to do even for some experienced c++ programmers... so, as long as it is simple and it works, that is fine! If it doesn't work, file an issue!

## Related Works

- See [ccbuild from debian](https://packages.debian.org/pt-br/sid/devel/ccbuild)
   * See [bneijt/ccbuild](https://github.com/bneijt/ccbuild)
- See [Mantle project](https://github.com/jpxor/Mantle) (experimental but with similar ideas)

None of them support dependencies, such as `cxxdeps.txt`, or even build systems such as cmake and bazel.

Hopefully, when this project is fully finished, C++ will be a better place for all of us :)


## Acknowledgements

Thanks for those trying to use and improve this software.
Specially, thanks Fellipe Pessanha for early suggesting integrating toml support for cxxdeps.

### Citation

```
Igor Machado Coelho. (2023). cxxbuild project. Zenodo. https://doi.org/10.5281/zenodo.10447208
```

## License

Dual licensed: Creative Commons Attribution 4.0 International OR MIT License

Copyleft 2023 

Igor Machado Coelho


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "cxxbuild",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "build,cplusplus,dependencies,cxxdeps,cmake,bazel",
    "author": "",
    "author_email": "Igor Machado Coelho <igormcoelho@proton.me>",
    "download_url": "https://files.pythonhosted.org/packages/ed/0a/81ce12ef64c241b8dd322491077db75abc8ae67a042312d7187f7df7e2e6/cxxbuild-1.5.2.tar.gz",
    "platform": null,
    "description": "# cxxbuild / cxxdeps\n\n[![Demo on windows, linux and macos](https://github.com/manydeps/cxxbuild/actions/workflows/demo.yml/badge.svg)](https://github.com/manydeps/cxxbuild/actions/workflows/demo.yml)\n\n![C++11](https://img.shields.io/badge/std-c%2B%2B11-blue) ![C++14](https://img.shields.io/badge/std-c%2B%2B14-blue) ![C++17](https://img.shields.io/badge/std-c%2B%2B17-blue) ![C++20](https://img.shields.io/badge/std-c%2B%2B20-blue) ![C++23](https://img.shields.io/badge/std-c%2B%2B23-blue)\n\n[![DOI](https://zenodo.org/badge/715821683.svg)](https://zenodo.org/doi/10.5281/zenodo.10447208)\n\nVersion: `cxxbuild version=1.5.2`  Installation: `pip install cxxbuild`\n\ncxxbuild is a python script to easily build C++ programs: just invoke 'cxxbuild' and it works!\n\nFor basic introduction, read the post: [Using cxxbuild to easily build C++ project with tests and dependencies](https://igormcoelho.medium.com/using-cxxbuild-to-easily-build-c-project-with-tests-and-dependencies-a3726b453f75)\n\nWe know it is very hard to start a C++ project and learn basics of build systems such as CMake and Bazel, and package managers like conan and vcpkg... so just type \"cxxbuild\" and be happy!\n\nThe strongest point of this project is the `cxxdeps.txt` format, \nthat allow easy specification of dependencies from different package managers (in similar style of python `requirements.txt` format)\n\nTo use it locally, just copy [cxxbuild/cxxbuild.py](cxxbuild/cxxbuild.py) file to your project and execute it: `python3 cxxbuild.py help`\n\nOr, just install it from pip: `pip install cxxbuild`\n\nThen, just run: `cxxbuild help`\n\nFrom this point, we assume cxxbuild is installed in your system :)\n\n## Basic commands\n\n`cxxbuild` has four main modes (three unimplemented, yet):\n\n- build mode (default): just pass some root directory with files\n- clean mode (unimplemented): will clean specific build files\n- lint mode (unimplemented): will lint project files\n- test mode (unimplemented): will run project tests\n\n## Running demos \n\n\n- Demo 1 [README](demo/project1/README.md): `cxxbuild demo/project1`\n- Demo 2 [README](demo/project2/README.md): `cxxbuild demo/project2`\n- Demo 3 [README](demo/project3/README.md): `cxxbuild demo/project3`\n- Demo 4 [README](demo/project4/README.md): `cxxbuild demo/project4 --c++20`\n\nAll of them support both CMake and Bazel build systems,\nfor common platforms Linux, Windows and Mac.\n\n## Test summary for demos\n\n- demo/project1: runs on linux, osx and windows* (bash only) - default c++17 (works with c++11 to c++23)\n- demo/project2: runs on linux, osx and windows (bash and cmd) - default c++17 (works with c++11 to c++23)\n- demo/project3: runs on linux, osx and windows* (bash only) - default c++17 (works with c++11 to c++23)\n- demo/project4: runs on linux, osx and windows* (bash only) - requires minimum c++20\n\n(*) Some limitations on windows/cmd are related to fmt dependency on cmake, not cxxbuild.\n\n## Running demo 1 (explained)\n\n`python3 cxxbuild/cxxbuild.py demo/project1`\n\nOR, after installation:\n\n`cxxbuild demo/project1`\n\n\nIt will:\n\n- read dependencies from cxxdeps.txt file, if available\n- generate a CMakeLists.txt on project (backup your file if you already have one!)\n- build with cmake+ninja (default) or any other provided build system\n\nGenerated binaries will be on `demo/project1/build/`\n\n- `demo1`: binary with entrypoint (main) for demo (file: `src/demo1.cpp`)\n- `my_test`: binary with unit tests (file: `tests/my_test.cpp`)\n\nTo clean it (since `clean` command is still unimplemented), just delete `build/` folder.\n\n### Expected project organization\n\nThe tool cxxbuild assumes that:\n\n- source code (.cpp, .cc, .c, etc) is located on a `src/` folder\n    * this can be changed with `--src SRC_PATH` option\n- test code is located on a `tests/` folder\n    * this can be changed with `--tests TEST_PATH` option\n- header only libraries are located on a `include/` folder\n    * this can be changed with `--include INCLUDE_PATH` option\n\nThe reason for `src/` folder is:\n\n1. enforces some \"basic\" project organization (I know many people don't like a `src/` folder...)\n2. recursively searching source files on root folder yields some issues,\nas `build/` folder in same directory level becomes contaminated with external .cpp dependencies, thus requiring some clever exclusion algorithm\n\nThe reason for `tests/` folder is:\n\n1. enforces some \"basic\" project organization (I know many people don't like a `tests/` folder...)\n2. it is hard to distinguish between binary `.cpp` files and unit test files, \nunless  some other \"standard\" is imposed, such as naming `tests.cpp` (but what about multiple tests then?)\n\nThe reason for `include/` folder is:\n\n1. this is classic organization, c'mon!!!\n2. this is necessary to isolate header only library and make it easier for others to include them... if you don't want to offer a header only library, ok then, just put everything on `src/` folder and that is fine!\n\nThese things can be easily changed, either manually on [cxxbuild.py](cxxbuild.py) script, or by opening an issue and we discuss if some other option is really necessary... \nNote that this project does not aim to have many personalizations and complications, let's use KISS method!\n\n## Advantages and Drawbacks\n\nGreatest advantage of this project is to easily describe dependencies on a `cxxdeps.txt` file.\n\nAn example is:\n\n```\nfmt == \"9.1.0\"     [ fmt ]                    git *    https://github.com/fmtlib/fmt.git\nCatch2 == \"v3.3.1\" [ Catch2::Catch2WithMain ] git test https://github.com/catchorg/Catch2.git\nm\n```\n\nThis is quite simple and powerful, with few lines describing the following:\n\n- take `fmt` project from git repository in specific version\n- take `Catch2` project from git repository in specific version and use it for tests only\n- take system `-lm` dependency\n\nThe `git` part could be any package manager, such as conan and vcpkg, although not implemented yet!\nThe `git` can be specified for `cmake` or `bazel`, like `cmake+git` or `bazel+git`.\n\nIt can also be `bcr`, for the Bazel Central Registry, or more specifically: `bazel+bcr` (not supported for `cmake+bcr`)\n\n### Ongoing extensions for cxxdeps\nSome ongoing extensions will allow managing dev dependencies, \nsuch as build systems (cmake, bazel, etc) and C/C++ package managers (conan, etc), all automatically on `cxxdeps.txt` (or exclusively on `cxxdeps.dev.txt`):\n```\ncmake == *          [ cmake ]       pip dev [ ninja ]\nninja:windows == *  [ ninja ]       choco dev\nninja:linux == *    [ ninja-build ] apt dev\nbazel:windows == *  [ bazelisk ]    choco dev \nbazel:linux == *    [ bazelisk ]    npm dev \nconan == *          [ conan ]       pip dev\n```\n\nNote that we can support triplet package notation on project name, \nso as different system package managers (such as apt on ubuntu/debian).\nSome package dependency notation can be useful as well to orchestrate installation\nflow, when necessary (as an example, ninja could be forcefully installed before cmake).\n\nOther extension is some `build` section... similar to `dev`, but it installs automatically\nbefore build process. The `build` can be seen as a *mandatory* `dev` dependency.\nSome *configure* actions and *patches* could also happen in `build` phase \n(which are in fact some *pre-build* actions).\n\ncxxdeps is a cool thing!\n- In fact, this was the most motivating part of this project, so feel free to check more painful experiences directly on [manydeps-gmp](https://github.com/manydeps/manydeps-gmp) project!\n\n### Writing cxxdeps in `.toml` format\n\nIt is currently possible to write `cxxdeps.toml` file, that automatically generates `cxxdeps.txt` and `cxxdeps.dev.txt` files. Some users may find this easier to understand:\n\n```toml\n[all]\nfmt={ git=\"https://github.com/fmtlib/fmt.git\", tag=\"9.1.0\", links=[\"fmt\"] }\nm={ links=[\"m\"] }\npthread={}\n\n[test]\ncatch2={ git=\"https://github.com/catchorg/Catch2.git\", tag=\"v3.3.1\", links=[\n    \"Catch2::Catch2WithMain\"\n] }\n\n[dev]\nbazel=[{ choco=[\"bazelisk\"], platform=\"windows\" }, { npm=[\"bazelisk\"], platform=\"linux\" }]\nninja=[{ choco=[\"ninja\"], platform=\"windows\" }, { apt=[\"ninja-build\"], platform=\"linux\" }]\ncmake={ pip=[\"cmake\"], deps=[\"ninja\"] }\nconan={ pip=[\"conan\"] }\n```\n\nHere one can find sections `all` (equivalent to `*`), `test` and `dev`.\nThis example install system libraries `-lm` and `-lpthread` for runtime dependencies (`all`),\n`catch2` test library linked with cmake `Catch2::Catch2WithMain`, and defines several dev packages.\n\nCheck an example in project3 with: `python3 cxxbuild/cxxbuild.py demo/project3`\n\n### Drawbacks\n\nNone that I know, yet :)\n\nSome people may dislike the imposed organization, like `src/` and `tests/`, but it can be changed manually on script. The idea here is to really make a simplistic script, that really works with highly complex setups (such as taking dependencies from remote and dealing with build systems like cmake and bazel). These things are hard to do even for some experienced c++ programmers... so, as long as it is simple and it works, that is fine! If it doesn't work, file an issue!\n\n## Related Works\n\n- See [ccbuild from debian](https://packages.debian.org/pt-br/sid/devel/ccbuild)\n   * See [bneijt/ccbuild](https://github.com/bneijt/ccbuild)\n- See [Mantle project](https://github.com/jpxor/Mantle) (experimental but with similar ideas)\n\nNone of them support dependencies, such as `cxxdeps.txt`, or even build systems such as cmake and bazel.\n\nHopefully, when this project is fully finished, C++ will be a better place for all of us :)\n\n\n## Acknowledgements\n\nThanks for those trying to use and improve this software.\nSpecially, thanks Fellipe Pessanha for early suggesting integrating toml support for cxxdeps.\n\n### Citation\n\n```\nIgor Machado Coelho. (2023). cxxbuild project. Zenodo. https://doi.org/10.5281/zenodo.10447208\n```\n\n## License\n\nDual licensed: Creative Commons Attribution 4.0 International OR MIT License\n\nCopyleft 2023 \n\nIgor Machado Coelho\n\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2023 manydeps  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "CxxBuild is a python script to easily build C++ programs: just invoke 'cxxbuild' and it works!",
    "version": "1.5.2",
    "project_urls": {
        "Homepage": "https://github.com/manydeps/cxxbuild"
    },
    "split_keywords": [
        "build",
        "cplusplus",
        "dependencies",
        "cxxdeps",
        "cmake",
        "bazel"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "33ae05cb830160c30ede8a79e5cc6703b65f56d7d892e8f19dd4cff9311b3138",
                "md5": "0c5296ace00f2555c4249ceba868d07e",
                "sha256": "32efcad88b8bb91b476703a95b2069502e78fbc9f2dcf575f7ecc8c8cd2f7dc0"
            },
            "downloads": -1,
            "filename": "cxxbuild-1.5.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0c5296ace00f2555c4249ceba868d07e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 15953,
            "upload_time": "2024-01-05T03:02:45",
            "upload_time_iso_8601": "2024-01-05T03:02:45.080046Z",
            "url": "https://files.pythonhosted.org/packages/33/ae/05cb830160c30ede8a79e5cc6703b65f56d7d892e8f19dd4cff9311b3138/cxxbuild-1.5.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ed0a81ce12ef64c241b8dd322491077db75abc8ae67a042312d7187f7df7e2e6",
                "md5": "c224e3eb18ac4a03b66fcf24069b85d9",
                "sha256": "fc6d3ec181cf33849bb8469b908f79a9005b4986d3edff094cd67017e30e3d12"
            },
            "downloads": -1,
            "filename": "cxxbuild-1.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c224e3eb18ac4a03b66fcf24069b85d9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 19698,
            "upload_time": "2024-01-05T03:02:47",
            "upload_time_iso_8601": "2024-01-05T03:02:47.026388Z",
            "url": "https://files.pythonhosted.org/packages/ed/0a/81ce12ef64c241b8dd322491077db75abc8ae67a042312d7187f7df7e2e6/cxxbuild-1.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-05 03:02:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "manydeps",
    "github_project": "cxxbuild",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "cxxbuild"
}
        
Elapsed time: 0.17330s