No project description provided
Project description
Move fast. Climb mountains. Don't break things.
Mountaineer 🏔️ is a framework to easily build webapps in Python and React. If you've used either of these languages before for development, we think you'll be right at home.
Main Features
Each framework has its own unique features and tradeoffs. Mountaineer focuses on developer productivity above all else, with production speed a close second.
- 📝 Typehints up and down the stack: frontend, backend, and database
- 🎙️ Trivially easy client<->server communication, data binding, and function calling
- 🌎 Optimized server rendering for better accessibility and SEO
- 🏹 Static analysis of web pages for strong validation: link validity, data access, etc.
- 🤩 Skip the API or Node.js server just to serve frontend clients
Getting Started
New Project
To get started as quickly as possible, we bundle a project generator that sets up a simple project after a quick Q&A.
$ pipx run create-mountaineer-app new
? Project name [my-project]: my_website
? Use poetry for dependency management? [Yes] Yes
? Author [Pierce Freeman <pierce@freeman.vc>] Default
? Use Tailwind CSS? [Yes] Yes
Mountaineer projects all follow a similar structure. After running this CLI you should see a new folder called my_website
, with folders like the following:
my_website
/controllers
/home.py
/views
/app
/home
/page.tsx
/layout.tsx
/package.json
/tsconfig.json
pyproject.toml
poetry.lock
Every service file is nested under the my_website
root package. Views are defined in a disk-based hierarchy (views
) where nested routes are in nested folders. This folder acts as your React project and is where you can define requirements and build parameters in package.json
and tsconfig.json
. Controllers are defined nearby in a flat folder (controllers
) where each route is a separate file.
Development
While doing development work, you'll usually want to preview the frontend and automatically build dependent files. You can do this with:
$ poetry run runserver
Or, if you just want to watch the source tree for changes without hosting the server:
$ poetry run watch
Walkthrough
Below we go through some of the unique aspects of mountaineer. Let's get started with creating a new controller, since this will define which data you can push and pull to your frontend.
from mountaineer.actions import sideeffect
from mountaineer.controller import ControllerBase
from mountaineer.render import RenderBase
from fastapi import Request
class HomeRender(RenderBase):
client_ip: str
current_count: int
class HomeController(ControllerBase):
url = "/"
view_path = "/app/home/page.tsx"
def __init__(self):
super().__init__()
self.global_count = 0
def render(self, request: Request) -> HomeRender:
return HomeRender(
client_ip=(
request.client.host
if request.client
else "unknown"
),
current_count=self.global_count,
)
The only three requirements of a controller are setting the:
- URL
- View path
- Initial data payload
This particular controller manages a counter that we want to persist across page loads. We keep it in memory attached to an instance of the class. It will therefore reset when the current webserver process ends. You could imagine we could also persist it to a database via some simple SQL queries, or an ORM like SqlAlchemy. For this walkthrough, database persistence is out of scope.
The client here doesn't need much data so we keep the HomeRender
model simple, just sending the current count and client IP address. The data from render()
is injected into the frontend as we'll see in a minute. This render() function accepts all parameters that FastAPI endpoints do: paths, query parameters, and dependency injected functions. Right now we're just grabbing the Request
object to get the client IP.
Let's move over to the frontend.
import React from "react";
import { useServer } from "./_server/useServer";
const Home = () => {
const serverState = useServer();
return (
<div>
<p>
Hello {serverState.client_ip}, current count is
{" "}{serverState.current_count}
</p>
</div>
);
};
export default Home;
We define a simple view to show the data coming from the backend. To accomplish this conventionally, we'd need to wire up an API layer, a Node server, or otherwise format the page with Jinja templates.
Here instead we use our automatically generated useServer()
hook. This hook payload will provide all the HomeRender
fields as properties of serverState. And it's available instantly on page load without any roundtrip fetches.
If you access this in your browser at localhost:5006/
we can see the counter, but we can't really do anything with it yet. Let's add some interactivity to increase the current count.
[!TIP] Try disabling Javascript in your browser. The page will still render as-is with all variables intact, thanks to our server-side rendering.
from pydantic import BaseModel
class IncrementCountRequest(BaseModel):
count: int
class HomeController(ControllerBase):
...
@sideeffect
def increment_count(self, payload: IncrementCountRequest):
self.global_count += payload.count
What good is a counter that doesn't count? We define a function that accepts a pydantic model, which defines an int increment. When clients provide this number we'll use this to update the global state.
The important part here is the @sideeffect
. This decorator indicates that we want the frontend to refresh its data, since after we update the global count on the server the client state will be newly outdated.
Mountaineer detects the presence of this sideeffect function and analyzes its signature. It then exposes this to the frontend as a normal async function.
import React from "react";
import { useServer } from "./_server/useServer";
const Home = () => {
const serverState = useServer();
return (
<div>
<p>
Hello {serverState.client_ip}, current count is
{" "}{serverState.current_count}
</p>
<button
onClick={async () => {
await serverState.increment_count({
requestBody: {
count: 1,
},
});
}}
>
Increment
</button>
</div>
);
};
export default Home;
We run this async handler when the button is clicked and specify our desired increment count. Notice that we don't have to read or parse the output value of this function. Since the function is marked as a sideeffect, the frontend will automatically refresh its data after the function is called.
Go ahead and load it in your browser. If you open up your web tools, you can increment the ticker and see POST requests sending data to the backend and receiving the current server state. The actual data updates and merging happens internally by mountaineer.
You can use these serverState variables anywhere you'd use dynamic React state variables. But unlike React state, these variables are automatically updated when a relevant sideeffect is triggered.
And that's it. We've just built a fully interactive web application without having to worry about an explicit API. You specify the data model and actions on the server and the appropriate frontend hooks are generated and updated automatically. It gives you the power of server rendered html and the interactivity of a virtual DOM, without having to compromise on complicated data mutations to keep everything in sync.
Learn More
We have additional documentation that does more of a technical deep dive on different features of mountaineer. We order these roughly in the order that we anticipate you'll need them.
- Client Actions: Details on @sideeffect, @passthrough, and masking @sideeffect fields for partial re-rendering.
- View Definition: How to define the view and use the serverState hook. Covers
page.tsx
andlayout.tsx
conventions to easily nest your site designs. - Page Metadata: How to set the title, description, and other metadata for your pages.
- Link Generation: Generate links to other pages within your webapp, with typehinting and automatic URL generation.
- Error Handling: Conventions for handling client-side errors while fetching data in your webapp.
- PostCSS: PostCSS build plugin for TailwindCSS support and other CSS processing.
- Core Library: Details on how to do local development on the core library.
Future Directions
- Offload more of the server logic to Rust
- AST parsing of the tsx files to determine which parts of the serverState they're actually using and mask accordingly
- Plugins for simple authentication, daemons, billing, etc.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file mountaineer-0.1.0.tar.gz
.
File metadata
- Download URL: mountaineer-0.1.0.tar.gz
- Upload date:
- Size: 647.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.2 Darwin/23.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 311ad0b1eb1f9ea1af82ac3c659154302ecb92ee8baa8685711e77cae7bc1938 |
|
MD5 | 9790e97f3e37e0e46300dc8a46e6f868 |
|
BLAKE2b-256 | 04fd20864cae2f4d99ba525fa45c75c3cea966402fdd035bd45d8ed8a517c604 |
File details
Details for the file mountaineer-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: mountaineer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 680.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.2 Darwin/23.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 756823bacab19307bc1d8b596e5c2b2c1aadfc7556af94cfb429d3eaaceace68 |
|
MD5 | 2bcd3238ab32a22ccb673edb98237605 |
|
BLAKE2b-256 | 721be19155b3a76252308bd78a2c324e3d3d05fbdb11853f84de7e759d476e0a |
File details
Details for the file mountaineer-0.1.0-cp312-none-win_amd64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp312-none-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d016a2147f0e493b1fec780d951095097c98225461b4a29a484209a1ba621bc6 |
|
MD5 | 090aa75c13948c8d105a907e92f066ff |
|
BLAKE2b-256 | 7b7a5e40765955c42146ee723af5fbe2df2beb921c16dec9fc0a671fe1c2709a |
File details
Details for the file mountaineer-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b587b37ada7f432c0649f93090e1d368eb6a8e1f54b09b0cf6db38b0a0727856 |
|
MD5 | ccb0e227b385d3bbe6a31b79c1d12226 |
|
BLAKE2b-256 | b6b4260de4559d39064291a17f26a7905776338712e651988ad4240c4fcf3106 |
File details
Details for the file mountaineer-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 14.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e28615e322570c2799f0ab0729a196abada4a9bde8a552e7ba4bd8ae4be3a0ab |
|
MD5 | c50505ebb4b90713573f824f88668b20 |
|
BLAKE2b-256 | 4f216b94b9182cd1ddb3a5a1a23c79f8aebd5a745b86e450a6315c57515b9582 |
File details
Details for the file mountaineer-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.7 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cb9927079ff73ad4b447aea4d6806f0d563b586623d989b2601d3832c9d68ac |
|
MD5 | 319900c1580ac50d8a8f4ce14a355ed9 |
|
BLAKE2b-256 | ea7194f8c498db8c4b5acc979e61e6894d93ccf051bfc28e10cde608f2522b29 |
File details
Details for the file mountaineer-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f714ea7f1cdc3debe88a14b23038df424d83c2a64b17f1665318b05eaa909a0a |
|
MD5 | 73606ca0073462da032df5b340fe5301 |
|
BLAKE2b-256 | bb0a2ad2c18ba9e06ab1c676e7897d03e5cd767f6164fbcbad9cc39a0d73e323 |
File details
Details for the file mountaineer-0.1.0-cp311-none-win_amd64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp311-none-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c075959274d3563d7dc95075cb3739cac25a204151b100ec67a7b2ce7033ccc4 |
|
MD5 | 08ba9eae62908d65e4f32e47957ebf1b |
|
BLAKE2b-256 | d997520275a1c1a1c039d03ee6dff30cf3fdd8727307dd73b186740d1fb25a3d |
File details
Details for the file mountaineer-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e9e75f09e58d1a692d77278cdf2e37b2c4de412de63e8c5403df6e153b78f19 |
|
MD5 | a6e5035d444cd79a2d26699ddbd66eb6 |
|
BLAKE2b-256 | 7b2ba929d2c95a6317b56ef45117fc5f818b91036e29aad9f10cd59c426d651d |
File details
Details for the file mountaineer-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 14.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ba95d0602fb37825c2fa683cd384fb66450eeb6a19cc8b0ef654afa348ee4aa |
|
MD5 | 45496bb8b28924101c5cca8fd070be37 |
|
BLAKE2b-256 | 14ac6e071984781d49af84c3e276a1f94a0985e2e2a90b4efee9fe9c44e96381 |
File details
Details for the file mountaineer-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.7 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e189be884d0bf9825146e07f7f25b5d4fe1171e31caab50f83e9901508ad78c |
|
MD5 | fed95de98a4ab6c17c3a1389b649c7f6 |
|
BLAKE2b-256 | fa803f18a5434479713562cc11618020030ff492b9240eacff8a644c61d3d84b |
File details
Details for the file mountaineer-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31f68f0acb3247d45f44daf83788e397d0b3f955ceb26e181ce533f08d3feb1a |
|
MD5 | 956983166241e6c367f5172541f748f2 |
|
BLAKE2b-256 | 6a7fd04cf6f53712949736d191733dc6c52c92689beaed75f2decc9e596b6d18 |
File details
Details for the file mountaineer-0.1.0-cp310-none-win_amd64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp310-none-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f81fd2916b006eab27bd03cc1c75c7ae7db604fb092b601705ea805f146737bd |
|
MD5 | 3d92a649849635ab6d1b50e11669f929 |
|
BLAKE2b-256 | f52253dab82e9fa448d467ff51a35d80605c4ddad332fd66b0c342d27d2255fb |
File details
Details for the file mountaineer-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e2b5732ea38bdc6aa4ff89f125f6313c13e7ea5a55595206dc3e6847cb0c091 |
|
MD5 | 7bd21b7288aa9387ee1cf900d2197f5b |
|
BLAKE2b-256 | 57b421c1dde9ed8014f88efa4c6c0a3625c40af6e1a8d216b5dc6bab7e3b20fd |
File details
Details for the file mountaineer-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 14.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f9ff560d581adfa92255cbe5afe6d195df373dfbbb693cc1116cb680f38aaf4 |
|
MD5 | 744fbaa735b90f412450584ca2777706 |
|
BLAKE2b-256 | 260963b4533044fbe1c9b3581aee6c1f3e7e318394cb295c20df5617d9d23e90 |
File details
Details for the file mountaineer-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.7 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 903244efde8246e22ab8afd0c60df081f181cfb91661dcb68d7d840d9cbeac52 |
|
MD5 | ad605ec4e20cd9cb25fc08df5b37e9db |
|
BLAKE2b-256 | 08811c63fe9081072fcfd577cbefe1259c91c2701af77f3c6797e49b63a9f364 |
File details
Details for the file mountaineer-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f1bc095899dc0ec700aeecf338962a17a89ceabc824ed86a00db081cae79378 |
|
MD5 | 4b0a2eeb12701c5536f0ab5b5a3b2771 |
|
BLAKE2b-256 | 4218789ad4697825e81ff08165ce5b79e9e730dfe8af09e047623fecbcb7214f |
File details
Details for the file mountaineer-0.1.0-cp39-none-win_amd64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp39-none-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40a5630ad2f8e4b7519069e6d21fd574343d54a4cebca97f42fc9839de586f1f |
|
MD5 | 1d0359a6f945c485ef7fc80c8b3413a6 |
|
BLAKE2b-256 | a456e778ea9c63481906e5e547d5963fd1ca303fcbdf48f0c34cb51f4e57e1cc |
File details
Details for the file mountaineer-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ce7693ad971ba2223824be4b09ee9bc0f169fe7ed15d065f3f0fcd467e02552 |
|
MD5 | c5f519c20946e8ecaac7c62de6950229 |
|
BLAKE2b-256 | 86794b69b92c85345495cb2db26c2d7d8dcca902a9d5f97ef68898f4e55671b3 |
File details
Details for the file mountaineer-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 14.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9f5050edf1e99cfa202d7250f974806c9d581e30dd5cc484b776cbf4020d749 |
|
MD5 | 25119d01ea894e7dff46778573f8a58b |
|
BLAKE2b-256 | 3d88549d4997ca6562b8ee4549475b85b100defeb5ba26ddb72736d1f5bf91dd |
File details
Details for the file mountaineer-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.7 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4eb1fdd8a896b47b8acdd775c65eb718416411603adeeaee14a69d2be31107a |
|
MD5 | cc4655729963297f526111c01d454db0 |
|
BLAKE2b-256 | 04285e2b95dea9ac37fe3fca0480707a78619674e6383d66006089bae1f3ef83 |
File details
Details for the file mountaineer-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.9, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e31d4f67594bcaba489901d0d9c3f7bf5319caa96900aefbb3c01d9daeb72335 |
|
MD5 | 7a90e1dd83aba24b730071bb68c90777 |
|
BLAKE2b-256 | 45b85447de6abc4ee11103244ecd40693508dae6dd1b45448774430345d9253a |
File details
Details for the file mountaineer-0.1.0-cp38-none-win_amd64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp38-none-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9d648c3bb182ed7eb8eb7680e6b0196e9abeb4abec5432e27042c8600dff69c |
|
MD5 | df247c341d3d8ce5a1fab0527e8161ac |
|
BLAKE2b-256 | 38ed9bf9a9cc5ec2399462dc3a563115f3aa802fe9af512ad368177c5d05253b |
File details
Details for the file mountaineer-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d540ac01305d8376c5f956178860418820aad447711baafc02885cfe8197902 |
|
MD5 | 8abd3cc582bc706090a995fce8b10556 |
|
BLAKE2b-256 | 431462d0809f6f9e8568e1741face930a6846738f798ad144b9f179988a58637 |
File details
Details for the file mountaineer-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 14.8 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09efe50145758107c1b3aaf39eb466370bd114f7d280ac75cd1c066289a8dfb5 |
|
MD5 | 2d3a591fdb6e5cb93fc338a67d901a16 |
|
BLAKE2b-256 | ff577bd0e8cb0c3eb09ddc376024f70e96ac314e5bb0b7cec3abc0ff6e41238b |
File details
Details for the file mountaineer-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 10.7 MB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5201a85224fbf6e6b885699af4b62b0f91b6393f212d51eeb2e1e339b2d20cd9 |
|
MD5 | 24373ec260987516774514792ee4fa9b |
|
BLAKE2b-256 | e06c9be607133da29e7225a910802f4a1110e9080105c8d46da8cb67fc31e8b4 |
File details
Details for the file mountaineer-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: mountaineer-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.8, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac320ade87224c6517cd897320ab733c3444d601c04a14771c60ee950466f695 |
|
MD5 | d2aa7a833b3cf303b8e696a2bf264846 |
|
BLAKE2b-256 | 5748b49c75b65ffe1b85eb7616bd76f194f0693574b3794f359f86ce9afafd19 |