diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5392781df..72f230da1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -386,7 +386,64 @@ By making a contribution to this project, I certify that: this project or the open source license(s) involved. ``` -### Review time SLA +### Guidelines for Review Time -The team commits to reviewing submitted pull requests within a week of -submission. +1. Pull Request (PR) Review Timeline + +- Initial Review: + - Maintainers will provide an initial review or feedback within 3 weeks of + the PR submission. At times, it may be significantly quicker, but it + depends on a variety of factors. +- Subsequent Reviews: + - Once a contributor addresses feedback, maintainers will review updates as + soon as they can, typically within 5 business days. + +1. Issue Triage Timeline + +- New Issues: + - Maintainers will label and acknowledge new issues within 10 days of the + issue submission. + +1. Proposals + +- Proposals take more time for the team to review, discuss, and make sure this + is in line with the overall strategy and vision for the standard library. + These will get discussed in the team's weekly design meetings internally and + feedback will be communicated back on the relevant proposal. As a team, we'll + ensure these get reviewed and discussed within 6 weeks of submission. + +#### Exceptions + +While we strive our best to adhere to these timelines, there may be occasional +delays due any of the following: + +- High volume of contributions. +- Maintainers' availability (e.g. holidays, team events). +- Complex issues or PRs requiring extended discussion (these may get deferred to + the team's weekly design discussion meetings). + +Note that just because a pull request has been reviewed does not necessarily +mean it will be able to merged internally immediately. This could be due to a +variety of reasons, such as: + +- Mojo compiler bugs. These take time to find a minimal reproducer, file an + issue with the compiler team, and then get prioritized and fixed. +- Internal bugs that get exposed due to a changeset. +- Massive refactorings due to an external changeset. These also take time to + fix - remember, we have the largest Mojo codebase in the world internally. + +If delays occur, we'll provide status updates in the relevant thread (pull +request or GitHub issue). Please bare with us as Mojo is an early language. +We look forward to working together with you in making Mojo better for everyone! + +#### How You Can Help + +To ensure quicker reviews: + +- **Ensure your PR is small and focused.** See the [pull request size section](#about-pull-request-sizes) + for more info. +- Write a good commit message/PR summary outlining the motivation and describing + the changes. In the near future, we'll provide a pull request template to + clarify this further. +- Use descriptive titles and comments for clarity. +- Code-review other contributor pull requests and help each other. diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 1bb87df302..79b64934eb 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -60,7 +60,7 @@ detailed information in the following sections: [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. - There are many new standard library APIs, with new features for strings, collections, and interacting with the filesystem and environment. Changes are @@ -518,7 +518,7 @@ detailed information in the following sections: - `DTypePointer`, `LegacyPointer`, and `Pointer` have been removed. Use [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. A quick rule for conversion from `DTypePointer` to @@ -1013,7 +1013,7 @@ Big themes for this release: - New Mojo Manual pages on [Control flow](/mojo/manual/control-flow), [Testing](/mojo/tools/testing) and using - [unsafe pointers](/mojo/manual/pointers). + [unsafe pointers](/mojo/manual/pointers/unsafe-pointers). ### Language changes @@ -6088,7 +6088,7 @@ busy this week. - 📢 The `__clone__` method for copying a value is now named `__copy__` to better follow Python term of art. -- 📢 The `__copy__` method now takes its self argument as a "borrowed" value, +- 📢 The `__copy__` method now takes its self argument as a "read" value, instead of taking it by reference. This makes it easier to write, works for `@register_passable` types, and exposes more optimization opportunities to the early optimizer and dataflow analysis passes. @@ -6153,7 +6153,7 @@ busy this week. Note that `@register_passable` types must use the later style. - 📢 The default argument convention is now the `borrowed` convention. A - "borrowed" argument is passed like a C++ `const&` so it doesn't need to + "read" argument is passed like a C++ `const&` so it doesn't need to invoke the copy constructor (aka the `__clone__` method) when passing a value to the function. There are two differences from C++ `const&`: diff --git a/docs/changelog.md b/docs/changelog.md index d6c831da5b..a57e0db1b2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -50,6 +50,20 @@ what we publish. The consequence of this is that the old hack is no longer needed for these cases! +- Various improvements to origin handling and syntax have landed, including + support for the ternary operator and allowing multiple arguments in a `ref` + specifier (which are implicitly unions). This enables expression of simple + algorithms cleanly: + + ```mojo + fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: + return a if a < b else b + ``` + + It is also nice that `my_min` automatically and implicitly propagates the + mutability of its arguments, so things like `my_min(str1, str2) += "foo"` is + valid. + - The `UnsafePointer` type now has an `origin` parameter that can be used when the `UnsafePointer` is known to point to a value with a known origin. This origin is propagated through the `ptr[]` indirection operation. @@ -110,6 +124,18 @@ what we publish. - The `rebind` standard library function now works with memory-only types in addition to `@register_passable("trivial")` ones, without requiring a copy. +- Introduce `random.shuffle` for `List`. + ([PR #3327](https://github.com/modularml/mojo/pull/3327) by [@jjvraw](https://github.com/jjvraw)) + + Example: + + ```mojo + from random import shuffle + + var l = List[Int](1, 2, 3, 4, 5) + shuffle(l) + ``` + - The `Dict.__getitem__` method now returns a reference instead of a copy of the value (or raises). This improves the performance of common code that uses `Dict` by allowing borrows from the `Dict` elements. @@ -240,8 +266,10 @@ what we publish. of variables that are handled as synthetic types, e.g. `List` from Mojo or `std::vector` from C++. -- Added `os.path.expandvars` to expand environment variables in a string. - ([PR #3735](https://github.com/modularml/mojo/pull/3735) by [@thatstoasty](https://github.com/thatstoasty)). +- Expanded `os.path` with new functions (by [@thatstoasty](https://github.com/thatstoasty)): + - `os.path.expandvars`: Expands environment variables in a path ([PR #3735](https://github.com/modularml/mojo/pull/3735)). + - `os.path.splitroot`: Split a path into drive, root and tail. + ([PR #3780](https://github.com/modularml/mojo/pull/3780)). - Added a `reserve` method and new constructor to the `String` struct to allocate additional capacity. @@ -250,7 +278,7 @@ what we publish. - Introduced a new `Deque` (double-ended queue) collection type, based on a dynamically resizing circular buffer for efficient O(1) additions and removals at both ends as well as O(1) direct access to all elements. - + The `Deque` supports the full Python `collections.deque` API, ensuring that all expected deque operations perform as in Python. @@ -260,8 +288,32 @@ what we publish. memory allocation and performance. These options allow for optimized memory usage and reduced buffer reallocations, providing flexibility based on application requirements. +- A new `StringLiteral.get[some_stringable]()` method is available. It + allows forming a runtime-constant StringLiteral from a compile-time-dynamic + `Stringable` value. + +- `Span` now implements `__reversed__`. This means that one can get a + reverse iterator over a `Span` using `reversed(my_span)`. Users should + currently prefer this method over `my_span[::-1]`. + +- `StringSlice` now implements `strip`, `rstrip`, and `lstrip`. + +- Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, + the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, + for the experimental explicitly destroyed types feature. + +- Added associated types; we can now have aliases like `alias T: AnyType`, + `alias N: Int`, etc. in a trait, and then specify them in structs that conform + to that trait. + ### 🦋 Changed +- The `inout` and `borrowed` argument conventions have been renamed to the `mut` + and `read` argument conventions (respectively). These verbs reflect + declaratively what the callee can do to the argument value passed into the + caller, without tying in the requirement for the programmer to know about + advanced features like references. + - The argument convention for `__init__` methods has been changed from `inout` to `out`, reflecting that an `__init__` method initializes its `self` without reading from it. This also enables spelling the type of an initializer @@ -283,6 +335,24 @@ what we publish. release of Mojo, but will be removed in the future. Please migrate to the new syntax. +- Similarly, the spelling of "named functions results" has switched to use `out` + syntax instead of `-> T as name`. Functions may have at most one named result + or return type specified with the usual `->` syntax. `out` arguments may + occur anywhere in the argument list, but are typically last (except for + `__init__` methods, where they are typically first). + + ```mojo + # This function has type "fn() -> String" + fn example(out result: String): + result = "foo" + ``` + + The parser still accepts the old syntax as a synonym for this, but that will + eventually be deprecated and removed. + + This was [discussed extensively in a public + proposal](https://github.com/modularml/mojo/issues/3623). + - More things have been removed from the auto-exported set of entities in the `prelude` module from the Mojo standard library. - `UnsafePointer` has been removed. Please explicitly import it via @@ -319,7 +389,7 @@ what we publish. `String.write`. Here's an example of using all the changes: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): @@ -415,6 +485,19 @@ what we publish. for more information and rationale. As a consequence the `__lifetime_of()` operator is now named `__origin_of()`. +- `Origin` is now a complete wrapper around the MLIR origin type. + + - The `Origin.type` alias has been renamed to `_mlir_origin`. In parameter + lists, you can now write just `Origin[..]`, instead of `Origin[..].type`. + + - `ImmutableOrigin` and `MutableOrigin` are now, respectively, just aliases + for `Origin[False]` and `Origin[True]`. + + - `Origin` struct values are now supported in the brackets of a `ref [..]` + argument. + + - Added `Origin.cast_from` for casting the mutability of an origin value. + - You can now use the `+=` and `*` operators on a `StringLiteral` at compile time using the `alias` keyword: @@ -513,6 +596,33 @@ what we publish. self.value = value ``` +- `Arc` has been renamed to `ArcPointer`, for consistency with `OwnedPointer`. + +- `UnsafePointer` parameters (other than the type) are now keyword-only. + +- Inferred-only parameters may now be explicitly bound with keywords, enabling + some important patterns in the standard library: + + ```mojo + struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... + alias ImmStringSlice = StringSlice[is_mutable=False] + # This auto-parameterizes on the origin, but constrains it to being an + # immutable slice instead of a potentially mutable one. + fn take_imm_slice(a: ImmStringSlice): ... + ``` + +- Added `PythonObject.__contains__`. + ([PR #3101](https://github.com/modularml/mojo/pull/3101) by [@rd4com](https://github.com/rd4com)) + + Example usage: + + ```mojo + x = PythonObject([1,2,3]) + if 1 in x: + print("1 in x") + +- `Span` has moved from the `utils` module to the `memory` module. + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your @@ -544,6 +654,21 @@ what we publish. - [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees memory while reference to it is still in use. +- [Issue #3805](https://github.com/modularml/mojo/issues/3805) - Crash When + Initializing !llvm.ptr. + +- [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary + if-operator doesn't propagate origin information. + +- [Issue #3815](https://github.com/modularml/mojo/issues/3815) - + [BUG] Mutability not preserved when taking the union of two origins. + +- [Issue #3829](https://github.com/modularml/mojo/issues/3829) - Poor error + message when invoking a function pointer upon an argument of the wrong origin + +- [Issue #3830](https://github.com/modularml/mojo/issues/3830) - Failures + emitting register RValues to ref arguments. + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. @@ -557,7 +682,7 @@ what we publish. - Error messages that include type names no longer include inferred or defaulted parameters when they aren't needed. For example, previously Mojo complained about things like: - + ```plaintext ... cannot be converted from 'UnsafePointer[UInt, 0, _default_alignment::AnyType](), MutableAnyOrigin]' to 'UnsafePointer[Int, 0, _default_alignment[::AnyType](), MutableAnyOrigin]' ``` @@ -570,3 +695,6 @@ what we publish. - Tooling now prints the origins of `ref` arguments and results correctly, and prints `self` instead of `self: Self` in methods. + +- The LSP and generated documentation now print parametric result types + correctly, e.g. showing `SIMD[type, simd_width]` instead of `SIMD[$0, $1]`. diff --git a/docs/manual/basics.ipynb b/docs/manual/basics.ipynb deleted file mode 100644 index 05d218396d..0000000000 --- a/docs/manual/basics.ipynb +++ /dev/null @@ -1,741 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Introduction to Mojo\n", - "sidebar_position: 1\n", - "description: Introduction to Mojo's basic language features.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At this point, you should have already set up the Mojo\n", - "SDK and run [\"Hello\n", - "world\"](/mojo/manual/get-started). Now let's talk about how\n", - "to write Mojo code.\n", - "\n", - "If\n", - "you know Python, then a lot of Mojo code will look familiar. However, Mojo\n", - "is—first and foremost—designed for high-performance systems programming, with\n", - "features like strong type checking, memory safety, next-generation compiler\n", - "technologies, and more. As such, Mojo also has a lot in common with languages\n", - "like C++ and Rust.\n", - "\n", - "Yet, we've designed Mojo to be flexible, so you can incrementally adopt\n", - "systems-programming features like strong type checking as you see fit—Mojo does\n", - "not *require* strong type checking.\n", - "\n", - "On this page, we'll introduce the essential Mojo syntax, so you can start\n", - "coding quickly and understand other Mojo code you encounter. Subsequent\n", - "sections in the Mojo Manual dive deeper into these topics, and links are\n", - "provided below as appropriate.\n", - "\n", - "Let's get started! 🔥\n", - "\n", - ":::note\n", - "\n", - "Mojo is a young language and there are many [features still\n", - "missing](/mojo/roadmap). As such, Mojo is currently **not** meant for\n", - "beginners. Even this basics section assumes some programming experience.\n", - "However, throughout the Mojo Manual, we try not to assume experience with any\n", - "particular language.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Functions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo functions can be declared with either `fn` or `def`.\n", - "\n", - "The `fn` declaration enforces type-checking and memory-safe behaviors (Rust\n", - "style), while `def` allows no type declarations and dynamic behaviors (Python\n", - "style).\n", - "\n", - "For example, this `def` function doesn't require declaration of argument types\n", - "or the return type:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name):\n", - " return \"Hello, \" + name + \"!\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "While the same thing as an `fn` function requires that you specify the\n", - "argument type and the return type like this:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn greet2(name: String) -> String:\n", - " return \"Hello, \" + name + \"!\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Both functions have the same result, but the `fn` function provides\n", - "compile-time checks to ensure the function receives and returns the correct\n", - "types. Whereas, the `def` function might fail at runtime if it receives the\n", - "wrong type.\n", - "\n", - "Currently, Mojo doesn't support top-level code in a `.mojo` (or `.🔥`) file, so\n", - "every program must include a function named `main()` as the entry point.\n", - "You can declare it with either `def` or `fn`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def main():\n", - " print(\"Hello, world!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "You don't need a `main()` function when coding in the\n", - "[REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a\n", - "[Jupyter\n", - "notebook](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[functions](/mojo/manual/functions)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Value ownership and argument mutability" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're wondering whether function arguments are passed by value or\n", - "passed by reference, the short answer is: `def` functions receive arguments\n", - "\"by value\" and `fn` functions receive arguments \"by immutable reference.\"\n", - "\n", - "The longer short answer is that Mojo allows you to specify for each argument\n", - "whether it should be passed by value (as `owned`), or whether it should be\n", - "passed by reference (as `borrowed` for an immutable reference, or as `inout`\n", - "for a mutable reference).\n", - "\n", - "This feature is entwined with Mojo's value ownership model, which protects you\n", - "from memory errors by ensuring that only one variable \"owns\" a value at any\n", - "given time (but allowing other variables to receive a reference to it).\n", - "Ownership then ensures that the value is destroyed when the lifetime of the\n", - "owner ends (and there are no outstanding references).\n", - "\n", - "But that's still a short answer, because going much further is a slippery slope\n", - "into complexity that is out of scope for this section. For the complete\n", - "answer, see the section about [value ownership](/mojo/manual/values/).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can declare variables with the `var` keyword. Or, if your code is in a\n", - "`def` function, you can omit the `var` (in an `fn` function, you must include\n", - "the `var` keyword).\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def do_math(x):\n", - " var y = x + x\n", - " y = y * y\n", - " print(y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, you can also declare a variable type like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def add_one(x):\n", - " var y: Int = 1\n", - " print(x + y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Even in an `fn` function, declaring the variable type is optional\n", - "(only the argument and return types must be declared in `fn` functions).\n", - "\n", - "For more details, see the page about\n", - "[variables](/mojo/manual/variables)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Structs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can build high-level abstractions for types (or \"objects\") as a `struct`. \n", - "\n", - "A `struct` in Mojo is similar to a `class` in Python: they both support\n", - "methods, fields, operator overloading, decorators for metaprogramming, and so\n", - "on. However, Mojo structs are completely static—they are bound at compile-time,\n", - "so they do not allow dynamic dispatch or any runtime changes to the structure.\n", - "(Mojo will also support Python-style classes in the future.)\n", - "\n", - "For example, here's a basic struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second\n", - "\n", - " fn dump(self):\n", - " print(self.first, self.second)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's how you can use it:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "fn use_mypair():\n", - " var mine = MyPair(2, 4)\n", - " mine.dump()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[structs](/mojo/manual/structs)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Traits\n", - "\n", - "A trait is like a template of characteristics for a struct. If you want to\n", - "create a struct with the characteristics defined in a trait, you must implement\n", - "each characteristic (such as each method). Each characteristic in a trait is a\n", - "\"requirement\" for the struct, and when your struct implements each requirement,\n", - "it's said to \"conform\" to the trait.\n", - "\n", - "Currently, the only characteristics that traits can define are method signatures. Also, traits\n", - "currently cannot implement default behaviors for methods.\n", - "\n", - "Using traits allows you to write generic functions that can accept any type\n", - "that conforms to a trait, rather than accept only specific types.\n", - "\n", - "For example, here's how you can create a trait (notice the function is not\n", - "implemented):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "trait SomeTrait:\n", - " fn required_method(self, x: Int): ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's how to create a struct that conforms to the trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct SomeStruct(SomeTrait):\n", - " fn required_method(self, x: Int):\n", - " print(\"hello traits\", x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, here's a function that uses the trait as an argument type (instead of the\n", - "struct type):" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "fn fun_with_traits[T: SomeTrait](x: T):\n", - " x.required_method(42)\n", - "\n", - "fn use_trait_function():\n", - " var thing = SomeStruct()\n", - " fun_with_traits(thing)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "You're probably wondering about the square brackets on `fun_with_traits()`.\n", - "These aren't function _arguments_ (which go in parentheses); these are function\n", - "_parameters_, which we'll explain next.\n", - "\n", - ":::\n", - "\n", - "Without traits, the `x` argument in `fun_with_traits()` would have to declare a\n", - "specific type that implements `required_method()`, such as `SomeStruct`\n", - "(but then the function would accept only that type). With traits, the function\n", - "can accept any type for `x` as long as it conforms to (it \"implements\")\n", - "`SomeTrait`. Thus, `fun_with_traits()` is known as a \"generic function\" because\n", - "it accepts a _generalized_ type instead of a specific type.\n", - "\n", - "For more details, see the page about [traits](/mojo/manual/traits)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameterization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In Mojo, a parameter is a compile-time variable that becomes a runtime\n", - "constant, and it's declared in square brackets on a function or struct.\n", - "Parameters allow for compile-time metaprogramming, which means you can generate\n", - "or modify code at compile time.\n", - "\n", - "Many other languages use \"parameter\" and \"argument\" interchangeably, so be\n", - "aware that when we say things like \"parameter\" and \"parametric function,\" we're\n", - "talking about these compile-time parameters. Whereas, a function \"argument\" is\n", - "a runtime value that's declared in parentheses.\n", - "\n", - "Parameterization is a complex topic that's covered in much more detail in the\n", - "[Metaprogramming](/mojo/manual/parameters/) section, but we want to break the\n", - "ice just a little bit here. To get you started, let's look at a parametric\n", - "function:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn repeat[count: Int](msg: String):\n", - " for i in range(count):\n", - " print(msg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This function has one parameter of type `Int` and one argument of type\n", - "`String`. To call the function, you need to specify both the parameter and the\n", - "argument:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn call_repeat():\n", - " repeat[3](\"Hello\")\n", - " # Prints \"Hello\" 3 times" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By specifying `count` as a parameter, the Mojo compiler is able to optimize the\n", - "function because this value is guaranteed to not change at runtime. The\n", - "compiler effectively generates a unique version of the `repeat()` function that\n", - "repeats the message only 3 times. This makes the code more performant because\n", - "there's less to compute at runtime.\n", - "\n", - "Similarly, you can define a struct with parameters, which effectively allows\n", - "you to define variants of that type at compile-time, depending on the parameter\n", - "values.\n", - "\n", - "For more detail on parameters, see the section on\n", - "[Metaprogramming](/mojo/manual/parameters/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Blocks and statements" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Code blocks such as functions, conditions, and loops are defined\n", - "with a colon followed by indented lines. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def loop():\n", - " for x in range(5):\n", - " if x % 2 == 0:\n", - " print(x)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use any number of spaces or tabs for your indentation (we prefer 4\n", - "spaces).\n", - "\n", - "All code statements in Mojo end with a newline. However, statements can span\n", - "multiple lines if you indent the following lines. For example, this long string\n", - "spans two lines:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def print_line():\n", - " long_text = \"This is a long line of text that is a lot easier to read if\"\n", - " \" it is broken up across two lines instead of one long line.\"\n", - " print(long_text)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And you can chain function calls across lines:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def print_hello():\n", - " text = String(\",\")\n", - " .join(\"Hello\", \" world!\")\n", - " print(text)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Code comments\n", - "\n", - "You can create a one-line comment using the hash `#` symbol:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This is a comment. The Mojo compiler ignores this line." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comments may also follow some code:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var message = \"Hello, World!\" # This is also a valid comment" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can instead write longer comments across many lines using triple quotes:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "This is also a comment, but it's easier to write across\n", - "many lines, because each line doesn't need the # symbol.\n", - "\"\"\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Triple quotes is the preferred method of writing API documentation. For example:\n", - "\n", - "```mojo\n", - "fn print(x: String):\n", - " \"\"\"Prints a string.\n", - "\n", - " Args:\n", - " x: The string to print.\n", - " \"\"\"\n", - " ...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Documenting your code with these kinds of comments (known as \"docstrings\")\n", - "is a topic we've yet to fully specify, but you can generate an API reference\n", - "from docstrings using the [`mojo doc` command](/mojo/cli/doc)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python integration" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo does not yet adopt the full syntax of Python, but we've built a mechanism to import\n", - "Python modules as-is, so you can leverage existing Python code right away.\n", - "\n", - "For example, here's how you can import and use NumPy (you must have Python\n", - "`numpy` installed):" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from python import Python\n", - "\n", - "def main():\n", - " var np = Python.import_module(\"numpy\")\n", - " var ar = np.arange(15).reshape(3, 5)\n", - " print(ar)\n", - " print(ar.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "**Note:** You must have the Python module (such as `numpy`) installed already.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[Python integration](/mojo/manual/python/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hopefully this page has given you enough information to start experimenting with\n", - "Mojo, but this is only touching the surface of what's available in Mojo.\n", - "\n", - "If you're in the mood to read more, continue through each page of this\n", - "Mojo Manual using the buttons at the bottom of each page—the next page from\n", - "here is [Functions](/mojo/manual/functions).\n", - "\n", - "Otherwise, here are some other resources to check out:\n", - "\n", - "- If you want to experiment with some code, clone [the Mojo\n", - "repo](https://github.com/modularml/mojo/) to try our code examples:\n", - "\n", - " ```sh\n", - " git clone https://github.com/modularml/mojo.git\n", - " ```\n", - "\n", - " In addition to several `.mojo` examples, the repo includes [Jupyter\n", - " notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme)\n", - " that teach advanced Mojo features.\n", - "\n", - "- To see all the available Mojo APIs, check out the [Mojo standard library\n", - " reference](/mojo/lib)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx new file mode 100644 index 0000000000..938701d322 --- /dev/null +++ b/docs/manual/basics.mdx @@ -0,0 +1,406 @@ +--- +title: Introduction to Mojo +sidebar_position: 1 +description: Introduction to Mojo's basic language features. +--- + +At this point, you should have already set up the Mojo +SDK and run ["Hello +world"](/mojo/manual/get-started). Now let's talk about how +to write Mojo code. + +If +you know Python, then a lot of Mojo code will look familiar. However, Mojo +is—first and foremost—designed for high-performance systems programming, with +features like strong type checking, memory safety, next-generation compiler +technologies, and more. As such, Mojo also has a lot in common with languages +like C++ and Rust. + +Yet, we've designed Mojo to be flexible, so you can incrementally adopt +systems-programming features like strong type checking as you see fit—Mojo does +not *require* strong type checking. + +On this page, we'll introduce the essential Mojo syntax, so you can start +coding quickly and understand other Mojo code you encounter. Subsequent +sections in the Mojo Manual dive deeper into these topics, and links are +provided below as appropriate. + +Let's get started! 🔥 + +:::note + +Mojo is a young language and there are many [features still +missing](/mojo/roadmap). As such, Mojo is currently **not** meant for +beginners. Even this basics section assumes some programming experience. +However, throughout the Mojo Manual, we try not to assume experience with any +particular language. + +::: + +## Functions + +Mojo functions can be declared with either `fn` or `def`. + +The `fn` declaration enforces type-checking and memory-safe behaviors (Rust +style), while `def` allows no type declarations and dynamic behaviors (Python +style). + +For example, this `def` function doesn't require declaration of argument types +or the return type: + +```mojo +def greet(name): + return "Hello, " + name + "!" +``` + +While the same thing as an `fn` function requires that you specify the +argument type and the return type like this: + +```mojo +fn greet2(name: String) -> String: + return "Hello, " + name + "!" +``` + +Both functions have the same result, but the `fn` function provides +compile-time checks to ensure the function receives and returns the correct +types. Whereas, the `def` function might fail at runtime if it receives the +wrong type. + +Currently, Mojo doesn't support top-level code in a `.mojo` (or `.🔥`) file, so +every program must include a function named `main()` as the entry point. +You can declare it with either `def` or `fn`: + +```mojo +def main(): + print("Hello, world!") +``` + +:::note + +You don't need a `main()` function when coding in the +[REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a +[Jupyter +notebook](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme). + +::: + +For more details, see the page about +[functions](/mojo/manual/functions). + +### Value ownership and argument mutability + +If you're wondering whether function arguments are passed by value or +passed by reference, the short answer is: `def` functions receive arguments +"by value" and `fn` functions receive arguments "by immutable reference." + +The longer short answer is that Mojo allows you to specify for each argument +whether it should be passed by value (as `owned`), or whether it should be +passed by reference (as `read` for an immutable reference, or as `mut` +for a mutable reference). + +This feature is entwined with Mojo's value ownership model, which protects you +from memory errors by ensuring that only one variable "owns" a value at any +given time (but allowing other variables to receive a reference to it). +Ownership then ensures that the value is destroyed when the lifetime of the +owner ends (and there are no outstanding references). + +But that's still a short answer, because going much further is a slippery slope +into complexity that is out of scope for this section. For the complete +answer, see the section about [value ownership](/mojo/manual/values/). + +## Variables + +You can declare variables with the `var` keyword. Or, if your code is in a +`def` function, you can omit the `var` (in an `fn` function, you must include +the `var` keyword). + +For example: + +```mojo +def do_math(x): + var y = x + x + y = y * y + print(y) +``` + +Optionally, you can also declare a variable type like this: + +```mojo +def add_one(x): + var y: Int = 1 + print(x + y) +``` + +Even in an `fn` function, declaring the variable type is optional +(only the argument and return types must be declared in `fn` functions). + +For more details, see the page about +[variables](/mojo/manual/variables). + +## Structs + +You can build high-level abstractions for types (or "objects") as a `struct`. + +A `struct` in Mojo is similar to a `class` in Python: they both support +methods, fields, operator overloading, decorators for metaprogramming, and so +on. However, Mojo structs are completely static—they are bound at compile-time, +so they do not allow dynamic dispatch or any runtime changes to the structure. +(Mojo will also support Python-style classes in the future.) + +For example, here's a basic struct: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second + + fn dump(self): + print(self.first, self.second) +``` + +And here's how you can use it: + +```mojo +fn use_mypair(): + var mine = MyPair(2, 4) + mine.dump() +``` + +For more details, see the page about +[structs](/mojo/manual/structs). + +### Traits + +A trait is like a template of characteristics for a struct. If you want to +create a struct with the characteristics defined in a trait, you must implement +each characteristic (such as each method). Each characteristic in a trait is a +"requirement" for the struct, and when your struct implements each requirement, +it's said to "conform" to the trait. + +Currently, the only characteristics that traits can define are method signatures. Also, traits +currently cannot implement default behaviors for methods. + +Using traits allows you to write generic functions that can accept any type +that conforms to a trait, rather than accept only specific types. + +For example, here's how you can create a trait (notice the function is not +implemented): + +```mojo +trait SomeTrait: + fn required_method(self, x: Int): ... +``` + +And here's how to create a struct that conforms to the trait: + +```mojo +@value +struct SomeStruct(SomeTrait): + fn required_method(self, x: Int): + print("hello traits", x) +``` + +Then, here's a function that uses the trait as an argument type (instead of the +struct type): + +```mojo +fn fun_with_traits[T: SomeTrait](x: T): + x.required_method(42) + +fn use_trait_function(): + var thing = SomeStruct() + fun_with_traits(thing) +``` + +:::note + +You're probably wondering about the square brackets on `fun_with_traits()`. +These aren't function *arguments* (which go in parentheses); these are function +*parameters*, which we'll explain next. + +::: + +Without traits, the `x` argument in `fun_with_traits()` would have to declare a +specific type that implements `required_method()`, such as `SomeStruct` +(but then the function would accept only that type). With traits, the function +can accept any type for `x` as long as it conforms to (it "implements") +`SomeTrait`. Thus, `fun_with_traits()` is known as a "generic function" because +it accepts a *generalized* type instead of a specific type. + +For more details, see the page about [traits](/mojo/manual/traits). + +## Parameterization + +In Mojo, a parameter is a compile-time variable that becomes a runtime +constant, and it's declared in square brackets on a function or struct. +Parameters allow for compile-time metaprogramming, which means you can generate +or modify code at compile time. + +Many other languages use "parameter" and "argument" interchangeably, so be +aware that when we say things like "parameter" and "parametric function," we're +talking about these compile-time parameters. Whereas, a function "argument" is +a runtime value that's declared in parentheses. + +Parameterization is a complex topic that's covered in much more detail in the +[Metaprogramming](/mojo/manual/parameters/) section, but we want to break the +ice just a little bit here. To get you started, let's look at a parametric +function: + +```mojo +fn repeat[count: Int](msg: String): + for i in range(count): + print(msg) +``` + +This function has one parameter of type `Int` and one argument of type +`String`. To call the function, you need to specify both the parameter and the +argument: + +```mojo +fn call_repeat(): + repeat[3]("Hello") + # Prints "Hello" 3 times +``` + +By specifying `count` as a parameter, the Mojo compiler is able to optimize the +function because this value is guaranteed to not change at runtime. The +compiler effectively generates a unique version of the `repeat()` function that +repeats the message only 3 times. This makes the code more performant because +there's less to compute at runtime. + +Similarly, you can define a struct with parameters, which effectively allows +you to define variants of that type at compile-time, depending on the parameter +values. + +For more detail on parameters, see the section on +[Metaprogramming](/mojo/manual/parameters/). + +## Blocks and statements + +Code blocks such as functions, conditions, and loops are defined +with a colon followed by indented lines. For example: + +```mojo +def loop(): + for x in range(5): + if x % 2 == 0: + print(x) +``` + +You can use any number of spaces or tabs for your indentation (we prefer 4 +spaces). + +All code statements in Mojo end with a newline. However, statements can span +multiple lines if you indent the following lines. For example, this long string +spans two lines: + +```mojo +def print_line(): + long_text = "This is a long line of text that is a lot easier to read if" + " it is broken up across two lines instead of one long line." + print(long_text) +``` + +And you can chain function calls across lines: + +```mojo +def print_hello(): + text = String(",") + .join("Hello", " world!") + print(text) +``` + +## Code comments + +You can create a one-line comment using the hash `#` symbol: + +```mojo +# This is a comment. The Mojo compiler ignores this line. +``` + +Comments may also follow some code: + +```mojo +var message = "Hello, World!" # This is also a valid comment +``` + +You can instead write longer comments across many lines using triple quotes: + +```mojo +""" +This is also a comment, but it's easier to write across +many lines, because each line doesn't need the # symbol. +""" +``` + +Triple quotes is the preferred method of writing API documentation. For example: + +```mojo +fn print(x: String): + """Prints a string. + + Args: + x: The string to print. + """ + ... +``` + +Documenting your code with these kinds of comments (known as "docstrings") +is a topic we've yet to fully specify, but you can generate an API reference +from docstrings using the [`mojo doc` command](/mojo/cli/doc). + +## Python integration + +Mojo does not yet adopt the full syntax of Python, but we've built a mechanism to import +Python modules as-is, so you can leverage existing Python code right away. + +For example, here's how you can import and use NumPy (you must have Python +`numpy` installed): + +```mojo +from python import Python + +def main(): + var np = Python.import_module("numpy") + var ar = np.arange(15).reshape(3, 5) + print(ar) + print(ar.shape) +``` + +:::note + +**Note:** You must have the Python module (such as `numpy`) installed already. + +::: + +For more details, see the page about +[Python integration](/mojo/manual/python/). + +## Next steps + +Hopefully this page has given you enough information to start experimenting with +Mojo, but this is only touching the surface of what's available in Mojo. + +If you're in the mood to read more, continue through each page of this +Mojo Manual using the buttons at the bottom of each page—the next page from +here is [Functions](/mojo/manual/functions). + +Otherwise, here are some other resources to check out: + +* If you want to experiment with some code, clone [the Mojo + repo](https://github.com/modularml/mojo/) to try our code examples: + + ```sh + git clone https://github.com/modularml/mojo.git + ``` + + In addition to several `.mojo` examples, the repo includes [Jupyter + notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme) + that teach advanced Mojo features. + +* To see all the available Mojo APIs, check out the [Mojo standard library + reference](/mojo/lib). diff --git a/docs/manual/control-flow.ipynb b/docs/manual/control-flow.ipynb deleted file mode 100644 index 8ee4dab294..0000000000 --- a/docs/manual/control-flow.ipynb +++ /dev/null @@ -1,887 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Control flow\n", - "description: Mojo control flow statements.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo includes several traditional control flow structures for conditional and\n", - "repeated execution of code blocks.\n", - "\n", - "## The `if` statement\n", - "\n", - "Mojo supports the `if` statement for conditional code execution. With it you can\n", - "conditionally execute an indented code block if a given\n", - "[boolean](/mojo/manual/types#booleans) expression evaluates to `True`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n", - "The temperature is 77.0 Fahrenheit.\n" - ] - } - ], - "source": [ - "temp_celsius = 25\n", - "if temp_celsius > 20:\n", - " print(\"It is warm.\")\n", - " print(\"The temperature is\", temp_celsius * 9 / 5 + 32, \"Fahrenheit.\" )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can write the entire `if` statement as a single line if all you need to\n", - "execute conditionally is a single, short statement." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n" - ] - } - ], - "source": [ - "temp_celsius = 22\n", - "if temp_celsius < 15: print(\"It is cool.\") # Skipped because condition is False\n", - "if temp_celsius > 20: print(\"It is warm.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, an `if` statement can include any number of additional `elif`\n", - "clauses, each specifying a boolean condition and associated code block to\n", - "execute if `True`. The conditions are tested in the order given. When a\n", - "condition evaluates to `True`, the associated code block is executed and no\n", - "further conditions are tested.\n", - "\n", - "Additionally, an `if` statement can include an optional `else` clause providing\n", - "a code block to execute if all conditions evaluate to `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n" - ] - } - ], - "source": [ - "temp_celsius = 25\n", - "if temp_celsius <= 0:\n", - " print(\"It is freezing.\")\n", - "elif temp_celsius < 20:\n", - " print(\"It is cool.\")\n", - "elif temp_celsius < 30:\n", - " print(\"It is warm.\")\n", - "else:\n", - " print(\"It is hot.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "Mojo currently does not support the equivalent of a Python `match` or C `switch`\n", - "statement for pattern matching and conditional execution.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Short-circuit evaluation\n", - "\n", - "Mojo follows [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation)\n", - "semantics for boolean operators. If the first argument to an `or` operator\n", - "evaluates to `True`, the second argument is not evaluated.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Short-circuit \"or\" evaluation\n", - "Executing true_func\n", - "True result\n" - ] - } - ], - "source": [ - "def true_func() -> Bool:\n", - " print(\"Executing true_func\")\n", - " return True\n", - "\n", - "def false_func() -> Bool:\n", - " print(\"Executing false_func\")\n", - " return False\n", - "\n", - "print('Short-circuit \"or\" evaluation')\n", - "if true_func() or false_func():\n", - " print(\"True result\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the first argument to an `and` operator evaluates to `False`, the second\n", - "argument is not evaluated." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Short-circuit \"and\" evaluation\n", - "Executing false_func\n" - ] - } - ], - "source": [ - "print('Short-circuit \"and\" evaluation')\n", - "if false_func() and true_func():\n", - " print(\"True result\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conditional expressions\n", - "\n", - "Mojo also supports conditional expressions (or what is sometimes called a\n", - "[_ternary conditional operator_](https://en.wikipedia.org/wiki/Ternary_conditional_operator))\n", - "using the syntaxtrue_result if boolean_expression else false_result, just as\n", - "in Python. This is most often used as a concise way to assign one of two\n", - "different values to a variable, based on a boolean condition." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The forecast for today is cool\n" - ] - } - ], - "source": [ - "temp_celsius = 15\n", - "forecast = \"warm\" if temp_celsius > 20 else \"cool\"\n", - "print(\"The forecast for today is\", forecast)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The alternative, written as a multi-line `if` statement, is more verbose." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The forecast for today is cool\n" - ] - } - ], - "source": [ - "if temp_celsius > 20:\n", - " forecast = \"warm\"\n", - "else:\n", - " forecast = \"cool\"\n", - "print(\"The forecast for today is\", forecast)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `while` statement\n", - "\n", - "The `while` loop repeatedly executes a code block while a given boolean\n", - "expression evaluates to `True`. For example, the following loop prints values\n", - "from the Fibonacci series that are less than 50." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 1, 2, 3, 5, 8, 13, 21, 34" - ] - } - ], - "source": [ - "fib_prev = 0\n", - "fib_curr = 1\n", - "\n", - "print(fib_prev, end=\"\")\n", - "while fib_curr < 50:\n", - " print(\",\", fib_curr, end=\"\")\n", - " fib_prev, fib_curr = fib_curr, fib_prev + fib_curr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `continue` statement skips execution of the rest of the code block and\n", - "resumes with the loop test expression." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, 4, 5, " - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " continue\n", - " print(n, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `break` statement terminates execution of the loop." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, " - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " break\n", - " print(n, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, a `while` loop can include an `else` clause. The body of the `else`\n", - "clause executes when the loop's boolean condition evaluates to `False`, even if\n", - "it occurs the first time tested." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loop completed\n" - ] - } - ], - "source": [ - "n = 5\n", - "\n", - "while n < 4:\n", - " print(n)\n", - " n += 1\n", - "else:\n", - " print(\"Loop completed\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The `else` clause does _not_ execute if a `break` or `return` statement\n", - "exits the `while` loop.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " break\n", - " print(n)\n", - "else:\n", - " print(\"Executing else clause\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `for` statement\n", - "\n", - "The `for` loop iterates over a sequence, executing a code block for each\n", - "element in the sequence.\n", - "The Mojo `for` loop can iterate over any type that implements an `__iter__()`\n", - "method that returns a type that defines `__next__()` and `__len__()` methods.\n", - "\n", - "### Iterating over Mojo collections\n", - "\n", - "All of the collection types in the [`collections`](/mojo/stdlib/collections)\n", - "module support `for` loop iteration. See the\n", - "[Collection types](/mojo/manual/types#collection-types) documentation for more\n", - "information on Mojo collection types.\n", - "\n", - ":::caution TODO\n", - "\n", - "Iterating over Mojo native collections currently assigns the loop index variable\n", - "a [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the\n", - "item itself. You can access the item using the dereference operator, `[]`, as\n", - "shown in the examples below. This may change in a future version of Mojo.\n", - "\n", - ":::\n", - "\n", - "The following shows an example of iterating over a Mojo\n", - "[`List`](/mojo/stdlib/collections/list/List)." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "California\n", - "Hawaii\n", - "Oregon\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "states = List[String](\"California\", \"Hawaii\", \"Oregon\")\n", - "for state in states:\n", - " print(state[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The same technique works for iterating over a Mojo\n", - "[`Set`](/mojo/stdlib/collections/set/Set)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "0\n" - ] - } - ], - "source": [ - "from collections import Set\n", - "\n", - "values = Set[Int](42, 0)\n", - "for item in values:\n", - " print(item[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are two techniques for iterating over a Mojo\n", - "[`Dict`](/mojo/stdlib/collections/dict/Dict). The first is to iterate directly\n", - "using the `Dict`, which produces a sequence of the dictionary's keys." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sacramento, California\n", - "Honolulu, Hawaii\n", - "Salem, Oregon\n" - ] - } - ], - "source": [ - "from collections import Dict\n", - "\n", - "capitals = Dict[String, String]()\n", - "capitals[\"California\"] = \"Sacramento\"\n", - "capitals[\"Hawaii\"] = \"Honolulu\"\n", - "capitals[\"Oregon\"] = \"Salem\"\n", - "\n", - "for state in capitals:\n", - " print(capitals[state[]] + \", \" + state[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second approach to iterating over a Mojo `Dict` is to invoke its\n", - "[`items()`](/mojo/stdlib/collections/dict/Dict#items) method, which produces a\n", - "sequence of [`DictEntry`](/mojo/stdlib/collections/dict/DictEntry) objects.\n", - "Within the loop body, you can then access the `key` and `value` fields of the\n", - "entry." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sacramento, California\n", - "Honolulu, Hawaii\n", - "Salem, Oregon\n" - ] - } - ], - "source": [ - "for item in capitals.items():\n", - " print(item[].value + \", \" + item[].key)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another type of iterable provided by the Mojo standard library is a _range_,\n", - "which is a sequence of integers generated by the\n", - "[`range()`](/mojo/stdlib/builtin/range/range) function. It differs from the\n", - "collection types shown above in that it's implemented as a\n", - "[generator](https://en.wikipedia.org/wiki/Generator_(computer_programming)),\n", - "producing each value as needed rather than materializing the entire sequence\n", - "in memory. Additionally, each value assigned to the loop index variable is\n", - "simply the `Int` value rather than a `Reference` to the value, so you should\n", - "not use the dereference operator on it within the loop. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 3, 4, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `for` loop control statements\n", - "\n", - "A `continue` statement skips execution of the rest of the code block and\n", - "resumes the loop with the next element of the collection." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 4, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " if i == 3:\n", - " continue\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `break` statement terminates execution of the loop." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " if i == 3:\n", - " break\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, a `for` loop can include an `else` clause. The body of the `else`\n", - "clause executes after iterating over all of the elements in a collection." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 3, 4, \n", - "Finished executing 'for' loop\n" - ] - } - ], - "source": [ - "for i in range(5):\n", - " print(i, end=\", \")\n", - "else:\n", - " print(\"\\nFinished executing 'for' loop\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `else` clause executes even if the collection is empty." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Finished executing 'for' loop\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "empty = List[Int]()\n", - "for i in empty:\n", - " print(i[])\n", - "else:\n", - " print(\"Finished executing 'for' loop\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The `else` clause does _not_ execute if a `break` or `return` statement\n", - "terminates the `for` loop.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found a dog\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "animals = List[String](\"cat\", \"aardvark\", \"hippopotamus\", \"dog\")\n", - "for animal in animals:\n", - " if animal[] == \"dog\":\n", - " print(\"Found a dog\")\n", - " break\n", - "else:\n", - " print(\"No dog found\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Iterating over Python collections\n", - "\n", - "The Mojo `for` loop supports iterating over Python collection types. Each item\n", - "retrieved by the loop is a\n", - "[`PythonObject`](/mojo/stdlib/python/object/PythonObject) wrapper around\n", - "the Python object. Refer to the [Python types](/mojo/manual/python/types)\n", - "documentation for more information on manipulating Python objects from Mojo.\n", - "\n", - "The following is a simple example of iterating over a mixed-type Python list." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "cat\n", - "3.14159\n" - ] - } - ], - "source": [ - "from python import Python\n", - "\n", - "# Create a mixed-type Python list\n", - "py_list = Python.evaluate(\"[42, 'cat', 3.14159]\")\n", - "for py_obj in py_list: # Each element is of type \"PythonObject\"\n", - " print(py_obj)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "Iterating over a Mojo collection currently assigns the loop index variable a\n", - "`Reference` to each element, which then requires you to use the dereference\n", - "operator within the loop body. In contrast, iterating over a Python collection\n", - "assigns a `PythonObject` wrapper for the element, which does _not_ require you\n", - "to use the dereference operator.\n", - "\n", - ":::\n", - "\n", - "\n", - "There are two techniques for iterating over a Python dictionary. The first is to\n", - "iterate directly using the dictionary, which produces a sequence of its keys." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a 1\n", - "b 2.71828\n", - "c sushi\n" - ] - } - ], - "source": [ - "from python import Python\n", - "\n", - "# Create a mixed-type Python dictionary\n", - "py_dict = Python.evaluate(\"{'a': 1, 'b': 2.71828, 'c': 'sushi'}\")\n", - "for py_key in py_dict: # Each element is of type \"PythonObject\"\n", - " print(py_key, py_dict[py_key])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second approach to iterating over a Python dictionary is to invoke its\n", - "`items()` method, which produces a sequence of 2-tuple objects.\n", - "Within the loop body, you can then access the key and value by index." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a 1\n", - "b 2.71828\n", - "c sushi\n" - ] - } - ], - "source": [ - "for py_tuple in py_dict.items(): # Each element is of type \"PythonObject\"\n", - " print(py_tuple[0], py_tuple[1])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/control-flow.mdx b/docs/manual/control-flow.mdx new file mode 100644 index 0000000000..330abc2ed0 --- /dev/null +++ b/docs/manual/control-flow.mdx @@ -0,0 +1,500 @@ +--- +title: Control flow +description: Mojo control flow statements. +--- + +Mojo includes several traditional control flow structures for conditional and +repeated execution of code blocks. + +## The `if` statement + +Mojo supports the `if` statement for conditional code execution. With it you can +conditionally execute an indented code block if a given +[boolean](/mojo/manual/types#booleans) expression evaluates to `True`. + +```mojo +temp_celsius = 25 +if temp_celsius > 20: + print("It is warm.") + print("The temperature is", temp_celsius * 9 / 5 + 32, "Fahrenheit." ) +``` + +```output +It is warm. +The temperature is 77.0 Fahrenheit. +``` + +You can write the entire `if` statement as a single line if all you need to +execute conditionally is a single, short statement. + +```mojo +temp_celsius = 22 +if temp_celsius < 15: print("It is cool.") # Skipped because condition is False +if temp_celsius > 20: print("It is warm.") +``` + +```output +It is warm. +``` + +Optionally, an `if` statement can include any number of additional `elif` +clauses, each specifying a boolean condition and associated code block to +execute if `True`. The conditions are tested in the order given. When a +condition evaluates to `True`, the associated code block is executed and no +further conditions are tested. + +Additionally, an `if` statement can include an optional `else` clause providing +a code block to execute if all conditions evaluate to `False`. + +```mojo +temp_celsius = 25 +if temp_celsius <= 0: + print("It is freezing.") +elif temp_celsius < 20: + print("It is cool.") +elif temp_celsius < 30: + print("It is warm.") +else: + print("It is hot.") +``` + +```output +It is warm. +``` + +:::note TODO + +Mojo currently does not support the equivalent of a Python `match` or C `switch` +statement for pattern matching and conditional execution. + +::: + +### Short-circuit evaluation + +Mojo follows [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation) +semantics for boolean operators. If the first argument to an `or` operator +evaluates to `True`, the second argument is not evaluated. + +```mojo +def true_func() -> Bool: + print("Executing true_func") + return True + +def false_func() -> Bool: + print("Executing false_func") + return False + +print('Short-circuit "or" evaluation') +if true_func() or false_func(): + print("True result") +``` + +```output +Short-circuit "or" evaluation +Executing true_func +True result +``` + +If the first argument to an `and` operator evaluates to `False`, the second +argument is not evaluated. + +```mojo +print('Short-circuit "and" evaluation') +if false_func() and true_func(): + print("True result") +``` + +```output +Short-circuit "and" evaluation +Executing false_func +``` + +### Conditional expressions + +Mojo also supports conditional expressions (or what is sometimes called a +[*ternary conditional operator*](https://en.wikipedia.org/wiki/Ternary_conditional_operator)) +using the syntaxtrue_result if boolean_expression else false_result, just as +in Python. This is most often used as a concise way to assign one of two +different values to a variable, based on a boolean condition. + +```mojo +temp_celsius = 15 +forecast = "warm" if temp_celsius > 20 else "cool" +print("The forecast for today is", forecast) +``` + +```output +The forecast for today is cool +``` + +The alternative, written as a multi-line `if` statement, is more verbose. + +```mojo +if temp_celsius > 20: + forecast = "warm" +else: + forecast = "cool" +print("The forecast for today is", forecast) +``` + +```output +The forecast for today is cool +``` + +## The `while` statement + +The `while` loop repeatedly executes a code block while a given boolean +expression evaluates to `True`. For example, the following loop prints values +from the Fibonacci series that are less than 50. + +```mojo +fib_prev = 0 +fib_curr = 1 + +print(fib_prev, end="") +while fib_curr < 50: + print(",", fib_curr, end="") + fib_prev, fib_curr = fib_curr, fib_prev + fib_curr +``` + +```output +0, 1, 1, 2, 3, 5, 8, 13, 21, 34 +``` + +A `continue` statement skips execution of the rest of the code block and +resumes with the loop test expression. + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + continue + print(n, end=", ") +``` + +```output +1, 2, 4, 5, +``` + +A `break` statement terminates execution of the loop. + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + break + print(n, end=", ") +``` + +```output +1, 2, +``` + +Optionally, a `while` loop can include an `else` clause. The body of the `else` +clause executes when the loop's boolean condition evaluates to `False`, even if +it occurs the first time tested. + +```mojo +n = 5 + +while n < 4: + print(n) + n += 1 +else: + print("Loop completed") + +``` + +```output +Loop completed +``` + +:::note + +The `else` clause does *not* execute if a `break` or `return` statement +exits the `while` loop. + +::: + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + break + print(n) +else: + print("Executing else clause") +``` + +```output +1 +2 +``` + +## The `for` statement + +The `for` loop iterates over a sequence, executing a code block for each +element in the sequence. +The Mojo `for` loop can iterate over any type that implements an `__iter__()` +method that returns a type that defines `__next__()` and `__len__()` methods. + +### Iterating over Mojo collections + +All of the collection types in the [`collections`](/mojo/stdlib/collections) +module support `for` loop iteration. See the +[Collection types](/mojo/manual/types#collection-types) documentation for more +information on Mojo collection types. + +:::caution TODO + +Iterating over Mojo native collections currently assigns the loop index variable +a [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the +item itself. You can access the item using the dereference operator, `[]`, as +shown in the examples below. This may change in a future version of Mojo. + +::: + +The following shows an example of iterating over a Mojo +[`List`](/mojo/stdlib/collections/list/List). + +```mojo +from collections import List + +states = List[String]("California", "Hawaii", "Oregon") +for state in states: + print(state[]) +``` + +```output +California +Hawaii +Oregon +``` + +The same technique works for iterating over a Mojo +[`Set`](/mojo/stdlib/collections/set/Set). + +```mojo +from collections import Set + +values = Set[Int](42, 0) +for item in values: + print(item[]) +``` + +```output +42 +0 +``` + +There are two techniques for iterating over a Mojo +[`Dict`](/mojo/stdlib/collections/dict/Dict). The first is to iterate directly +using the `Dict`, which produces a sequence of the dictionary's keys. + +```mojo +from collections import Dict + +capitals = Dict[String, String]() +capitals["California"] = "Sacramento" +capitals["Hawaii"] = "Honolulu" +capitals["Oregon"] = "Salem" + +for state in capitals: + print(capitals[state[]] + ", " + state[]) +``` + +```output +Sacramento, California +Honolulu, Hawaii +Salem, Oregon +``` + +The second approach to iterating over a Mojo `Dict` is to invoke its +[`items()`](/mojo/stdlib/collections/dict/Dict#items) method, which produces a +sequence of [`DictEntry`](/mojo/stdlib/collections/dict/DictEntry) objects. +Within the loop body, you can then access the `key` and `value` fields of the +entry. + +```mojo +for item in capitals.items(): + print(item[].value + ", " + item[].key) +``` + +```output +Sacramento, California +Honolulu, Hawaii +Salem, Oregon +``` + +Another type of iterable provided by the Mojo standard library is a *range*, +which is a sequence of integers generated by the +[`range()`](/mojo/stdlib/builtin/range/range) function. It differs from the +collection types shown above in that it's implemented as a +[generator](https://en.wikipedia.org/wiki/Generator_\(computer_programming\)), +producing each value as needed rather than materializing the entire sequence +in memory. Additionally, each value assigned to the loop index variable is +simply the `Int` value rather than a `Reference` to the value, so you should +not use the dereference operator on it within the loop. For example: + +```mojo +for i in range(5): + print(i, end=", ") +``` + +```output +0, 1, 2, 3, 4, +``` + +### `for` loop control statements + +A `continue` statement skips execution of the rest of the code block and +resumes the loop with the next element of the collection. + +```mojo +for i in range(5): + if i == 3: + continue + print(i, end=", ") +``` + +```output +0, 1, 2, 4, +``` + +A `break` statement terminates execution of the loop. + +```mojo +for i in range(5): + if i == 3: + break + print(i, end=", ") +``` + +```output +0, 1, 2, +``` + +Optionally, a `for` loop can include an `else` clause. The body of the `else` +clause executes after iterating over all of the elements in a collection. + +```mojo +for i in range(5): + print(i, end=", ") +else: + print("\nFinished executing 'for' loop") +``` + +```output +0, 1, 2, 3, 4, +Finished executing 'for' loop +``` + +The `else` clause executes even if the collection is empty. + +```mojo +from collections import List + +empty = List[Int]() +for i in empty: + print(i[]) +else: + print("Finished executing 'for' loop") +``` + +```output +Finished executing 'for' loop +``` + +:::note + +The `else` clause does *not* execute if a `break` or `return` statement +terminates the `for` loop. + +::: + +```mojo +from collections import List + +animals = List[String]("cat", "aardvark", "hippopotamus", "dog") +for animal in animals: + if animal[] == "dog": + print("Found a dog") + break +else: + print("No dog found") +``` + +```output +Found a dog +``` + +### Iterating over Python collections + +The Mojo `for` loop supports iterating over Python collection types. Each item +retrieved by the loop is a +[`PythonObject`](/mojo/stdlib/python/object/PythonObject) wrapper around +the Python object. Refer to the [Python types](/mojo/manual/python/types) +documentation for more information on manipulating Python objects from Mojo. + +The following is a simple example of iterating over a mixed-type Python list. + +```mojo +from python import Python + +# Create a mixed-type Python list +py_list = Python.evaluate("[42, 'cat', 3.14159]") +for py_obj in py_list: # Each element is of type "PythonObject" + print(py_obj) +``` + +```output +42 +cat +3.14159 +``` + +:::note TODO + +Iterating over a Mojo collection currently assigns the loop index variable a +`Reference` to each element, which then requires you to use the dereference +operator within the loop body. In contrast, iterating over a Python collection +assigns a `PythonObject` wrapper for the element, which does *not* require you +to use the dereference operator. + +::: + +There are two techniques for iterating over a Python dictionary. The first is to +iterate directly using the dictionary, which produces a sequence of its keys. + +```mojo +from python import Python + +# Create a mixed-type Python dictionary +py_dict = Python.evaluate("{'a': 1, 'b': 2.71828, 'c': 'sushi'}") +for py_key in py_dict: # Each element is of type "PythonObject" + print(py_key, py_dict[py_key]) +``` + +```output +a 1 +b 2.71828 +c sushi +``` + +The second approach to iterating over a Python dictionary is to invoke its +`items()` method, which produces a sequence of 2-tuple objects. +Within the loop body, you can then access the key and value by index. + +```mojo +for py_tuple in py_dict.items(): # Each element is of type "PythonObject" + print(py_tuple[0], py_tuple[1]) +``` + +```output +a 1 +b 2.71828 +c sushi +``` diff --git a/docs/manual/decorators/always-inline.ipynb b/docs/manual/decorators/always-inline.ipynb deleted file mode 100644 index f272691b9b..0000000000 --- a/docs/manual/decorators/always-inline.ipynb +++ /dev/null @@ -1,102 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@always_inline`'\n", - "description: Copies the body of a function directly into the body of the calling function.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@always_inline` decorator on any function to make the Mojo\n", - "compiler \"inline\" the body of the function (copy it) directly into the body of\n", - "the calling function.\n", - "\n", - "This eliminates potential performance costs associated with function calls\n", - "jumping to a new point in code. Normally, the compiler will do this\n", - "automatically where it can improve performance, but this decorator forces it to\n", - "do so. The downside is that it can increase the binary size by duplicating the\n", - "function at every call site.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@always_inline\n", - "fn add(a: Int, b: Int) -> Int:\n", - " return a + b\n", - "\n", - "print(add(1, 2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Because `add()` is decorated with `@always_inline`, Mojo compiles this program\n", - "without adding the `add()` function to the call stack, and it instead performs\n", - "the addition directly at the `print()` call site, as if it were written like\n", - "this:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(1 + 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `@always_inline(\"nodebug\")`\n", - "\n", - "You can also use the decorator with the `\"nodebug\"` argument, which has the\n", - "same effect to inline the function, but without debug information. This means\n", - "that you can't step into the function when debugging.\n", - "\n", - "This decorator is intended to be used on the lowest-level functions in a\n", - "library, which may wrap primitive functions, MLIR operations, or inline\n", - "assembly. Marking these functions as \"nodebug\" prevents users from accidentally\n", - "stepping into low-level non-Mojo code when debugging." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/always-inline.md b/docs/manual/decorators/always-inline.md new file mode 100644 index 0000000000..d84ae98b63 --- /dev/null +++ b/docs/manual/decorators/always-inline.md @@ -0,0 +1,46 @@ +--- +title: '@always_inline' +description: Copies the body of a function directly into the body of the calling function. +codeTitle: true + +--- + +You can add the `@always_inline` decorator on any function to make the Mojo +compiler "inline" the body of the function (copy it) directly into the body of +the calling function. + +This eliminates potential performance costs associated with function calls +jumping to a new point in code. Normally, the compiler will do this +automatically where it can improve performance, but this decorator forces it to +do so. The downside is that it can increase the binary size by duplicating the +function at every call site. + +For example: + +```mojo +@always_inline +fn add(a: Int, b: Int) -> Int: + return a + b + +print(add(1, 2)) +``` + +Because `add()` is decorated with `@always_inline`, Mojo compiles this program +without adding the `add()` function to the call stack, and it instead performs +the addition directly at the `print()` call site, as if it were written like +this: + +```mojo +print(1 + 2) +``` + +## `@always_inline("nodebug")` + +You can also use the decorator with the `"nodebug"` argument, which has the +same effect to inline the function, but without debug information. This means +that you can't step into the function when debugging. + +This decorator is intended to be used on the lowest-level functions in a +library, which may wrap primitive functions, MLIR operations, or inline +assembly. Marking these functions as "nodebug" prevents users from accidentally +stepping into low-level non-Mojo code when debugging. diff --git a/docs/manual/decorators/copy-capture.ipynb b/docs/manual/decorators/copy-capture.ipynb deleted file mode 100644 index e5e59dfe87..0000000000 --- a/docs/manual/decorators/copy-capture.ipynb +++ /dev/null @@ -1,64 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@__copy_capture`'\n", - "description: Captures register-passable typed values by copy.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `__copy_capture` decorator on a parametric closure to capture register-passable values by copy. This decorator causes a nested function to copy the value of the indicated variable into the closure object at the point of formation instead of capturing that variable by reference. This allows the closure to be passed as an escaping function, without lifetime concerns." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - " fn foo(x: Int):\n", - " var z = x\n", - "\n", - " @__copy_capture(z)\n", - " @parameter\n", - " fn formatter() -> Int:\n", - " return z\n", - " z = 2\n", - " print(formatter())\n", - "\n", - " fn main():\n", - " foo(5)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/copy-capture.md b/docs/manual/decorators/copy-capture.md new file mode 100644 index 0000000000..394e9d6a17 --- /dev/null +++ b/docs/manual/decorators/copy-capture.md @@ -0,0 +1,27 @@ +--- +title: '@__copy_capture' +description: Captures register-passable typed values by copy. +codeTitle: true + +--- + +You can add the `__copy_capture` decorator on a parametric closure to capture +register-passable values by copy. This decorator causes a nested function to +copy the value of the indicated variable into the closure object at the point +of formation instead of capturing that variable by reference. This allows the +closure to be passed as an escaping function, without lifetime concerns. + +```mojo + fn foo(x: Int): + var z = x + + @__copy_capture(z) + @parameter + fn formatter() -> Int: + return z + z = 2 + print(formatter()) + + fn main(): + foo(5) +``` diff --git a/docs/manual/decorators/implicit.md b/docs/manual/decorators/implicit.md new file mode 100644 index 0000000000..1e9cd07e0b --- /dev/null +++ b/docs/manual/decorators/implicit.md @@ -0,0 +1,40 @@ +--- +title: '@implicit' +description: Marks a constructor as eligible for implicit conversion. +codeTitle: true + +--- + +You can add the `@implicit` decorator on any single-argument constructor to +identify it as eligible for implicit conversion. + +For example: + +```mojo +struct MyInt: + var value: Int + + @implicit + fn __init__(out self, value: Int): + self.value = value + + fn __init__(out self, value: Float64): + self.value = int(value) + + +``` + +This implicit conversion constructor allows you to pass an `Int` to a function +that takes a `MyInt` argument, or assign an `Int` to a variable of type `MyInt`. +However, the constructor that takes a `Float64` value is **not** an implicit +conversion constructor, so it must be invoked explicitly: + +```mojo +fn func(n: MyInt): + print("MyInt value: ", n.value) + +fn main(): + func(Int(42)) # Implicit conversion from Int: OK + func(MyInt(Float64(4.2))) # Explicit conversion from Float64: OK + func(Float64(4.2)) # Error: can't convert Float64 to MyInt +``` diff --git a/docs/manual/decorators/index.mdx b/docs/manual/decorators/index.mdx index f7c7d1a6af..058580e41e 100644 --- a/docs/manual/decorators/index.mdx +++ b/docs/manual/decorators/index.mdx @@ -7,13 +7,14 @@ hide_table_of_contents: true listing: - id: docs contents: - - always-inline.ipynb - - copy-capture.ipynb - - nonmaterializable.ipynb - - parameter.ipynb - - register-passable.ipynb - - staticmethod.ipynb - - value.ipynb + - always-inline.md + - copy-capture.md + - implicit.md + - nonmaterializable.md + - parameter.md + - register-passable.md + - staticmethod.md + - value.md type: grid page-size: 99 --- diff --git a/docs/manual/decorators/nonmaterializable.ipynb b/docs/manual/decorators/nonmaterializable.ipynb deleted file mode 100644 index 49d6b312fc..0000000000 --- a/docs/manual/decorators/nonmaterializable.ipynb +++ /dev/null @@ -1,112 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@nonmaterializable`'\n", - "description: Declares that a type should exist only in the parameter domain.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@nonmaterializable` decorator on a struct to declare that the\n", - "type can exist only in the parameter domain (it can be used for metaprogramming\n", - "only, and not as a runtime type). And, if an instance of this type does\n", - "transition into the runtime domain, this decorator declares what type it\n", - "becomes there.\n", - "\n", - "To use it, declare your type with `@nonmaterializable(TargetType)`, where\n", - "`TargetType` is the type that the object should convert to if it becomes a\n", - "runtime value (you must declare the `TargetType`). For example, if a struct is\n", - "marked as `@nonmaterializable(Foo)`, then anywhere that it goes from a\n", - "parameter value to a runtime value, it automatically converts into the `Foo`\n", - "type.\n", - "\n", - "For example, the following `NmStruct` type can be used in the parameter domain,\n", - "but the `converted_to_has_bool` instance of it is converted to `HasBool` when it's\n", - "materialized as a runtime value:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct HasBool:\n", - " var x: Bool\n", - "\n", - " fn __init__(out self, x: Bool):\n", - " self.x = x\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __init__(out self, nms: NmStruct):\n", - " self.x = True if (nms.x == 77) else False\n", - "\n", - "@value\n", - "@nonmaterializable(HasBool)\n", - "@register_passable(\"trivial\")\n", - "struct NmStruct:\n", - " var x: Int\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __add__(self, rhs: Self) -> Self:\n", - " return NmStruct(self.x + rhs.x)\n", - "\n", - "alias still_nm_struct = NmStruct(1) + NmStruct(2)\n", - "# When materializing to a run-time variable, it is automatically converted,\n", - "# even without a type annotation.\n", - "var converted_to_has_bool = still_nm_struct" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "A non-materializable struct must have all of its methods annotated\n", - "as `@always_inline`, and it must be computable in the parameter domain.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/nonmaterializable.md b/docs/manual/decorators/nonmaterializable.md new file mode 100644 index 0000000000..d24847c0dc --- /dev/null +++ b/docs/manual/decorators/nonmaterializable.md @@ -0,0 +1,59 @@ +--- +title: '@nonmaterializable' +description: Declares that a type should exist only in the parameter domain. +codeTitle: true + +--- + +You can add the `@nonmaterializable` decorator on a struct to declare that the +type can exist only in the parameter domain (it can be used for metaprogramming +only, and not as a runtime type). And, if an instance of this type does +transition into the runtime domain, this decorator declares what type it +becomes there. + +To use it, declare your type with `@nonmaterializable(TargetType)`, where +`TargetType` is the type that the object should convert to if it becomes a +runtime value (you must declare the `TargetType`). For example, if a struct is +marked as `@nonmaterializable(Foo)`, then anywhere that it goes from a +parameter value to a runtime value, it automatically converts into the `Foo` +type. + +For example, the following `NmStruct` type can be used in the parameter domain, +but the `converted_to_has_bool` instance of it is converted to `HasBool` when it's +materialized as a runtime value: + +```mojo +@value +@register_passable("trivial") +struct HasBool: + var x: Bool + + fn __init__(out self, x: Bool): + self.x = x + + @always_inline("nodebug") + fn __init__(out self, nms: NmStruct): + self.x = True if (nms.x == 77) else False + +@value +@nonmaterializable(HasBool) +@register_passable("trivial") +struct NmStruct: + var x: Int + + @always_inline("nodebug") + fn __add__(self, rhs: Self) -> Self: + return NmStruct(self.x + rhs.x) + +alias still_nm_struct = NmStruct(1) + NmStruct(2) +# When materializing to a run-time variable, it is automatically converted, +# even without a type annotation. +var converted_to_has_bool = still_nm_struct +``` + +:::note + +A non-materializable struct must have all of its methods annotated +as `@always_inline`, and it must be computable in the parameter domain. + +::: diff --git a/docs/manual/decorators/parameter.ipynb b/docs/manual/decorators/parameter.ipynb deleted file mode 100644 index 1cb7334442..0000000000 --- a/docs/manual/decorators/parameter.ipynb +++ /dev/null @@ -1,195 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@parameter`'\n", - "description: Executes a function or if statement at compile time.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@parameter` decorator on an `if` statement or on a nested\n", - "function to run that code at compile time.\n", - "\n", - "## Parametric if statement\n", - "\n", - "You can add `@parameter` to any `if` condition that's based on a valid\n", - "parameter expression (it's an expression that evaluates at compile time). This\n", - "ensures that only the live branch of the `if` statement is compiled into the\n", - "program, which can reduce your final binary size. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "this will be included in the binary\n" - ] - } - ], - "source": [ - "@parameter\n", - "if True:\n", - " print(\"this will be included in the binary\")\n", - "else:\n", - " print(\"this will be eliminated at compile time\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parametric for statement\n", - "\n", - "You can add the `@parameter` decorator to an `for` loop to create a loop that's\n", - "evaluated at compile time. The loop sequence and induction values must be\n", - "a valid parameter expressions (that is, an expressions that evaluate at compile\n", - "time).\n", - "\n", - "This has the effect of \"unrolling\" the loop.\n", - "\n", - " ```mojo\n", - " fn parameter_for[max: Int]():\n", - " @parameter\n", - " for i in range(max)\n", - " @parameter\n", - " if i == 10:\n", - " print(\"found 10!\")\n", - " ```\n", - "\n", - " Currently, `@parameter for` requires the sequence's `__iter__` method to\n", - " return a `_StridedRangeIterator`, meaning the induction variables must be\n", - " `Int`. The intention is to lift these restrictions in the future.\n", - "\n", - "### Compared to `unroll()`\n", - "\n", - "The Mojo standard library also includes a function called\n", - "[`unroll()`](/mojo/stdlib/utils/loop/unroll) that unrolls a\n", - "given function that you want to call repeatedly, but has some important\n", - "differences when compared to the parametric `for` statement:\n", - "\n", - "- The `@parameter` decorator operates on `for` loop expressions. The \n", - " `unroll()` function is a higher-order function that takes a parametric closure\n", - " (see below) and executes it a specified number of times.\n", - "\n", - "- The parametric `for` statement is more versatile, since you can do anything \n", - " you can do in a `for` statement: including using arbitrary sequences, \n", - " early-exiting from the loop, skipping iterations with `continue` and so on.\n", - " \n", - " By contrast, `unroll()` simply takes a function and a count, and executes\n", - " the function the specified number of times.\n", - "\n", - "Both `unroll()` and `@parameter for` unroll at the beginning of compilation, \n", - "which might explode the size of the program that still needs to be compiled,\n", - "depending on the amount of code that's unrolled." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parametric closure\n", - "\n", - "You can add `@parameter` on a nested function to create a “parametric”\n", - "capturing closure. This means you can create a closure function that captures\n", - "values from the outer scope (regardless of whether they are variables or\n", - "parameters), and then use that closure as a parameter. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n" - ] - } - ], - "source": [ - "fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int:\n", - " return func(num)\n", - "\n", - "fn create_closure():\n", - " var x = 1\n", - "\n", - " @parameter\n", - " fn add(i: Int) -> Int:\n", - " return x + i\n", - "\n", - " var y = use_closure[add](2)\n", - " print(y)\n", - "\n", - "create_closure()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without the `@parameter` decorator, you'll get a compiler error that says you\n", - "\"cannot use a dynamic value in call parameter\"—referring to the\n", - "`use_closure[add](2)` call—because the `add()` closure would still be dynamic.\n", - "\n", - "Note the `[_]` in the function type:\n", - "\n", - "```mojo\n", - "fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int:\n", - "```\n", - "\n", - "This origin specifier represents the set of origins for the values captured by\n", - "the parametric closure. This allows the compiler to correctly extend the\n", - "lifetimes of those values. For more information on lifetimes and origins, see\n", - "[Lifetimes, origins and references](/mojo/manual/values/lifetimes).\n", - "\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/parameter.md b/docs/manual/decorators/parameter.md new file mode 100644 index 0000000000..c82d9c6783 --- /dev/null +++ b/docs/manual/decorators/parameter.md @@ -0,0 +1,115 @@ +--- +title: '@parameter' +description: Executes a function or if statement at compile time. +codeTitle: true + +--- + +You can add the `@parameter` decorator on an `if` statement or on a nested +function to run that code at compile time. + +## Parametric if statement + +You can add `@parameter` to any `if` condition that's based on a valid +parameter expression (it's an expression that evaluates at compile time). This +ensures that only the live branch of the `if` statement is compiled into the +program, which can reduce your final binary size. For example: + +```mojo +@parameter +if True: + print("this will be included in the binary") +else: + print("this will be eliminated at compile time") +``` + +```output +this will be included in the binary +``` + +## Parametric for statement + +You can add the `@parameter` decorator to an `for` loop to create a loop that's +evaluated at compile time. The loop sequence and induction values must be +a valid parameter expressions (that is, an expressions that evaluate at compile +time). + +This has the effect of "unrolling" the loop. + +```mojo +fn parameter_for[max: Int](): + @parameter + for i in range(max) + @parameter + if i == 10: + print("found 10!") +``` + +Currently, `@parameter for` requires the sequence's `__iter__` method to +return a `_StridedRangeIterator`, meaning the induction variables must be +`Int`. The intention is to lift these restrictions in the future. + +### Compared to `unroll()` + +The Mojo standard library also includes a function called +[`unroll()`](/mojo/stdlib/utils/loop/unroll) that unrolls a +given function that you want to call repeatedly, but has some important +differences when compared to the parametric `for` statement: + +- The `@parameter` decorator operates on `for` loop expressions. The + `unroll()` function is a higher-order function that takes a parametric closure + (see below) and executes it a specified number of times. + +- The parametric `for` statement is more versatile, since you can do anything + you can do in a `for` statement: including using arbitrary sequences, + early-exiting from the loop, skipping iterations with `continue` and so on. + + By contrast, `unroll()` simply takes a function and a count, and executes + the function the specified number of times. + +Both `unroll()` and `@parameter for` unroll at the beginning of compilation, +which might explode the size of the program that still needs to be compiled, +depending on the amount of code that's unrolled. + +## Parametric closure + +You can add `@parameter` on a nested function to create a “parametric” +capturing closure. This means you can create a closure function that captures +values from the outer scope (regardless of whether they are variables or +parameters), and then use that closure as a parameter. For example: + +```mojo +fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int: + return func(num) + +fn create_closure(): + var x = 1 + + @parameter + fn add(i: Int) -> Int: + return x + i + + var y = use_closure[add](2) + print(y) + +create_closure() +``` + +```output +3 +``` + +Without the `@parameter` decorator, you'll get a compiler error that says you +"cannot use a dynamic value in call parameter"—referring to the +`use_closure[add](2)` call—because the `add()` closure would still be dynamic. + +Note the `[_]` in the function type: + +```mojo +fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int: +``` + +This origin specifier represents the set of origins for the values captured by +the parametric closure. This allows the compiler to correctly extend the +lifetimes of those values. For more information on lifetimes and origins, see +[Lifetimes, origins and references](/mojo/manual/values/lifetimes). diff --git a/docs/manual/decorators/register-passable.ipynb b/docs/manual/decorators/register-passable.ipynb deleted file mode 100644 index 174418abaa..0000000000 --- a/docs/manual/decorators/register-passable.ipynb +++ /dev/null @@ -1,205 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@register_passable`'\n", - "description: Declares that a type should be passed in machine registers.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@register_passable` decorator on a struct to tell Mojo that\n", - "the type should be passed in machine registers (such as a CPU register; subject\n", - "to the details of the underlying architecture). For tiny data types like an\n", - "integer or floating-point number, this is much more efficient than storing\n", - "values in stack memory. This means the type is always passed by value and\n", - "cannot be passed by reference.\n", - "\n", - "The basic `@register_passable` decorator does not change the fundamental\n", - "behavior of a type: it still needs an `__init__()` and `__copyinit__()` method\n", - "to be copyable (and it may have a `__del__()` method, if necessary). For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@register_passable\n", - "struct Pair:\n", - " var a: Int\n", - " var b: Int\n", - "\n", - " fn __init__(out self, one: Int, two: Int):\n", - " self.a = one\n", - " self.b = two\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.a = existing.a\n", - " self.b = existing.b\n", - "\n", - "fn test_pair():\n", - " var x = Pair(5, 10)\n", - " var y = x\n", - "\n", - " print(y.a, y.b)\n", - " y.a = 10\n", - " y.b = 20\n", - " print(y.a, y.b)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5 10\n", - "10 20\n" - ] - } - ], - "source": [ - "test_pair()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This behavior is what we expect from `Pair`, with or without the decorator." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You should be aware of a few other observable effects:\n", - "\n", - "1. `@register_passable` types cannot hold instances of types\n", - "that are not also `@register_passable`.\n", - "\n", - "1. `@register_passable` types do not have a predictable identity,\n", - "and so the `self` pointer is not stable/predictable (e.g. in hash tables).\n", - "\n", - "1. `@register_passable` arguments and result are exposed to C and C++ directly,\n", - "instead of being passed by-pointer.\n", - "\n", - "1. `@register_passable` types cannot have a [`__moveinit__()`\n", - "constructor](/mojo/manual/lifecycle/life#move-constructor), because\n", - "values passed in a register cannot be passed by reference.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `@register_passable(\"trivial\")`" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most types that use `@register_passable` are just \"bags of bits,\" which we call\n", - "\"trivial\" types. These trivial types are simple and should be copied, moved,\n", - "and destroyed without any custom constructors or a destructor. For these types,\n", - "you can add the `\"trivial\"` argument, and Mojo synthesizes all the lifecycle\n", - "methods as appropriate for a trivial register-passable type:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "@register_passable(\"trivial\")\n", - "struct Pair:\n", - " var a: Int\n", - " var b: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is similar to the [`@value`](/mojo/manual/decorators/value) decorator,\n", - "except when using `@register_passable(\"trivial\")` the only lifecycle method\n", - "you're allowed to define is the `__init__()` constructor (but you don't have\n", - "to)—you _cannot_ define any copy or move constructors or a destructor.\n", - "\n", - "Examples of trivial types include:\n", - "\n", - "- Arithmetic types such as `Int`, `Bool`, `Float64` etc.\n", - "- Pointers (the address value is trivial, not the data being pointed to).\n", - "- Arrays of other trivial types, including SIMD." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more information about lifecycle methods (constructors and destructors)\n", - "see the section about [Value lifecycle](/mojo/manual/lifecycle/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "This decorator is due for reconsideration. Lack of custom\n", - "copy/move/destroy logic and \"passability in a register\" are orthogonal concerns\n", - "and should be split. This former logic should be subsumed into a more general\n", - "decorator, which is orthogonal to `@register_passable`.\n", - "\n", - ":::" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/register-passable.md b/docs/manual/decorators/register-passable.md new file mode 100644 index 0000000000..16e3ec0587 --- /dev/null +++ b/docs/manual/decorators/register-passable.md @@ -0,0 +1,105 @@ +--- +title: '@register_passable' +description: Declares that a type should be passed in machine registers. +codeTitle: true + +--- + +You can add the `@register_passable` decorator on a struct to tell Mojo that +the type should be passed in machine registers (such as a CPU register; subject +to the details of the underlying architecture). For tiny data types like an +integer or floating-point number, this is much more efficient than storing +values in stack memory. This means the type is always passed by value and +cannot be passed by reference. + +The basic `@register_passable` decorator does not change the fundamental +behavior of a type: it still needs an `__init__()` and `__copyinit__()` method +to be copyable (and it may have a `__del__()` method, if necessary). For example: + +```mojo +@register_passable +struct Pair: + var a: Int + var b: Int + + fn __init__(out self, one: Int, two: Int): + self.a = one + self.b = two + + fn __copyinit__(out self, existing: Self): + self.a = existing.a + self.b = existing.b + +fn test_pair(): + var x = Pair(5, 10) + var y = x + + print(y.a, y.b) + y.a = 10 + y.b = 20 + print(y.a, y.b) +``` + +```mojo +test_pair() +``` + +```output +5 10 +10 20 +``` + +This behavior is what we expect from `Pair`, with or without the decorator. + +You should be aware of a few other observable effects: + +1. `@register_passable` types cannot hold instances of types + that are not also `@register_passable`. + +2. `@register_passable` types do not have a predictable identity, + and so the `self` pointer is not stable/predictable (e.g. in hash tables). + +3. `@register_passable` arguments and result are exposed to C and C++ directly, + instead of being passed by-pointer. + +4. `@register_passable` types cannot have a [`__moveinit__()` + constructor](/mojo/manual/lifecycle/life#move-constructor), because + values passed in a register cannot be passed by reference. + +## `@register_passable("trivial")` + +Most types that use `@register_passable` are just "bags of bits," which we call +"trivial" types. These trivial types are simple and should be copied, moved, +and destroyed without any custom constructors or a destructor. For these types, +you can add the `"trivial"` argument, and Mojo synthesizes all the lifecycle +methods as appropriate for a trivial register-passable type: + +```mojo +@register_passable("trivial") +struct Pair: + var a: Int + var b: Int +``` + +This is similar to the [`@value`](/mojo/manual/decorators/value) decorator, +except when using `@register_passable("trivial")` the only lifecycle method +you're allowed to define is the `__init__()` constructor (but you don't have +to)—you *cannot* define any copy or move constructors or a destructor. + +Examples of trivial types include: + +- Arithmetic types such as `Int`, `Bool`, `Float64` etc. +- Pointers (the address value is trivial, not the data being pointed to). +- Arrays of other trivial types, including SIMD. + +For more information about lifecycle methods (constructors and destructors) +see the section about [Value lifecycle](/mojo/manual/lifecycle/). + +:::note TODO + +This decorator is due for reconsideration. Lack of custom +copy/move/destroy logic and "passability in a register" are orthogonal concerns +and should be split. This former logic should be subsumed into a more general +decorator, which is orthogonal to `@register_passable`. + +::: diff --git a/docs/manual/decorators/staticmethod.ipynb b/docs/manual/decorators/staticmethod.ipynb deleted file mode 100644 index bcd9a4d2e5..0000000000 --- a/docs/manual/decorators/staticmethod.ipynb +++ /dev/null @@ -1,85 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@staticmethod`'\n", - "description: Declares a struct method as static.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@staticmethod` decorator on a struct method to declare a static\n", - "method. \n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import List\n", - "from pathlib import Path\n", - "\n", - "\n", - "struct MyStruct:\n", - " var data: List[UInt8]\n", - "\n", - " fn __init__(out self):\n", - " self.data = List[UInt8]()\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.data = existing.data ^\n", - "\n", - " @staticmethod\n", - " fn load_from_file(file_path: Path) raises -> Self:\n", - " var new_struct = MyStruct()\n", - " new_struct.data = file_path.read_bytes()\n", - " return new_struct ^" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Unlike an instance method, a static method doesn't take an implicit `self`\n", - "argument. It's not attached to a specific instance of a struct, so it can't\n", - "access instance data.\n", - "\n", - "For more information see the documentation on\n", - "[static methods](/mojo/manual/structs#static-methods)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/staticmethod.md b/docs/manual/decorators/staticmethod.md new file mode 100644 index 0000000000..686c86cd4c --- /dev/null +++ b/docs/manual/decorators/staticmethod.md @@ -0,0 +1,39 @@ +--- +title: '@staticmethod' +description: Declares a struct method as static. +codeTitle: true + +--- + +You can add the `@staticmethod` decorator on a struct method to declare a static +method. + +For example: + +```mojo +from collections import List +from pathlib import Path + + +struct MyStruct: + var data: List[UInt8] + + fn __init__(out self): + self.data = List[UInt8]() + + fn __moveinit__(out self, owned existing: Self): + self.data = existing.data ^ + + @staticmethod + fn load_from_file(file_path: Path) raises -> Self: + var new_struct = MyStruct() + new_struct.data = file_path.read_bytes() + return new_struct ^ +``` + +Unlike an instance method, a static method doesn't take an implicit `self` +argument. It's not attached to a specific instance of a struct, so it can't +access instance data. + +For more information see the documentation on +[static methods](/mojo/manual/structs#static-methods). diff --git a/docs/manual/decorators/value.ipynb b/docs/manual/decorators/value.ipynb deleted file mode 100644 index f82a54a21b..0000000000 --- a/docs/manual/decorators/value.ipynb +++ /dev/null @@ -1,111 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@value`'\n", - "description: Generates boilerplate lifecycle methods for a struct.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@value` decorator on a struct to generate boilerplate\n", - "lifecycle methods, including the member-wise `__init__()` constructor,\n", - "`__copyinit__()` copy constructor, and `__moveinit__()` move constructor.\n", - "\n", - "For example, consider a simple struct like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo sees the `@value` decorator and notices that you don't have any constructors\n", - "and it synthesizes them for you, the result being as if you had actually\n", - "written this:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo synthesizes each lifecycle method only when it doesn't exist, so\n", - "you can use `@value` and still define your own versions to override the default\n", - "behavior. For example, it is fairly common to use the default member-wise and\n", - "move constructor, but create a custom copy constructor." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more information about these lifecycle methods, read\n", - "[Life of a value](/mojo/manual/lifecycle/life)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/value.md b/docs/manual/decorators/value.md new file mode 100644 index 0000000000..f60f03259b --- /dev/null +++ b/docs/manual/decorators/value.md @@ -0,0 +1,49 @@ +--- +title: '@value' +description: Generates boilerplate lifecycle methods for a struct. +codeTitle: true + +--- + +You can add the `@value` decorator on a struct to generate boilerplate +lifecycle methods, including the member-wise `__init__()` constructor, +`__copyinit__()` copy constructor, and `__moveinit__()` move constructor. + +For example, consider a simple struct like this: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo sees the `@value` decorator and notices that you don't have any constructors +and it synthesizes them for you, the result being as if you had actually +written this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Mojo synthesizes each lifecycle method only when it doesn't exist, so +you can use `@value` and still define your own versions to override the default +behavior. For example, it is fairly common to use the default member-wise and +move constructor, but create a custom copy constructor. + +For more information about these lifecycle methods, read +[Life of a value](/mojo/manual/lifecycle/life). diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index c87fab7777..47e1a23711 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -298,14 +298,14 @@ import time struct Timer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") @@ -371,19 +371,19 @@ import time struct ConditionalTimer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") - fn __exit__(inout self, e: Error) raises -> Bool: + fn __exit__(mut self, e: Error) raises -> Bool: if str(e) == "just a warning": print("Suppressing error:", e) self.__exit__() diff --git a/docs/manual/functions.ipynb b/docs/manual/functions.ipynb deleted file mode 100755 index 6f24f70e0d..0000000000 --- a/docs/manual/functions.ipynb +++ /dev/null @@ -1,855 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Functions\n", - "sidebar_position: 2\n", - "description: Introduction to Mojo `fn` and `def` functions.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned in [Language basics](/mojo/manual/basics), Mojo supports two\n", - "types of functions: `def` and `fn` functions. You can use either declaration\n", - "with any function, including the `main()` function, but they have different\n", - "default behaviors, as described on this page.\n", - "\n", - "We believe both `def` and `fn` have good use cases and don't consider either to\n", - "be better than the other. Deciding which to use is a matter of personal taste as\n", - "to which style best fits a given task.\n", - "\n", - "We believe Mojo's flexibility in this regard is a superpower that allows you to\n", - "write code in the manner that's best for your project.\n", - "\n", - ":::note\n", - "\n", - "Functions declared inside a [`struct`](/mojo/manual/structs) are called\n", - "\"methods,\" but they have all the same qualities as \"functions\" described here.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `fn` functions\n", - "\n", - "The `fn` function has somewhat stricter rules than the `def` function.\n", - "\n", - "Here's an example of an `fn` function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn greet(name: String) -> String:\n", - " var greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As far as a function caller is concerned, `def` and `fn` functions are\n", - "interchangeable. That is, there's nothing a `def` can do that an `fn` can't\n", - "(and vice versa). The difference is that, compared to a `def` function, an `fn`\n", - "function is more strict on the inside.\n", - "\n", - "Here's everything to know about `fn`:\n", - "\n", - "- Arguments must specify a type (except for the\n", - " `self` argument in [struct methods](/mojo/manual/structs#methods)).\n", - "\n", - "- Return values must specify a type, unless the function doesn't return a value.\n", - " \n", - " If you don't specify a return type, it defaults to `None` (meaning no return\n", - " value).\n", - "\n", - "- By default, arguments are received as an immutable reference (values are\n", - " read-only, using the `borrowed` [argument\n", - " convention](/mojo/manual/values/ownership#argument-conventions)).\n", - " \n", - " This prevents accidental mutations, and permits the use of non-copyable types\n", - " as arguments.\n", - " \n", - " If you want a local copy, you can simply assign the value to a local\n", - " variable. Or, you can get a mutable reference to the value by declaring the\n", - " `inout` [argument\n", - " convention](/mojo/manual/values/ownership#argument-conventions)).\n", - "\n", - "- If the function raises an exception, it must be explicitly declared with the\n", - " `raises` keyword. (A `def` function does not need to declare exceptions.)\n", - "\n", - "By enforcing these type checks, using the `fn` function helps avoid a variety\n", - "of runtime errors." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `def` functions\n", - "\n", - "Compared to an `fn` function, a `def` function has fewer restrictions.\n", - "The `def` function works more like a Python\n", - "`def` function. For example, this function works the same in Python and Mojo:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name):\n", - " greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In a Mojo `def` function, you have the option to specify the argument type and\n", - "the return type. You can also declare variables with `var`, with or without\n", - "explicit typing. So you can write a `def` function that looks almost exactly\n", - "like the `fn` function shown earlier:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name: String) -> String:\n", - " var greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This way, the compiler ensures that `name` is a string, and the return type is a\n", - "string.\n", - "\n", - "Here's everything to know about `def`:\n", - "\n", - "- Arguments don't require a declared type.\n", - "\n", - " Undeclared arguments are actually passed as an\n", - " [`object`](/mojo/stdlib/builtin/object/object), which allows the\n", - " function to receive any type (Mojo infers the type at runtime).\n", - "\n", - "- Return types don't need to be declared, and also default to `object`. (If a \n", - " `def` function doesn't declare a return type of `None`, it's considered to\n", - " return an `object` by default.)\n", - "\n", - "- Arguments are mutable. Arguments default to using the `borrowed` \n", - " [argument convention](/mojo/manual/values/ownership#argument-conventions)\n", - " like an `fn` function, with a special addition: if the function mutates the\n", - " argument, it makes a mutable copy. \n", - "\n", - " If an argument is an `object` type, it's received as a reference, following\n", - " [object reference\n", - " semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics).\n", - " \n", - " If an argument is any other declared type, it's received as a value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `object` type\n", - "\n", - "If you don't declare the type for an argument or return value in a `def`, it\n", - "becomes an [`object`](/mojo/stdlib/builtin/object/object), which is unlike\n", - "any other type in the standard library.\n", - "\n", - "The `object` type allows for dynamic typing because it can actually represent\n", - "any type in the Mojo standard library, and the actual type is inferred at\n", - "runtime. (Actually, there's still more to do before it can represent all Mojo\n", - "types.) This is great for compatibility with Python and all of the flexibility\n", - "that it provides with dynamic types. However, this lack of type enforcement can\n", - "lead to runtime errors when a function receives or returns an unexpected type.\n", - "\n", - "For compatibility with Python, `object` values are passed using [object\n", - "reference\n", - "semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics).\n", - "As such, the `object` type is not compatible with the [argument\n", - "conventions](/mojo/manual/values/ownership#argument-conventions) that\n", - "enforce value semantics. So, be careful if using `object` values alongside other\n", - "strongly-typed values—their behavior might be inconsistent because `object` is \n", - "the only type in the standard library that does not conform to [full value\n", - "semantics](/mojo/manual/values/value-semantics#intro-to-value-semantics).\n", - "\n", - ":::note TODO\n", - "\n", - "The `object` type is still a work in progress. It doesn't support all of the\n", - "possible underlying types, for example.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Function arguments\n", - "\n", - "As noted in the previous sections, there are a few differences between how `def`\n", - "and `fn` functions treat arguments. But most of the time they are the same.\n", - "\n", - "As noted, there are some differences in _argument conventions_. \n", - "Argument conventions are discussed in much more detail in the page on\n", - "[Ownership](/mojo/manual/values/ownership#argument-conventions).\n", - "\n", - "The other difference is that `def` functions don't need to specify an argument's\n", - "type. If no type is specified, the argument is passed as an \n", - "[`object`](/mojo/stdlib/builtin/object/object).\n", - "\n", - "The remaining rules for arguments described in this section apply to both `def`\n", - "and `fn` functions.\n", - "\n", - "### Optional arguments\n", - "\n", - "An optional argument is one that includes a default value, such as the `exp`\n", - "argument here:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_pow(base: Int, exp: Int = 2) -> Int:\n", - " return base ** exp\n", - "\n", - "fn use_defaults():\n", - " # Uses the default value for `exp`\n", - " var z = my_pow(3)\n", - " print(z)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, you cannot define a default value for an argument that's declared as\n", - "[`inout`](/mojo/manual/values/ownership#mutable-arguments-inout).\n", - "\n", - "Any optional arguments must appear after any required arguments. [Keyword-only\n", - "arguments](#positional-only-and-keyword-only-arguments), discussed later, can\n", - "also be either required or optional." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Keyword arguments\n", - "\n", - "You can also use keyword arguments when calling a function. Keyword arguments\n", - "are specified using the format argument_name =\n", - "argument_value. You can pass keyword arguments in any order:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_pow(base: Int, exp: Int = 2) -> Int:\n", - " return base ** exp\n", - "\n", - "fn use_keywords():\n", - " # Uses keyword argument names (with order reversed)\n", - " var z = my_pow(exp=3, base=2)\n", - " print(z)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variadic arguments\n", - "\n", - "Variadic arguments let a function accept a variable number of arguments. To\n", - "define a function that takes a variadic argument, use the variadic argument\n", - "syntax *argument_name:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum(*values: Int) -> Int:\n", - " var sum: Int = 0\n", - " for value in values:\n", - " sum = sum + value\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The variadic argument `values` here is a placeholder that accepts any number of \n", - "passed positional arguments.\n", - "\n", - "You can define zero or more arguments before the variadic argument. When calling\n", - "the function, any remaining positional arguments are assigned to the variadic\n", - "argument, so any arguments declared **after** the variadic argument can only be\n", - "specified by keyword (see \n", - "[Positional-only and keyword-only arguments](#positional-only-and-keyword-only-arguments)).\n", - "\n", - "Variadic arguments can be divided into two categories:\n", - "\n", - "- Homogeneous variadic arguments, where all of the passed arguments are the same\n", - " type—all `Int`, or all `String`, for example. \n", - "- Heterogeneous variadic arguments, which can accept a set of different argument\n", - " types.\n", - "\n", - "The following sections describe how to work with homogeneous and heterogeneous\n", - "variadic arguments.\n", - "\n", - ":::note Variadic parameters\n", - "\n", - "Mojo [parameters](/mojo/manual/parameters/) are distinct from arguments\n", - "(parameters are used for compile-time metaprogramming). Variadic parameters\n", - "are supported, but with some limitations—for details see \n", - "[variadic parameters](/mojo/manual/parameters/#variadic-parameters).\n", - "\n", - ":::\n", - "\n", - "\n", - "#### Homogeneous variadic arguments\n", - "\n", - "When defining a homogeneous variadic argument, use \n", - "*argument_name: argument_type:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(*names: String):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Inside the function body, the variadic argument is available as an iterable list\n", - "for ease of use. Currently there are some differences in handling the list \n", - "depending on whether the arguments are register-passable types (such as `Int`)\n", - "or memory-only types (such as `String`). TODO: We hope to remove these\n", - "differences in the future.\n", - "\n", - "Register-passable types, such as `Int`, are available as a \n", - "[`VariadicList`](/mojo/stdlib/builtin/builtin_list/VariadicList) type. As\n", - "shown in the previous example, you can iterate over the values using a `for..in`\n", - "loop." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum(*values: Int) -> Int:\n", - " var sum: Int = 0\n", - " for value in values:\n", - " sum = sum+value\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Memory-only types, such as `String`, are available as a \n", - "[`VariadicListMem`](/mojo/stdlib/builtin/builtin_list/VariadicListMem).\n", - "Iterating over this list directly with a `for..in` loop currently produces a\n", - "[`Reference`](/mojo/stdlib/memory/reference/Reference) for each value instead\n", - "of the value itself. You must add an empty subscript operator `[]` to\n", - "dereference the reference and retrieve the value:\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def make_worldly(inout *strs: String):\n", - " # Requires extra [] to dereference the reference for now.\n", - " for i in strs:\n", - " i[] += \" world\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Alternately, subscripting into a `VariadicListMem` returns the argument value,\n", - "and doesn't require any dereferencing:\n", - "\n", - " ```mojo\n", - " fn make_worldly(inout *strs: String):\n", - " # This \"just works\" as you'd expect!\n", - " for i in range(len(strs)):\n", - " strs[i] += \" world\"\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Heterogeneous variadic arguments\n", - "\n", - "Implementing heterogeneous variadic arguments is somewhat more complicated than\n", - "homogeneous variadic arguments. Writing generic code to handle multiple argument\n", - "types requires [traits](/mojo/manual/traits) and \n", - "[parameters](/mojo/manual/parameters/). So the syntax may look a little\n", - "unfamiliar if you haven't worked with those features. The signature for a\n", - "function with a heterogeneous variadic argument looks like this:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```mojo\n", - "def count_many_things[*ArgTypes: Intable](*args: *ArgTypes):\n", - " ...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The parameter list, `[*ArgTypes: Intable]` specifies that the function takes an\n", - "`ArgTypes` parameter, which is a list of types, all of which conform to the \n", - "[`Intable`](/mojo/stdlib/builtin/int/Intable) trait. The argument list, \n", - "`(*args: *ArgTypes)` has the familiar `*args` for the variadic argument, but \n", - "instead of a single type, its type is defined as _list_ of types, `*ArgTypes`.\n", - "\n", - "This means that each argument in `args` has a corresponding type in `ArgTypes`, \n", - "so args[n] is of type \n", - "ArgTypes[n].\n", - "\n", - "Inside the function, `args` is available as a\n", - "[`VariadicPack`](/mojo/stdlib/builtin/builtin_list/VariadicPack). The easiest\n", - "way to work with the arguments is to use the `each()` method to iterate through\n", - "the `VariadicPack`:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "28\n" - ] - } - ], - "source": [ - "fn count_many_things[*ArgTypes: Intable](*args: *ArgTypes) -> Int:\n", - " var total = 0\n", - "\n", - " @parameter\n", - " fn add[Type: Intable](value: Type):\n", - " total += int(value)\n", - "\n", - " args.each[add]()\n", - " return total\n", - "\n", - "print(count_many_things(5, 11.7, 12))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the example above, the `add()` function is called for each argument in turn,\n", - "with the appropriate `value` and `Type` values. For instance, `add()` is first\n", - "called with `value=5` and `Type=Int`, then with `value=11.7` and `Type=Float64`.\n", - "\n", - "Also, note that when calling `count_many_things()`, you don't actually pass in\n", - "a list of argument types. You only need to pass in the arguments, and Mojo\n", - "generates the `ArgTypes` list itself.\n", - "\n", - "As a small optimization, if your function is likely to be called with a single\n", - "argument frequently, you can define your function with a single argument\n", - "followed by a variadic argument. This lets the simple case bypass populating and\n", - "iterating through the `VariadicPack`.\n", - "\n", - "For example, given a `print_string()` function that prints a single string, you\n", - "could re-implement the variadic `print()` function with code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Bob\n" - ] - } - ], - "source": [ - "fn print_string(s: String):\n", - " print(s, end=\"\")\n", - "\n", - "fn print_many[T: Stringable, *Ts: Stringable](first: T, *rest: *Ts):\n", - " print_string(str(first))\n", - "\n", - " @parameter\n", - " fn print_elt[T: Stringable](a: T):\n", - " print_string(\" \")\n", - " print_string(str(a))\n", - " rest.each[print_elt]()\n", - "print_many(\"Bob\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you call `print_many()` with a single argument, it calls `print_string()`\n", - "directly. The `VariadicPack` is empty, so `each()` returns immediately without\n", - "calling the `print_elt()` function." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Variadic keyword arguments\n", - "\n", - "Mojo functions also support variadic keyword arguments (`**kwargs`). Variadic\n", - "keyword arguments allow the user to pass an arbitrary number of keyword\n", - "arguments. To define a function that takes a variadic keyword argument, use the\n", - "variadic keyword argument syntax **kw_argument_name:\n", - "\n", - " ```mojo\n", - " fn print_nicely(**kwargs: Int) raises:\n", - " for key in kwargs.keys():\n", - " print(key[], \"=\", kwargs[key[]])\n", - "\n", - " # prints:\n", - " # `a = 7`\n", - " # `y = 8`\n", - " print_nicely(a=7, y=8)\n", - " ```\n", - "\n", - " In this example, the argument name `kwargs` is a placeholder that accepts any\n", - " number of keyword arguments. Inside the body of the function, you can access\n", - " the arguments as a dictionary of keywords and argument values (specifically,\n", - " an instance of\n", - " [`OwnedKwargsDict`](/mojo/stdlib/collections/dict/OwnedKwargsDict)).\n", - " \n", - " \n", - " There are currently a few limitations:\n", - "\n", - " - Variadic keyword arguments are always implicitly treated as if they\n", - " were declared with the `owned` [argument \n", - " convention](/mojo/manual/values/ownership#argument-conventions), and\n", - " can't be declared otherwise:\n", - "\n", - " ```mojo\n", - " # Not supported yet.\n", - " fn borrowed_var_kwargs(borrowed **kwargs: Int): ...\n", - " ```\n", - "\n", - " - All the variadic keyword arguments must have the same type, and this\n", - " determines the type of the argument dictionary. For example, if the argument\n", - " is `**kwargs: Float64` then the argument dictionary will be a \n", - " `OwnedKwargsDict[Float64]`.\n", - "\n", - " - The argument type must conform to the \n", - " [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait.\n", - " That is, the type must be both [`Movable`](/mojo/stdlib/builtin/value/Movable)\n", - " and [`Copyable`](/mojo/stdlib/builtin/value/Copyable).\n", - "\n", - " - Dictionary unpacking is not supported yet:\n", - "\n", - " ```mojo\n", - " fn takes_dict(d: Dict[String, Int]):\n", - " print_nicely(**d) # Not supported yet.\n", - " ```\n", - "\n", - " - Variadic keyword _parameters_ are not supported yet:\n", - "\n", - " ```mojo\n", - " # Not supported yet.\n", - " fn var_kwparams[**kwparams: Int](): ...\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Positional-only and keyword-only arguments\n", - "\n", - "When defining a function, you can restrict some arguments so that they can only\n", - "be passed as positional arguments, or they can only be passed as keyword \n", - "arguments.\n", - "\n", - "To define positional-only arguments, add a slash character (`/`) to the\n", - "argument list. Any arguments before the `/` are positional-only: they can't be\n", - "passed as keyword arguments. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn min(a: Int, b: Int, /) -> Int:\n", - " return a if a < b else b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This `min()` function can be called with `min(1, 2)` but can't be called using\n", - "keywords, like `min(a=1, b=2)`.\n", - "\n", - "There are several reasons you might want to write a function with\n", - "positional-only arguments:\n", - "\n", - "- The argument names aren't meaningful for the the caller.\n", - "- You want the freedom to change the argument names later on without breaking\n", - " backward compatibility.\n", - "\n", - "For example, in the `min()` function, the argument names don't add any real\n", - "information, and there's no reason to specify arguments by keyword. \n", - "\n", - "For more information on positional-only arguments, see [PEP 570 – Python\n", - "Positional-Only Parameters](https://peps.python.org/pep-0570/).\n", - "\n", - "Keyword-only arguments are the inverse of positional-only arguments: they can\n", - "only be specified by keyword. If a function accepts variadic arguments, any \n", - "arguments defined _after_ the variadic arguments are treated as keyword-only.\n", - "For example:\n", - "\n", - "```mojo\n", - "fn sort(*values: Float64, ascending: Bool = True): ...\n", - "```\n", - "\n", - "In this example, the user can pass any number of `Float64` values, optionally\n", - "followed by the keyword `ascending` argument:\n", - "\n", - "```mojo\n", - "var a = sort(1.1, 6.5, 4.3, ascending=False)\n", - "```\n", - "\n", - "If the function doesn't accept variadic arguments, you can add a single star\n", - "(`*`) to the argument list to separate the keyword-only arguments:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "fn kw_only_args(a1: Int, a2: Int, *, double: Bool) -> Int:\n", - " var product = a1 * a2\n", - " if double:\n", - " return product * 2\n", - " else:\n", - " return product" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Keyword-only arguments often have default values, but this is not required. If a\n", - "keyword-only argument doesn't have a default value, it is a _required \n", - "keyword-only argument_. It must be specified, and it must be specified by \n", - "keyword. \n", - "\n", - "Any required keyword-only arguments must appear in the signature before\n", - "any optional keyword-only arguments. That is, arguments appear in the following\n", - "sequence a function signature:\n", - "\n", - "* Required positional arguments.\n", - "* Optional positional arguments.\n", - "* Variadic arguments.\n", - "* Required keyword-only arguments.\n", - "* Optional keyword-only arguments.\n", - "* Variadic keyword arguments.\n", - "\n", - "For more information on keyword-only arguments, see [PEP 3102 – Keyword-Only\n", - "Arguments](https://peps.python.org/pep-3102/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Overloaded functions\n", - "\n", - "If a `def` function does not specify argument types, then it can accept any\n", - "data type and decide how to handle each type internally. This is nice when you\n", - "want expressive APIs that just work by accepting arbitrary inputs, so there's\n", - "usually no need to write function overloads for a `def` function.\n", - "\n", - "On the other hand, all `fn` functions must specify argument types, so if you\n", - "want a function to work with different data types, you need to implement\n", - "separate versions of the function that each specify different argument types.\n", - "This is called \"overloading\" a function.\n", - "\n", - "For example, here's an overloaded `add()` function that can accept either\n", - "`Int` or `String` types:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "fn add(x: Int, y: Int) -> Int:\n", - " return x + y\n", - "\n", - "fn add(x: String, y: String) -> String:\n", - " return x + y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you pass anything other than `Int` or `String` to the `add()` function,\n", - "you'll get a compiler error. That is, unless `Int` or `String` can implicitly\n", - "cast the type into their own type. For example, `String` includes an overloaded\n", - "version of its constructor (`__init__()`) that accepts a `StringLiteral` value.\n", - "Thus, you can also pass a `StringLiteral` to a function that expects a `String`.\n", - "\n", - "When resolving an overloaded function call, the Mojo compiler tries each\n", - "candidate function and uses the one that works (if only one version works), or\n", - "it picks the closest match (if it can determine a close match), or it reports\n", - "that the call is ambiguous (if it can’t figure out which one to pick).\n", - "\n", - "If the compiler can't figure out which function to use, you can resolve the\n", - "ambiguity by explicitly casting your value to a supported argument type. For\n", - "example, in the following code, we want to call the overloaded `foo()`\n", - "function, but both implementations accept an argument that supports [implicit\n", - "conversion](/mojo/manual/variables#implicit-type-conversion) from\n", - "`StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a\n", - "compiler error. We can fix it by casting the value to the type we really want:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyString:\n", - " fn __init__(out self, string: StringLiteral):\n", - " pass\n", - "\n", - "fn foo(name: String):\n", - " print(\"String\")\n", - "\n", - "fn foo(name: MyString):\n", - " print(\"MyString\")\n", - "\n", - "fn call_foo():\n", - " alias string: StringLiteral = \"Hello\"\n", - " # foo(string) # This call is ambiguous because two `foo` functions match it\n", - " foo(MyString(string))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "When resolving an overloaded function, Mojo does not consider the return type\n", - "or other contextual information at the call site—only the argument types affect\n", - "which function is selected.\n", - "\n", - "Overloading also works with combinations of both `fn` and `def` functions.\n", - "For example, you could define multiple `fn` function overloads and then one\n", - "or more `def` versions that don't specify all argument types, as a fallback.\n", - "\n", - ":::note\n", - "\n", - "Although we haven't discussed\n", - "[parameters](/mojo/manual/parameters/) yet (they're\n", - "different from function arguments, and used for compile-time metaprogramming),\n", - "you can also overload functions based on parameter types.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx new file mode 100644 index 0000000000..19d4c2e067 --- /dev/null +++ b/docs/manual/functions.mdx @@ -0,0 +1,598 @@ +--- +title: Functions +sidebar_position: 2 +description: Introduction to Mojo `fn` and `def` functions. +--- + +As mentioned in [Language basics](/mojo/manual/basics), Mojo supports two +types of functions: `def` and `fn` functions. You can use either declaration +with any function, including the `main()` function, but they have different +default behaviors, as described on this page. + +We believe both `def` and `fn` have good use cases and don't consider either to +be better than the other. Deciding which to use is a matter of personal taste as +to which style best fits a given task. + +We believe Mojo's flexibility in this regard is a superpower that allows you to +write code in the manner that's best for your project. + +:::note + +Functions declared inside a [`struct`](/mojo/manual/structs) are called +"methods," but they have all the same qualities as "functions" described here. + +::: + +## `fn` functions + +The `fn` function has somewhat stricter rules than the `def` function. + +Here's an example of an `fn` function: + +```mojo +fn greet(name: String) -> String: + var greeting = "Hello, " + name + "!" + return greeting +``` + +As far as a function caller is concerned, `def` and `fn` functions are +interchangeable. That is, there's nothing a `def` can do that an `fn` can't +(and vice versa). The difference is that, compared to a `def` function, an `fn` +function is more strict on the inside. + +Here's everything to know about `fn`: + +* Arguments must specify a type (except for the + `self` argument in [struct methods](/mojo/manual/structs#methods)). + +* Return values must specify a type, unless the function doesn't return a value. + + If you don't specify a return type, it defaults to `None` (meaning no return + value). + +* By default, arguments are received as an immutable reference (values are + read-only, using the `read` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + + This prevents accidental mutations, and permits the use of non-copyable types + as arguments. + + If you want a local copy, you can simply assign the value to a local + variable. Or, you can get a mutable reference to the value by declaring the + `mut` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + +* If the function raises an exception, it must be explicitly declared with the + `raises` keyword. (A `def` function does not need to declare exceptions.) + +By enforcing these type checks, using the `fn` function helps avoid a variety +of runtime errors. + +## `def` functions + +Compared to an `fn` function, a `def` function has fewer restrictions. +The `def` function works more like a Python +`def` function. For example, this function works the same in Python and Mojo: + +```mojo +def greet(name): + greeting = "Hello, " + name + "!" + return greeting +``` + +In a Mojo `def` function, you have the option to specify the argument type and +the return type. You can also declare variables with `var`, with or without +explicit typing. So you can write a `def` function that looks almost exactly +like the `fn` function shown earlier: + +```mojo +def greet(name: String) -> String: + var greeting = "Hello, " + name + "!" + return greeting +``` + +This way, the compiler ensures that `name` is a string, and the return type is a +string. + +Here's everything to know about `def`: + +* Arguments don't require a declared type. + + Undeclared arguments are actually passed as an + [`object`](/mojo/stdlib/builtin/object/object), which allows the + function to receive any type (Mojo infers the type at runtime). + +* Return types don't need to be declared, and also default to `object`. (If a + `def` function doesn't declare a return type of `None`, it's considered to + return an `object` by default.) + +* Arguments are mutable. Arguments default to using the `read` + [argument convention](/mojo/manual/values/ownership#argument-conventions) + like an `fn` function, with a special addition: if the function mutates the + argument, it makes a mutable copy. + + If an argument is an `object` type, it's received as a reference, following + [object reference + semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics). + + If an argument is any other declared type, it's received as a value. + +### The `object` type + +If you don't declare the type for an argument or return value in a `def`, it +becomes an [`object`](/mojo/stdlib/builtin/object/object), which is unlike +any other type in the standard library. + +The `object` type allows for dynamic typing because it can actually represent +any type in the Mojo standard library, and the actual type is inferred at +runtime. (Actually, there's still more to do before it can represent all Mojo +types.) This is great for compatibility with Python and all of the flexibility +that it provides with dynamic types. However, this lack of type enforcement can +lead to runtime errors when a function receives or returns an unexpected type. + +For compatibility with Python, `object` values are passed using [object +reference +semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics). +As such, the `object` type is not compatible with the [argument +conventions](/mojo/manual/values/ownership#argument-conventions) that +enforce value semantics. So, be careful if using `object` values alongside other +strongly-typed values—their behavior might be inconsistent because `object` is +the only type in the standard library that does not conform to [full value +semantics](/mojo/manual/values/value-semantics#intro-to-value-semantics). + +:::note TODO + +The `object` type is still a work in progress. It doesn't support all of the +possible underlying types, for example. + +::: + +## Function arguments + +As noted in the previous sections, there are a few differences between how `def` +and `fn` functions treat arguments. But most of the time they are the same. + +As noted, there are some differences in *argument conventions*. +Argument conventions are discussed in much more detail in the page on +[Ownership](/mojo/manual/values/ownership#argument-conventions). + +The other difference is that `def` functions don't need to specify an argument's +type. If no type is specified, the argument is passed as an +[`object`](/mojo/stdlib/builtin/object/object). + +The remaining rules for arguments described in this section apply to both `def` +and `fn` functions. + +### Optional arguments + +An optional argument is one that includes a default value, such as the `exp` +argument here: + +```mojo +fn my_pow(base: Int, exp: Int = 2) -> Int: + return base ** exp + +fn use_defaults(): + # Uses the default value for `exp` + var z = my_pow(3) + print(z) +``` + +However, you cannot define a default value for an argument that's declared as +[`mut`](/mojo/manual/values/ownership#mutable-arguments-mut). + +Any optional arguments must appear after any required arguments. [Keyword-only +arguments](#positional-only-and-keyword-only-arguments), discussed later, can +also be either required or optional. + +### Keyword arguments + +You can also use keyword arguments when calling a function. Keyword arguments +are specified using the format +argument_name = argument_value. +You can pass keyword arguments in any order: + +```mojo +fn my_pow(base: Int, exp: Int = 2) -> Int: + return base ** exp + +fn use_keywords(): + # Uses keyword argument names (with order reversed) + var z = my_pow(exp=3, base=2) + print(z) +``` + +### Variadic arguments + +Variadic arguments let a function accept a variable number of arguments. To +define a function that takes a variadic argument, use the variadic argument +syntax *argument_name: + +```mojo +fn sum(*values: Int) -> Int: + var sum: Int = 0 + for value in values: + sum = sum + value + return sum +``` + +The variadic argument `values` here is a placeholder that accepts any number of +passed positional arguments. + +You can define zero or more arguments before the variadic argument. When calling +the function, any remaining positional arguments are assigned to the variadic +argument, so any arguments declared **after** the variadic argument can only be +specified by keyword (see +[Positional-only and keyword-only arguments](#positional-only-and-keyword-only-arguments)). + +Variadic arguments can be divided into two categories: + +* Homogeneous variadic arguments, where all of the passed arguments are the same + type—all `Int`, or all `String`, for example. +* Heterogeneous variadic arguments, which can accept a set of different argument + types. + +The following sections describe how to work with homogeneous and heterogeneous +variadic arguments. + +:::note Variadic parameters + +Mojo [parameters](/mojo/manual/parameters/) are distinct from arguments +(parameters are used for compile-time metaprogramming). Variadic parameters +are supported, but with some limitations—for details see +[variadic parameters](/mojo/manual/parameters/#variadic-parameters). + +::: + +#### Homogeneous variadic arguments + +When defining a homogeneous variadic argument, use *argument_name: argument_type: + +```mojo +def greet(*names: String): + ... +``` + +Inside the function body, the variadic argument is available as an iterable list +for ease of use. Currently there are some differences in handling the list +depending on whether the arguments are register-passable types (such as `Int`) +or memory-only types (such as `String`). TODO: We hope to remove these +differences in the future. + +Register-passable types, such as `Int`, are available as a +[`VariadicList`](/mojo/stdlib/builtin/builtin_list/VariadicList) type. As +shown in the previous example, you can iterate over the values using a `for..in` +loop. + +```mojo +fn sum(*values: Int) -> Int: + var sum: Int = 0 + for value in values: + sum = sum+value + return sum +``` + +Memory-only types, such as `String`, are available as a +[`VariadicListMem`](/mojo/stdlib/builtin/builtin_list/VariadicListMem). +Iterating over this list directly with a `for..in` loop currently produces a +[`Reference`](/mojo/stdlib/memory/reference/Reference) for each value instead +of the value itself. You must add an empty subscript operator `[]` to +dereference the reference and retrieve the value: + +```mojo +def make_worldly(mut *strs: String): + # Requires extra [] to dereference the reference for now. + for i in strs: + i[] += " world" + +``` + +Alternately, subscripting into a `VariadicListMem` returns the argument value, +and doesn't require any dereferencing: + +```mojo +fn make_worldly(mut *strs: String): + # This "just works" as you'd expect! + for i in range(len(strs)): + strs[i] += " world" +``` + +#### Heterogeneous variadic arguments + +Implementing heterogeneous variadic arguments is somewhat more complicated than +homogeneous variadic arguments. Writing generic code to handle multiple argument +types requires [traits](/mojo/manual/traits) and +[parameters](/mojo/manual/parameters/). So the syntax may look a little +unfamiliar if you haven't worked with those features. The signature for a +function with a heterogeneous variadic argument looks like this: + +```mojo +def count_many_things[*ArgTypes: Intable](*args: *ArgTypes): + ... +``` + +The parameter list, `[*ArgTypes: Intable]` specifies that the function takes an +`ArgTypes` parameter, which is a list of types, all of which conform to the +[`Intable`](/mojo/stdlib/builtin/int/Intable) trait. The argument list, +`(*args: *ArgTypes)` has the familiar `*args` for the variadic argument, but +instead of a single type, its type is defined as *list* of types, `*ArgTypes`. + +This means that each argument in `args` has a corresponding type in `ArgTypes`, +so args[n] is of type ArgTypes[n]. + +Inside the function, `args` is available as a +[`VariadicPack`](/mojo/stdlib/builtin/builtin_list/VariadicPack). The easiest +way to work with the arguments is to use the `each()` method to iterate through +the `VariadicPack`: + +```mojo +fn count_many_things[*ArgTypes: Intable](*args: *ArgTypes) -> Int: + var total = 0 + + @parameter + fn add[Type: Intable](value: Type): + total += int(value) + + args.each[add]() + return total + +print(count_many_things(5, 11.7, 12)) +``` + +```output +28 +``` + +In the example above, the `add()` function is called for each argument in turn, +with the appropriate `value` and `Type` values. For instance, `add()` is first +called with `value=5` and `Type=Int`, then with `value=11.7` and `Type=Float64`. + +Also, note that when calling `count_many_things()`, you don't actually pass in +a list of argument types. You only need to pass in the arguments, and Mojo +generates the `ArgTypes` list itself. + +As a small optimization, if your function is likely to be called with a single +argument frequently, you can define your function with a single argument +followed by a variadic argument. This lets the simple case bypass populating and +iterating through the `VariadicPack`. + +For example, given a `print_string()` function that prints a single string, you +could re-implement the variadic `print()` function with code like this: + +```mojo +fn print_string(s: String): + print(s, end="") + +fn print_many[T: Stringable, *Ts: Stringable](first: T, *rest: *Ts): + print_string(str(first)) + + @parameter + fn print_elt[T: Stringable](a: T): + print_string(" ") + print_string(str(a)) + rest.each[print_elt]() +print_many("Bob") +``` + +```output +Bob +``` + +If you call `print_many()` with a single argument, it calls `print_string()` +directly. The `VariadicPack` is empty, so `each()` returns immediately without +calling the `print_elt()` function. + +#### Variadic keyword arguments + +Mojo functions also support variadic keyword arguments (`**kwargs`). Variadic +keyword arguments allow the user to pass an arbitrary number of keyword +arguments. To define a function that takes a variadic keyword argument, use the +variadic keyword argument syntax **kw_argument_name: + +```mojo +fn print_nicely(**kwargs: Int) raises: + for key in kwargs.keys(): + print(key[], "=", kwargs[key[]]) + + # prints: + # `a = 7` + # `y = 8` +print_nicely(a=7, y=8) +``` + +In this example, the argument name `kwargs` is a placeholder that accepts any +number of keyword arguments. Inside the body of the function, you can access +the arguments as a dictionary of keywords and argument values (specifically, +an instance of +[`OwnedKwargsDict`](/mojo/stdlib/collections/dict/OwnedKwargsDict)). + +There are currently a few limitations: + +* Variadic keyword arguments are always implicitly treated as if they + were declared with the `owned` [argument + convention](/mojo/manual/values/ownership#argument-conventions), and + can't be declared otherwise: + + ```mojo + # Not supported yet. + fn read_var_kwargs(read **kwargs: Int): ... + ``` + +* All the variadic keyword arguments must have the same type, and this + determines the type of the argument dictionary. For example, if the argument + is `**kwargs: Float64` then the argument dictionary will be a + `OwnedKwargsDict[Float64]`. + +* The argument type must conform to the + [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + That is, the type must be both [`Movable`](/mojo/stdlib/builtin/value/Movable) + and [`Copyable`](/mojo/stdlib/builtin/value/Copyable). + +* Dictionary unpacking is not supported yet: + + ```mojo + fn takes_dict(d: Dict[String, Int]): + print_nicely(**d) # Not supported yet. + ``` + +* Variadic keyword *parameters* are not supported yet: + + ```mojo + # Not supported yet. + fn var_kwparams[**kwparams: Int](): ... + ``` + +### Positional-only and keyword-only arguments + +When defining a function, you can restrict some arguments so that they can only +be passed as positional arguments, or they can only be passed as keyword +arguments. + +To define positional-only arguments, add a slash character (`/`) to the +argument list. Any arguments before the `/` are positional-only: they can't be +passed as keyword arguments. For example: + +```mojo +fn min(a: Int, b: Int, /) -> Int: + return a if a < b else b +``` + +This `min()` function can be called with `min(1, 2)` but can't be called using +keywords, like `min(a=1, b=2)`. + +There are several reasons you might want to write a function with +positional-only arguments: + +* The argument names aren't meaningful for the the caller. +* You want the freedom to change the argument names later on without breaking + backward compatibility. + +For example, in the `min()` function, the argument names don't add any real +information, and there's no reason to specify arguments by keyword. + +For more information on positional-only arguments, see [PEP 570 – Python +Positional-Only Parameters](https://peps.python.org/pep-0570/). + +Keyword-only arguments are the inverse of positional-only arguments: they can +only be specified by keyword. If a function accepts variadic arguments, any +arguments defined *after* the variadic arguments are treated as keyword-only. +For example: + +```mojo +fn sort(*values: Float64, ascending: Bool = True): ... +``` + +In this example, the user can pass any number of `Float64` values, optionally +followed by the keyword `ascending` argument: + +```mojo +var a = sort(1.1, 6.5, 4.3, ascending=False) +``` + +If the function doesn't accept variadic arguments, you can add a single star +(`*`) to the argument list to separate the keyword-only arguments: + +```mojo +fn kw_only_args(a1: Int, a2: Int, *, double: Bool) -> Int: + var product = a1 * a2 + if double: + return product * 2 + else: + return product +``` + +Keyword-only arguments often have default values, but this is not required. If a +keyword-only argument doesn't have a default value, it is a *required +keyword-only argument*. It must be specified, and it must be specified by +keyword. + +Any required keyword-only arguments must appear in the signature before +any optional keyword-only arguments. That is, arguments appear in the following +sequence a function signature: + +* Required positional arguments. +* Optional positional arguments. +* Variadic arguments. +* Required keyword-only arguments. +* Optional keyword-only arguments. +* Variadic keyword arguments. + +For more information on keyword-only arguments, see [PEP 3102 – Keyword-Only +Arguments](https://peps.python.org/pep-3102/). + +## Overloaded functions + +If a `def` function does not specify argument types, then it can accept any +data type and decide how to handle each type internally. This is nice when you +want expressive APIs that just work by accepting arbitrary inputs, so there's +usually no need to write function overloads for a `def` function. + +On the other hand, all `fn` functions must specify argument types, so if you +want a function to work with different data types, you need to implement +separate versions of the function that each specify different argument types. +This is called "overloading" a function. + +For example, here's an overloaded `add()` function that can accept either +`Int` or `String` types: + +```mojo +fn add(x: Int, y: Int) -> Int: + return x + y + +fn add(x: String, y: String) -> String: + return x + y +``` + +If you pass anything other than `Int` or `String` to the `add()` function, +you'll get a compiler error. That is, unless `Int` or `String` can implicitly +cast the type into their own type. For example, `String` includes an overloaded +version of its constructor (`__init__()`) that accepts a `StringLiteral` value. +Thus, you can also pass a `StringLiteral` to a function that expects a `String`. + +When resolving an overloaded function call, the Mojo compiler tries each +candidate function and uses the one that works (if only one version works), or +it picks the closest match (if it can determine a close match), or it reports +that the call is ambiguous (if it can’t figure out which one to pick). + +If the compiler can't figure out which function to use, you can resolve the +ambiguity by explicitly casting your value to a supported argument type. For +example, in the following code, we want to call the overloaded `foo()` +function, but both implementations accept an argument that supports [implicit +conversion](/mojo/manual/variables#implicit-type-conversion) from +`StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a +compiler error. We can fix it by casting the value to the type we really want: + +```mojo +@value +struct MyString: + fn __init__(out self, string: StringLiteral): + pass + +fn foo(name: String): + print("String") + +fn foo(name: MyString): + print("MyString") + +fn call_foo(): + alias string: StringLiteral = "Hello" + # foo(string) # This call is ambiguous because two `foo` functions match it + foo(MyString(string)) +``` + +When resolving an overloaded function, Mojo does not consider the return type +or other contextual information at the call site—only the argument types affect +which function is selected. + +Overloading also works with combinations of both `fn` and `def` functions. +For example, you could define multiple `fn` function overloads and then one +or more `def` versions that don't specify all argument types, as a fallback. + +:::note + +Although we haven't discussed +[parameters](/mojo/manual/parameters/) yet (they're +different from function arguments, and used for compile-time metaprogramming), +you can also overload functions based on parameter types. + +::: diff --git a/docs/manual/images/owned-pointer-diagram-dark.png b/docs/manual/images/owned-pointer-diagram-dark.png new file mode 100644 index 0000000000..db8049790a Binary files /dev/null and b/docs/manual/images/owned-pointer-diagram-dark.png differ diff --git a/docs/manual/images/owned-pointer-diagram.png b/docs/manual/images/owned-pointer-diagram.png new file mode 100644 index 0000000000..ef82f349bf Binary files /dev/null and b/docs/manual/images/owned-pointer-diagram.png differ diff --git a/docs/manual/index.md b/docs/manual/index.md index ba52bcd6c4..7d152a1b2b 100644 --- a/docs/manual/index.md +++ b/docs/manual/index.md @@ -56,7 +56,8 @@ feedback](https://www.modular.com/community). - **Pointers** - - [Unsafe pointers](/mojo/manual/pointers) + - [Intro to pointers](/mojo/manual/pointers/) + - [Unsafe pointers](/mojo/manual/pointers/unsafe-pointers) - **Python** diff --git a/docs/manual/lifecycle/death.ipynb b/docs/manual/lifecycle/death.ipynb deleted file mode 100644 index 9329b7aebb..0000000000 --- a/docs/manual/lifecycle/death.ipynb +++ /dev/null @@ -1,548 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Death of a value\n", - "sidebar_position: 3\n", - "description: An explanation of when and how Mojo destroys values.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As soon as a value/object is no longer used, Mojo destroys it. Mojo does _not_\n", - "wait until the end of a code block—or even until the end of an expression—to\n", - "destroy an unused value. It destroys values using an “as soon as possible”\n", - "(ASAP) destruction policy that runs after every sub-expression. Even within an\n", - "expression like `a+b+c+d`, Mojo destroys the intermediate values as soon as\n", - "they're no longer needed.\n", - "\n", - "Mojo uses static compiler analysis to find the point where a value is last used.\n", - "Then, Mojo immediately ends the value's lifetime and calls the `__del__()`\n", - "destructor to perform any necessary cleanup for the type. \n", - "\n", - "For example, notice when the `__del__()` destructor is called for each instance\n", - "of `MyPet`:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loki\n", - "Destruct Loki\n", - "Destruct Charlie\n", - "Sylvie\n", - "Destruct Sylvie\n" - ] - } - ], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __del__(owned self):\n", - " print(\"Destruct\", self.name)\n", - "\n", - "fn pets():\n", - " var a = MyPet(\"Loki\", 4)\n", - " var b = MyPet(\"Sylvie\", 2)\n", - " print(a.name)\n", - " # a.__del__() runs here for \"Loki\"\n", - "\n", - " a = MyPet(\"Charlie\", 8)\n", - " # a.__del__() runs immediately because \"Charlie\" is never used\n", - "\n", - " print(b.name)\n", - " # b.__del__() runs here\n", - "\n", - "pets()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that each initialization of a value is matched with a call to the\n", - "destructor, and `a` is actually destroyed multiple times—once for each time it receives\n", - "a new value.\n", - "\n", - "Also notice that this `__del__()` implementation doesn't actually do\n", - "anything. Most structs don't require a custom destructor, and Mojo automatically\n", - "adds a no-op destructor if you don't define one.\n", - "\n", - "### Default destruction behavior\n", - "\n", - "You may be wondering how Mojo can destroy a type without a custom destructor, or\n", - "why a no-op destructor is useful. If a type is simply a collection of fields,\n", - "like the `MyPet` example, Mojo only needs to destroy the fields: `MyPet` doesn't\n", - "dynamically allocate memory or use any long-lived resources (like file handles).\n", - "There's no special action to take when a `MyPet` value is destroyed.\n", - "\n", - "Looking at the individual fields, `MyPet` includes an `Int` and a `String`. The\n", - "`Int` is what Mojo calls a _trivial type_. It's a statically-sized bundle of \n", - "bits. Mojo knows exactly how big it is, so those bits can be reused to store\n", - "something else.\n", - "\n", - "The `String` value is a little more complicated. Mojo strings are mutable. The\n", - "`String` object has an internal buffer—a\n", - "[`List`](/mojo/stdlib/collections/list/List) field,\n", - "which holds the characters that make up the string. A `List` stores\n", - "its contents in dynamically allocated memory on the heap, so the string can\n", - "grow or shrink. The string itself doesn't have any special destructor logic,\n", - "but when Mojo destroys a string, it calls the destructor for the\n", - "`List` field, which de-allocates the memory.\n", - "\n", - "Since `String` and `Int` don't require any custom destructor logic, they both\n", - "have no-op destructors: literally, `__del__()` methods that don't do anything.\n", - "This may seem pointless, but it means that Mojo can call the destructor on any\n", - "value when its lifetime ends. This makes it easier to write generic containers\n", - "and algorithms.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Benefits of ASAP destruction\n", - "\n", - "Similar to other languages, Mojo follows the principle that objects/values\n", - "acquire resources in a constructor (`__init__()`) and release resources in a\n", - "destructor (`__del__()`). However, Mojo's ASAP destruction has some advantages\n", - "over scope-based destruction (such as the C++ [RAII\n", - "pattern](https://en.cppreference.com/w/cpp/language/raii), which waits until\n", - "the end of the code scope to destroy values):\n", - "\n", - "- Destroying values immediately at last-use composes nicely with the \"move\"\n", - " optimization, which transforms a \"copy+del\" pair into a \"move\" operation.\n", - "\n", - "- Destroying values at end-of-scope in C++ is problematic for some common\n", - " patterns like tail recursion, because the destructor call happens after the\n", - " tail call. This can be a significant performance and memory problem for\n", - " certain functional programming patterns, which is not a problem in Mojo,\n", - " because the destructor call always happens before the tail call.\n", - "\n", - "Additionally, Mojo's ASAP destruction works great within Python-style `def`\n", - "functions. That's because Python doesn’t really provide scopes beyond a\n", - "function scope, so the Python garbage collector cleans up resources more often\n", - "than a scope-based destruction policy would. However, Mojo does not use a\n", - "garbage collector, so the ASAP destruction policy provides destruction\n", - "guarantees that are even more fine-grained than in Python.\n", - "\n", - "The Mojo destruction policy is more similar to how Rust and Swift work, because\n", - "they both have strong value ownership tracking and provide memory safety. One\n", - "difference is that Rust and Swift require the use of a [dynamic \"drop\n", - "flag\"](https://doc.rust-lang.org/nomicon/drop-flags.html)—they maintain hidden\n", - "shadow variables to keep track of the state of your values to provide safety.\n", - "These are often optimized away, but the Mojo approach eliminates this overhead\n", - "entirely, making the generated code faster and avoiding ambiguity." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Destructor\n", - "\n", - "Mojo calls a value's destructor (`__del__()` method) when the value's lifetime\n", - "ends (typically the point at which the value is last used). As we mentioned\n", - "earlier, Mojo provides a default, no-op destructor for all types, so in most\n", - "cases you don't need to define the `__del__()` method.\n", - "\n", - "You should define the `__del__()` method to perform any kind of cleanup the\n", - "type requires. Usually, that includes freeing memory for any fields where you\n", - "dynamically allocated memory (for example, via `UnsafePointer`) and\n", - "closing any long-lived resources such as file handles.\n", - "\n", - "However, any struct that is just a simple collection of other types does not\n", - "need to implement the destructor.\n", - "\n", - "For example, consider this simple struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There's no need to define the `__del__()` destructor for this, because it's a\n", - "simple collection of other types (`String` and `Int`), and it doesn't \n", - "dynamically allocate memory. \n", - "\n", - "Whereas, the following struct must define the `__del__()` method to free the\n", - "memory allocated by its\n", - "[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer):" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.data = UnsafePointer[Int].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that a pointer doesn't _own_ any values in the memory it points to, so\n", - "when a pointer is destroyed, Mojo doesn't call the destructors on those values.\n", - "\n", - "So in the `HeapArray` example above, calling `free()` on the pointer releases\n", - "the memory, but doesn't call the destructors on the stored values. To invoke\n", - "the destructors, use the `destroy_pointee()` method provided by the \n", - "`UnsafePointer` type.\n", - "\n", - ":::note\n", - "\n", - "You can't just call the destructor explicitly. Because `__del__()`\n", - "takes `self` as an `owned` value, and owned arguments are copied by default,\n", - "`foo.__del__()` actually creates and destroys a _copy_ of `foo`. When Mojo\n", - "destroys a value, however, it passes in the original value as `self`, not a\n", - "copy.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "It's important to notice that the `__del__()` method is an \"extra\" cleanup\n", - "event, and your implementation does not override any default destruction\n", - "behaviors. For example, Mojo still destroys all the fields in `MyPet` even\n", - "if you implement `__del__()` to do nothing:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age\n", - "\n", - " fn __del__(owned self):\n", - " # Mojo destroys all the fields when they're last used\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, the `self` value inside the `__del__()` destructor is still whole (so\n", - "all fields are still usable) until the destructor returns, as we'll discuss\n", - "more in the following section." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Field lifetimes\n", - "\n", - "In addition to tracking the lifetime of all objects in a program, Mojo also\n", - "tracks each field of a structure independently. That is, Mojo keeps track of\n", - "whether a \"whole object\" is fully or partially initialized/destroyed, and it\n", - "destroys each field independently with its ASAP destruction policy.\n", - "\n", - "For example, consider this code that changes the value of a field:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - "fn use_two_strings():\n", - " var pet = MyPet(\"Po\", 8)\n", - " print(pet.name)\n", - " # pet.name.__del__() runs here, because this instance is\n", - " # no longer used; it's replaced below\n", - "\n", - " pet.name = String(\"Lola\") # Overwrite pet.name\n", - " print(pet.name)\n", - " # pet.__del__() runs here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `pet.name` field is destroyed after the first `print()`, because Mojo knows\n", - "that it will be overwritten below. You can also see this behavior when using the\n", - "transfer sigil:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "fn consume(owned arg: String):\n", - " pass\n", - "\n", - "fn use(arg: MyPet):\n", - " print(arg.name)\n", - "\n", - "fn consume_and_use():\n", - " var pet = MyPet(\"Selma\", 5)\n", - " consume(pet.name^)\n", - " # pet.name.__moveinit__() runs here, which destroys pet.name\n", - " # Now pet is only partially initialized\n", - "\n", - " # use(pet) # This fails because pet.name is uninitialized\n", - "\n", - " pet.name = String(\"Jasper\") # All together now\n", - " use(pet) # This is ok\n", - " # pet.__del__() runs here (and only if the object is whole)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the code transfers ownership of the `name` field to `consume()`.\n", - "For a period of time after that, the `name` field is uninitialized.\n", - "Then `name` is reinitialized before it is passed to the `use()` function. If you\n", - "try calling `use()` before `name` is re-initialized, Mojo rejects the code\n", - "with an uninitialized field error.\n", - "\n", - "Also, if you don't re-initialize the name by the end of the `pet` lifetime, the\n", - "compiler complains because it's unable to destroy a partially initialized\n", - "object.\n", - "\n", - "Mojo's policy here is powerful and intentionally straight-forward: fields can\n", - "be temporarily transferred, but the \"whole object\" must be constructed with the\n", - "aggregate type’s initializer and destroyed with the aggregate destructor. This\n", - "means it's impossible to create an object by initializing only its fields, and\n", - "it's likewise impossible to destroy an object by destroying only its fields." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Field lifetimes during destruct and move\n", - "\n", - "The consuming-move constructor and destructor face an interesting situation\n", - "with field lifetimes, because, unlike other lifecycle methods, they both take\n", - "an instance of their own type as an `owned` argument, which is about to be\n", - "destroyed. You don't really need to worry about this detail when implementing\n", - "these methods, but it might help you better understand field lifetimes.\n", - "\n", - "Just to recap, the move constructor and destructor method signatures\n", - "look like this:\n", - "\n", - "```mojo\n", - "struct TwoStrings:\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " # Initializes a new `self` by consuming the contents of `existing`\n", - " fn __del__(owned self):\n", - " # Destroys all resources in `self`\n", - "```\n", - "\n", - ":::note\n", - "\n", - "There are two kinds of \"self\" here: capitalized `Self` is an alias\n", - "for the current type name (used as a type specifier for the `existing`\n", - "argument), whereas lowercase `self` is the argument name for the\n", - "implicitly-passed reference to the current instance (also called \"this\" in\n", - "other languages, and also implicitly a `Self` type).\n", - "\n", - ":::\n", - "\n", - "Both of these methods face an interesting but obscure problem: they both must\n", - "dismantle the `existing`/`self` value that's `owned`. That is, `__moveinit__()`\n", - "implicitly destroys sub-elements of `existing` in order to transfer ownership\n", - "to a new instance (read more about the [move\n", - "constructor](/mojo/manual/lifecycle/life#move-constructor)),\n", - "while `__del__()` implements the deletion logic for its `self`. As such, they\n", - "both need to own and transform elements of the `owned` value, and they\n", - "definitely don’t want the original `owned` value's destructor to also run—that\n", - "could result in a double-free error, and in the case of the `__del__()` method,\n", - "it would become an infinite loop.\n", - "\n", - "To solve this problem, Mojo handles these two methods specially by assuming\n", - "that their whole values are destroyed upon reaching any return from the method.\n", - "This means that the whole object may be used as usual, up until the field\n", - "values are transferred or the method returns.\n", - "\n", - "For example, the following code works as you would expect (within the\n", - "destructor, we can still pass ownership of a field value to another function,\n", - "and there's no infinite loop to destroy `self`):" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "fn consume(owned str: String):\n", - " print('Consumed', str)\n", - "\n", - "struct TwoStrings:\n", - " var str1: String\n", - " var str2: String\n", - "\n", - " fn __init__(out self, one: String):\n", - " self.str1 = one\n", - " self.str2 = String(\"bar\")\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.str1 = existing.str1\n", - " self.str2 = existing.str2\n", - "\n", - " fn __del__(owned self):\n", - " self.dump() # Self is still whole here\n", - " # Mojo calls self.str2.__del__() since str2 isn't used anymore\n", - "\n", - " consume(self.str1^)\n", - " # self.str1 has been transferred so it is also destroyed now;\n", - " # `self.__del__()` is not called (avoiding an infinite loop).\n", - "\n", - " fn dump(inout self):\n", - " print('str1:', self.str1)\n", - " print('str2:', self.str2)\n", - "\n", - "fn use_two_strings():\n", - " var two_strings = TwoStrings(\"foo\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explicit lifetimes\n", - "\n", - "So far, we've described how Mojo destroys a value at the point it's last used,\n", - "and this works great in almost all situations. However, there are very rare\n", - "situations in which Mojo simply cannot predict this correctly and will destroy\n", - "a value that is still referenced through some other means.\n", - "\n", - "For instance, perhaps you're building a type with a field that carries a pointer\n", - "to another field. The Mojo compiler won't be able to reason about the pointer,\n", - "so it might destroy a field (`obj1`) when that field is technically no longer\n", - "used, even though another field (`obj2`) still holds a pointer to part of it.\n", - "So, you might need to keep `obj1` alive until you can execute some special\n", - "logic in the destructor or move initializer.\n", - "\n", - "You can force Mojo to keep a value alive up to a certain point by assigning the\n", - "value to the `_` discard pattern at the point where it's okay to destroy it.\n", - "For example:\n", - "\n", - "```mojo\n", - "fn __del__(owned self):\n", - " self.dump() # Self is still whole here\n", - "\n", - " consume(self.obj2^)\n", - " _ = self.obj1\n", - " # Mojo keeps `obj1` alive until here, after its \"last use\"\n", - "```\n", - "\n", - "In this case, if `consume()` refers to some value in `obj1` somehow, this\n", - "ensures that Mojo does not destroy `obj1` until after the call to `consume()`,\n", - "because assignment to the discard variable `_` is actually the last use.\n", - "\n", - "For other situations, you can also scope the lifetime of a value using the\n", - "Python-style [`with`\n", - "statement](https://docs.python.org/3/reference/compound_stmts.html#the-with-statement).\n", - "That is, for any value defined at the entrance to a `with` statement, Mojo will\n", - "keep that value alive until the end of the `with` statement. For example:\n", - "\n", - "```mojo\n", - "with open(\"my_file.txt\", \"r\") as file:\n", - " print(file.read())\n", - "\n", - " # Other stuff happens here (whether using `file` or not)...\n", - " foo()\n", - " # `file` is alive up to the end of the `with` statement.\n", - "\n", - "# `file` is destroyed when the statement ends.\n", - "bar()\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx new file mode 100644 index 0000000000..2f7ee808f7 --- /dev/null +++ b/docs/manual/lifecycle/death.mdx @@ -0,0 +1,411 @@ +--- +title: Death of a value +sidebar_position: 3 +description: An explanation of when and how Mojo destroys values. +--- + +As soon as a value/object is no longer used, Mojo destroys it. Mojo does *not* +wait until the end of a code block—or even until the end of an expression—to +destroy an unused value. It destroys values using an “as soon as possible” +(ASAP) destruction policy that runs after every sub-expression. Even within an +expression like `a+b+c+d`, Mojo destroys the intermediate values as soon as +they're no longer needed. + +Mojo uses static compiler analysis to find the point where a value is last used. +Then, Mojo immediately ends the value's lifetime and calls the `__del__()` +destructor to perform any necessary cleanup for the type. + +For example, notice when the `__del__()` destructor is called for each instance +of `MyPet`: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + + fn __del__(owned self): + print("Destruct", self.name) + +fn pets(): + var a = MyPet("Loki", 4) + var b = MyPet("Sylvie", 2) + print(a.name) + # a.__del__() runs here for "Loki" + + a = MyPet("Charlie", 8) + # a.__del__() runs immediately because "Charlie" is never used + + print(b.name) + # b.__del__() runs here + +pets() +``` + +```output +Loki +Destruct Loki +Destruct Charlie +Sylvie +Destruct Sylvie +``` + +Notice that each initialization of a value is matched with a call to the +destructor, and `a` is actually destroyed multiple times—once for each time it receives +a new value. + +Also notice that this `__del__()` implementation doesn't actually do +anything. Most structs don't require a custom destructor, and Mojo automatically +adds a no-op destructor if you don't define one. + +### Default destruction behavior + +You may be wondering how Mojo can destroy a type without a custom destructor, or +why a no-op destructor is useful. If a type is simply a collection of fields, +like the `MyPet` example, Mojo only needs to destroy the fields: `MyPet` doesn't +dynamically allocate memory or use any long-lived resources (like file handles). +There's no special action to take when a `MyPet` value is destroyed. + +Looking at the individual fields, `MyPet` includes an `Int` and a `String`. The +`Int` is what Mojo calls a *trivial type*. It's a statically-sized bundle of +bits. Mojo knows exactly how big it is, so those bits can be reused to store +something else. + +The `String` value is a little more complicated. Mojo strings are mutable. The +`String` object has an internal buffer—a +[`List`](/mojo/stdlib/collections/list/List) field, +which holds the characters that make up the string. A `List` stores +its contents in dynamically allocated memory on the heap, so the string can +grow or shrink. The string itself doesn't have any special destructor logic, +but when Mojo destroys a string, it calls the destructor for the +`List` field, which de-allocates the memory. + +Since `String` and `Int` don't require any custom destructor logic, they both +have no-op destructors: literally, `__del__()` methods that don't do anything. +This may seem pointless, but it means that Mojo can call the destructor on any +value when its lifetime ends. This makes it easier to write generic containers +and algorithms. + +### Benefits of ASAP destruction + +Similar to other languages, Mojo follows the principle that objects/values +acquire resources in a constructor (`__init__()`) and release resources in a +destructor (`__del__()`). However, Mojo's ASAP destruction has some advantages +over scope-based destruction (such as the C++ [RAII +pattern](https://en.cppreference.com/w/cpp/language/raii), which waits until +the end of the code scope to destroy values): + +* Destroying values immediately at last-use composes nicely with the "move" + optimization, which transforms a "copy+del" pair into a "move" operation. + +* Destroying values at end-of-scope in C++ is problematic for some common + patterns like tail recursion, because the destructor call happens after the + tail call. This can be a significant performance and memory problem for + certain functional programming patterns, which is not a problem in Mojo, + because the destructor call always happens before the tail call. + +Additionally, Mojo's ASAP destruction works great within Python-style `def` +functions. That's because Python doesn’t really provide scopes beyond a +function scope, so the Python garbage collector cleans up resources more often +than a scope-based destruction policy would. However, Mojo does not use a +garbage collector, so the ASAP destruction policy provides destruction +guarantees that are even more fine-grained than in Python. + +The Mojo destruction policy is more similar to how Rust and Swift work, because +they both have strong value ownership tracking and provide memory safety. One +difference is that Rust and Swift require the use of a [dynamic "drop +flag"](https://doc.rust-lang.org/nomicon/drop-flags.html)—they maintain hidden +shadow variables to keep track of the state of your values to provide safety. +These are often optimized away, but the Mojo approach eliminates this overhead +entirely, making the generated code faster and avoiding ambiguity. + +## Destructor + +Mojo calls a value's destructor (`__del__()` method) when the value's lifetime +ends (typically the point at which the value is last used). As we mentioned +earlier, Mojo provides a default, no-op destructor for all types, so in most +cases you don't need to define the `__del__()` method. + +You should define the `__del__()` method to perform any kind of cleanup the +type requires. Usually, that includes freeing memory for any fields where you +dynamically allocated memory (for example, via `UnsafePointer`) and +closing any long-lived resources such as file handles. + +However, any struct that is just a simple collection of other types does not +need to implement the destructor. + +For example, consider this simple struct: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age +``` + +There's no need to define the `__del__()` destructor for this, because it's a +simple collection of other types (`String` and `Int`), and it doesn't +dynamically allocate memory. + +Whereas, the following struct must define the `__del__()` method to free the +memory allocated by its +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer): + +```mojo +from memory import UnsafePointer + +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.data = UnsafePointer[Int].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() +``` + +Note that a pointer doesn't *own* any values in the memory it points to, so +when a pointer is destroyed, Mojo doesn't call the destructors on those values. + +So in the `HeapArray` example above, calling `free()` on the pointer releases +the memory, but doesn't call the destructors on the stored values. To invoke +the destructors, use the `destroy_pointee()` method provided by the +`UnsafePointer` type. + +:::note + +You can't just call the destructor explicitly. Because `__del__()` +takes `self` as an `owned` value, and owned arguments are copied by default, +`foo.__del__()` actually creates and destroys a *copy* of `foo`. When Mojo +destroys a value, however, it passes in the original value as `self`, not a +copy. + +::: + +It's important to notice that the `__del__()` method is an "extra" cleanup +event, and your implementation does not override any default destruction +behaviors. For example, Mojo still destroys all the fields in `MyPet` even +if you implement `__del__()` to do nothing: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age + + fn __del__(owned self): + # Mojo destroys all the fields when they're last used + pass +``` + +However, the `self` value inside the `__del__()` destructor is still whole (so +all fields are still usable) until the destructor returns, as we'll discuss +more in the following section. + +## Field lifetimes + +In addition to tracking the lifetime of all objects in a program, Mojo also +tracks each field of a structure independently. That is, Mojo keeps track of +whether a "whole object" is fully or partially initialized/destroyed, and it +destroys each field independently with its ASAP destruction policy. + +For example, consider this code that changes the value of a field: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + +fn use_two_strings(): + var pet = MyPet("Po", 8) + print(pet.name) + # pet.name.__del__() runs here, because this instance is + # no longer used; it's replaced below + + pet.name = String("Lola") # Overwrite pet.name + print(pet.name) + # pet.__del__() runs here +``` + +The `pet.name` field is destroyed after the first `print()`, because Mojo knows +that it will be overwritten below. You can also see this behavior when using the +transfer sigil: + +```mojo +fn consume(owned arg: String): + pass + +fn use(arg: MyPet): + print(arg.name) + +fn consume_and_use(): + var pet = MyPet("Selma", 5) + consume(pet.name^) + # pet.name.__moveinit__() runs here, which destroys pet.name + # Now pet is only partially initialized + + # use(pet) # This fails because pet.name is uninitialized + + pet.name = String("Jasper") # All together now + use(pet) # This is ok + # pet.__del__() runs here (and only if the object is whole) +``` + +Notice that the code transfers ownership of the `name` field to `consume()`. +For a period of time after that, the `name` field is uninitialized. +Then `name` is reinitialized before it is passed to the `use()` function. If you +try calling `use()` before `name` is re-initialized, Mojo rejects the code +with an uninitialized field error. + +Also, if you don't re-initialize the name by the end of the `pet` lifetime, the +compiler complains because it's unable to destroy a partially initialized +object. + +Mojo's policy here is powerful and intentionally straight-forward: fields can +be temporarily transferred, but the "whole object" must be constructed with the +aggregate type’s initializer and destroyed with the aggregate destructor. This +means it's impossible to create an object by initializing only its fields, and +it's likewise impossible to destroy an object by destroying only its fields. + +### Field lifetimes during destruct and move + +The consuming-move constructor and destructor face an interesting situation +with field lifetimes, because, unlike other lifecycle methods, they both take +an instance of their own type as an `owned` argument, which is about to be +destroyed. You don't really need to worry about this detail when implementing +these methods, but it might help you better understand field lifetimes. + +Just to recap, the move constructor and destructor method signatures +look like this: + +```mojo +struct TwoStrings: + fn __moveinit__(out self, owned existing: Self): + # Initializes a new `self` by consuming the contents of `existing` + fn __del__(owned self): + # Destroys all resources in `self` +``` + +:::note + +There are two kinds of "self" here: capitalized `Self` is an alias +for the current type name (used as a type specifier for the `existing` +argument), whereas lowercase `self` is the argument name for the +implicitly-passed reference to the current instance (also called "this" in +other languages, and also implicitly a `Self` type). + +::: + +Both of these methods face an interesting but obscure problem: they both must +dismantle the `existing`/`self` value that's `owned`. That is, `__moveinit__()` +implicitly destroys sub-elements of `existing` in order to transfer ownership +to a new instance (read more about the [move +constructor](/mojo/manual/lifecycle/life#move-constructor)), +while `__del__()` implements the deletion logic for its `self`. As such, they +both need to own and transform elements of the `owned` value, and they +definitely don’t want the original `owned` value's destructor to also run—that +could result in a double-free error, and in the case of the `__del__()` method, +it would become an infinite loop. + +To solve this problem, Mojo handles these two methods specially by assuming +that their whole values are destroyed upon reaching any return from the method. +This means that the whole object may be used as usual, up until the field +values are transferred or the method returns. + +For example, the following code works as you would expect (within the +destructor, we can still pass ownership of a field value to another function, +and there's no infinite loop to destroy `self`): + +```mojo +fn consume(owned str: String): + print('Consumed', str) + +struct TwoStrings: + var str1: String + var str2: String + + fn __init__(out self, one: String): + self.str1 = one + self.str2 = String("bar") + + fn __moveinit__(out self, owned existing: Self): + self.str1 = existing.str1 + self.str2 = existing.str2 + + fn __del__(owned self): + self.dump() # Self is still whole here + # Mojo calls self.str2.__del__() since str2 isn't used anymore + + consume(self.str1^) + # self.str1 has been transferred so it is also destroyed now; + # `self.__del__()` is not called (avoiding an infinite loop). + + fn dump(mut self): + print('str1:', self.str1) + print('str2:', self.str2) + +fn use_two_strings(): + var two_strings = TwoStrings("foo") +``` + +## Explicit lifetimes + +So far, we've described how Mojo destroys a value at the point it's last used, +and this works great in almost all situations. However, there are very rare +situations in which Mojo simply cannot predict this correctly and will destroy +a value that is still referenced through some other means. + +For instance, perhaps you're building a type with a field that carries a pointer +to another field. The Mojo compiler won't be able to reason about the pointer, +so it might destroy a field (`obj1`) when that field is technically no longer +used, even though another field (`obj2`) still holds a pointer to part of it. +So, you might need to keep `obj1` alive until you can execute some special +logic in the destructor or move initializer. + +You can force Mojo to keep a value alive up to a certain point by assigning the +value to the `_` discard pattern at the point where it's okay to destroy it. +For example: + +```mojo +fn __del__(owned self): + self.dump() # Self is still whole here + + consume(self.obj2^) + _ = self.obj1 + # Mojo keeps `obj1` alive until here, after its "last use" +``` + +In this case, if `consume()` refers to some value in `obj1` somehow, this +ensures that Mojo does not destroy `obj1` until after the call to `consume()`, +because assignment to the discard variable `_` is actually the last use. + +For other situations, you can also scope the lifetime of a value using the +Python-style [`with` +statement](https://docs.python.org/3/reference/compound_stmts.html#the-with-statement). +That is, for any value defined at the entrance to a `with` statement, Mojo will +keep that value alive until the end of the `with` statement. For example: + +```mojo +with open("my_file.txt", "r") as file: + print(file.read()) + + # Other stuff happens here (whether using `file` or not)... + foo() + # `file` is alive up to the end of the `with` statement. + +# `file` is destroyed when the statement ends. +bar() +``` diff --git a/docs/manual/lifecycle/index.ipynb b/docs/manual/lifecycle/index.ipynb deleted file mode 100644 index f4e3118941..0000000000 --- a/docs/manual/lifecycle/index.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Intro to value lifecycle\n", - "sidebar_position: 1\n", - "description: An introduction to the value lifecycle.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So far, we've explained how Mojo allows you to build high-performance code that\n", - "is memory safe _without_ manually managing memory, using Mojo's [ownership\n", - "model](/mojo/manual/values/ownership). However, Mojo is designed for\n", - "[systems programming](https://en.wikipedia.org/wiki/Systems_programming), which\n", - "often requires manual memory management for custom data types. So, Mojo lets\n", - "you do that as you see fit. To be clear, Mojo has no reference counter and no\n", - "garbage collector.\n", - "\n", - "Mojo also has no built-in data types with special privileges. All data types\n", - "in the standard library (such as [`Bool`](/mojo/stdlib/builtin/bool/Bool),\n", - "[`Int`](/mojo/stdlib/builtin/int/Int), and\n", - "[`String`](/mojo/stdlib/collections/string/String)) are implemented as\n", - "[structs](/mojo/manual/structs). You can actually write your own\n", - "replacements for these types by using low-level primitives provided by\n", - "[MLIR dialects](/mojo/notebooks/BoolMLIR).\n", - "\n", - "What's great about the Mojo language is that it provides you these low-level\n", - "tools for systems programming, but within a framework that helps you build\n", - "things that are safe and easy to use from higher-level programs. That is, you\n", - "can get under the hood and write all the \"unsafe\" code you want, but as long as\n", - "you do so in accordance with Mojo's [value\n", - "semantics](/mojo/manual/values/value-semantics), the programmer instantiating\n", - "your type/object doesn't need to think about memory management at all, and the\n", - "behavior will be safe and predictable, thanks to [value\n", - "ownership](/mojo/manual/values/ownership).\n", - "\n", - "In summary, it's the responsibility of the type author to manage the memory and\n", - "resources for each value type, by implementing specific lifecycle methods, such\n", - "as the constructor, copy constructor, move constructor, and destructor, as\n", - "necessary. Mojo doesn't create any constructors by default, although it does\n", - "add a trivial, no-op destructor for types that don't define their own.\n", - "\n", - "In the following pages, we'll explain exactly how to define these lifecycle\n", - "methods in accordance with value semantics so your types play nicely with value\n", - "ownership." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lifecycles and lifetimes\n", - "\n", - "First, let's clarify some terminology:\n", - "\n", - "- The \"lifecycle\" of a value is defined by various [dunder\n", - "methods](/mojo/manual/structs#special-methods) in a struct.\n", - "Each lifecycle event is handled by a different method,\n", - "such as the constructor (`__init__()`), the destructor (`__del__()`), the copy\n", - "constructor (`__copyinit__()`), and the move constructor (`__moveinit__()`).\n", - "All values that are declared with the same type have the same lifecycle.\n", - "\n", - "- The \"lifetime\" of a variable is defined by the span of time during \n", - "program execution in which the variable is considered valid. The life of a \n", - "variable begins when its value is initialized (via `__init__()`, \n", - "`__copyinit__()` or `__moveinit__()`) and ends when the value is destroyed \n", - "(`__del__()`), or consumed in some other way (for example, as part of a \n", - "`__moveinit__()` call). \n", - "\n", - "No two values have the exact same lifetime, because every value is created and \n", - "destroyed at a different point in time (even if the difference is imperceptible).\n", - "\n", - ":::note Origin type\n", - "\n", - "The concept of lifetimes is related to the `origin` type, a Mojo primitive\n", - "used to track ownership. For most Mojo programming, you won't need to work with\n", - "`origin` values directly. For information, see [Lifetimes, origins and\n", - "references](/mojo/manual/values/lifetimes).\n", - "\n", - ":::\n", - "\n", - "The life of a value in Mojo begins when a variable is initialized and continues\n", - "up until the value is last used, at which point Mojo destroys it. Mojo destroys\n", - "every value/object as soon as it's no longer used, using an “as soon as\n", - "possible” (ASAP) destruction policy that runs after every sub-expression. The \n", - "Mojo compiler takes care of releasing resources after last use when needed.\n", - "\n", - "As you might imagine, keeping track of a value's life can be difficult if a\n", - "value is shared across functions many times during the life of a program.\n", - "However, Mojo makes this predictable partly through its [value\n", - "semantics](/mojo/manual/values/value-semantics) and [value\n", - "ownership](/mojo/manual/values/ownership) (both prerequisite readings for\n", - "the following sections). The final piece of the puzzle for lifetime management\n", - "is the value lifecycle: every value (defined in a struct) needs to implement\n", - "key lifecycle methods that define how a value is created and destroyed." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/index.mdx b/docs/manual/lifecycle/index.mdx new file mode 100644 index 0000000000..466d792b18 --- /dev/null +++ b/docs/manual/lifecycle/index.mdx @@ -0,0 +1,86 @@ +--- +title: Intro to value lifecycle +sidebar_position: 1 +description: An introduction to the value lifecycle. +--- + +So far, we've explained how Mojo allows you to build high-performance code that +is memory safe *without* manually managing memory, using Mojo's [ownership +model](/mojo/manual/values/ownership). However, Mojo is designed for +[systems programming](https://en.wikipedia.org/wiki/Systems_programming), which +often requires manual memory management for custom data types. So, Mojo lets +you do that as you see fit. To be clear, Mojo has no reference counter and no +garbage collector. + +Mojo also has no built-in data types with special privileges. All data types +in the standard library (such as [`Bool`](/mojo/stdlib/builtin/bool/Bool), +[`Int`](/mojo/stdlib/builtin/int/Int), and +[`String`](/mojo/stdlib/collections/string/String)) are implemented as +[structs](/mojo/manual/structs). You can actually write your own +replacements for these types by using low-level primitives provided by +[MLIR dialects](/mojo/notebooks/BoolMLIR). + +What's great about the Mojo language is that it provides you these low-level +tools for systems programming, but within a framework that helps you build +things that are safe and easy to use from higher-level programs. That is, you +can get under the hood and write all the "unsafe" code you want, but as long as +you do so in accordance with Mojo's [value +semantics](/mojo/manual/values/value-semantics), the programmer instantiating +your type/object doesn't need to think about memory management at all, and the +behavior will be safe and predictable, thanks to [value +ownership](/mojo/manual/values/ownership). + +In summary, it's the responsibility of the type author to manage the memory and +resources for each value type, by implementing specific lifecycle methods, such +as the constructor, copy constructor, move constructor, and destructor, as +necessary. Mojo doesn't create any constructors by default, although it does +add a trivial, no-op destructor for types that don't define their own. + +In the following pages, we'll explain exactly how to define these lifecycle +methods in accordance with value semantics so your types play nicely with value +ownership. + +## Lifecycles and lifetimes + +First, let's clarify some terminology: + +* The "lifecycle" of a value is defined by various [dunder + methods](/mojo/manual/structs#special-methods) in a struct. + Each lifecycle event is handled by a different method, + such as the constructor (`__init__()`), the destructor (`__del__()`), the copy + constructor (`__copyinit__()`), and the move constructor (`__moveinit__()`). + All values that are declared with the same type have the same lifecycle. + +* The "lifetime" of a variable is defined by the span of time during + program execution in which the variable is considered valid. The life of a + variable begins when its value is initialized (via `__init__()`, + `__copyinit__()` or `__moveinit__()`) and ends when the value is destroyed + (`__del__()`), or consumed in some other way (for example, as part of a + `__moveinit__()` call). + +No two values have the exact same lifetime, because every value is created and +destroyed at a different point in time (even if the difference is imperceptible). + +:::note Origin type + +The concept of lifetimes is related to the `origin` type, a Mojo primitive +used to track ownership. For most Mojo programming, you won't need to work with +`origin` values directly. For information, see [Lifetimes, origins and +references](/mojo/manual/values/lifetimes). + +::: + +The life of a value in Mojo begins when a variable is initialized and continues +up until the value is last used, at which point Mojo destroys it. Mojo destroys +every value/object as soon as it's no longer used, using an “as soon as +possible” (ASAP) destruction policy that runs after every sub-expression. The +Mojo compiler takes care of releasing resources after last use when needed. + +As you might imagine, keeping track of a value's life can be difficult if a +value is shared across functions many times during the life of a program. +However, Mojo makes this predictable partly through its [value +semantics](/mojo/manual/values/value-semantics) and [value +ownership](/mojo/manual/values/ownership) (both prerequisite readings for +the following sections). The final piece of the puzzle for lifetime management +is the value lifecycle: every value (defined in a struct) needs to implement +key lifecycle methods that define how a value is created and destroyed. diff --git a/docs/manual/lifecycle/life.ipynb b/docs/manual/lifecycle/life.ipynb deleted file mode 100644 index 6c64745fdc..0000000000 --- a/docs/manual/lifecycle/life.ipynb +++ /dev/null @@ -1,926 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Life of a value\n", - "sidebar_position: 2\n", - "description: An explanation of when and how Mojo creates values.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The life of a value in Mojo begins when a variable is initialized and continues\n", - "up until the value is last used, at which point Mojo destroys it. This page\n", - "describes how every value in Mojo is created, copied, and moved. (The next\n", - "page describes [how values are\n", - "destroyed](/mojo/manual/lifecycle/death).)\n", - "\n", - "All data types in Mojo—including basic types in the standard library such as\n", - "[`Bool`](/mojo/stdlib/builtin/bool/Bool),\n", - "[`Int`](/mojo/stdlib/builtin/int/Int), and\n", - "[`String`](/mojo/stdlib/collections/string/String), up to complex types such\n", - "as [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) and\n", - "[`object`](/mojo/stdlib/builtin/object/object)—are defined as a\n", - "[struct](/mojo/manual/structs). This means the creation and\n", - "destruction of any piece of data follows the same lifecycle rules, and you can\n", - "define your own data types that work exactly the same way.\n", - "\n", - "Mojo structs don't get any default lifecycle methods, such as a\n", - "constructor, copy constructor, or move constructor. That means you can create\n", - "a struct without a constructor, but then you can't instantiate it, and it\n", - "would be useful only as a sort of namespace for static methods. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "struct NoInstances:\n", - " var state: Int\n", - "\n", - " @staticmethod\n", - " fn print_hello():\n", - " print(\"Hello world!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without a constructor, this cannot be instantiated, so it has no lifecycle. The\n", - "`state` field is also useless because it cannot be initialized (Mojo structs do\n", - "not support default field values—you must initialize them in a constructor).\n", - "\n", - "So the only thing you can do is call the static method:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello world!\n" - ] - } - ], - "source": [ - "NoInstances.print_hello()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Constructor\n", - "\n", - "To create an instance of a Mojo type, it needs the `__init__()` constructor\n", - "method. The main responsibility of the constructor is to initialize all fields.\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can create an instance:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "var mine = MyPet(\"Loki\", 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "An instance of `MyPet` can also be\n", - "[borrowed](/mojo/manual/values/ownership#borrowed-arguments-borrowed)\n", - "and destroyed, but it currently can't be copied or moved.\n", - "\n", - "We believe this is a good default starting point, because there are no built-in\n", - "lifecycle events and no surprise behaviors. You—the type author—must\n", - "explicitly decide whether and how the type can be copied or moved, by\n", - "implementing the copy and move constructors.\n", - "\n", - ":::note\n", - "\n", - "Mojo does not require a destructor to destroy an object. As long as\n", - "all fields in the struct are destructible (every type in the standard library\n", - "is destructible, except for\n", - "[pointers](/mojo/stdlib/memory/unsafe)), then Mojo knows how to destroy\n", - "the type when its lifetime ends. We'll discuss that more in [Death of a\n", - "value](/mojo/manual/lifecycle/death).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Overloading the constructor\n", - "\n", - "Like any other function/method, you can\n", - "[overload](/mojo/manual/functions#overloaded-functions) the\n", - "`__init__()` constructor to initialize the object with different arguments. For\n", - "example, you might want a default constructor that sets some default values and\n", - "takes no arguments, and then additional constructors that accept more arguments.\n", - "\n", - "Just be aware that, in order to modify any fields, each constructor must\n", - "declare the `self` argument with the [`inout`\n", - "convention](/mojo/manual/values/ownership#mutable-arguments-inout). If you\n", - "want to call one constructor from another, you simply call upon that\n", - "constructor as you would externally (you don't need to pass `self`).\n", - "\n", - "For example, here's how you can delegate work from an overloaded constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self):\n", - " self.name = \"\"\n", - " self.age = 0\n", - "\n", - " fn __init__(out self, name: String):\n", - " self = MyPet()\n", - " self.name = name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Field initialization\n", - "\n", - "Notice in the previous example that, by the end of each constructor, all fields\n", - "must be initialized. That's the only requirement in the constructor.\n", - "\n", - "In fact, the `__init__()` constructor is smart enough to treat the `self`\n", - "object as fully initialized even before the constructor is finished, as long\n", - "as all fields are initialized. For example, this constructor can pass around\n", - "`self` as soon as all fields are initialized:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "fn use(arg: MyPet):\n", - " pass\n", - "\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int, cond: Bool):\n", - " self.name = name\n", - " if cond:\n", - " self.age = age\n", - " use(self) # Safe to use immediately!\n", - "\n", - " self.age = age\n", - " use(self) # Safe to use immediately!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Constructors and implicit conversion\n", - "\n", - "Mojo supports implicit conversion from one type to another. Implicit conversion\n", - "can happen when one of the following occurs:\n", - "\n", - "- You assign a value of one type to a variable with a different type.\n", - "- You pass a value of one type to a function that requires a different type.\n", - "\n", - "In both cases, implicit conversion is supported when the target type\n", - "defines a constructor that takes a single required, non-keyword argument of the\n", - "source type. For example:\n", - "\n", - "```mojo\n", - "var a = Source()\n", - "var b: Target = a\n", - "```\n", - "\n", - "Mojo implicitly converts the `Source` value in `a` to a `Target` value if \n", - "`Target` defines a matching constructor like this:\n", - "\n", - "```mojo\n", - "struct Target:\n", - " fn __init__(out self, s: Source): ...\n", - "```\n", - "\n", - "With implicit conversion, the assignment above is essentially identical to:\n", - "\n", - "```mojo\n", - "var b = Target(a)\n", - "```\n", - "\n", - "The constructor used for implicit conversion can take optional arguments, so\n", - "the following constructor would also support implicit conversion from `Source`\n", - "to `Target`:\n", - "\n", - "```mojo\n", - "struct Target:\n", - " fn __init__(out self, s: Source, reverse: Bool = False): ...\n", - "```\n", - "\n", - "Implicit conversion also occurs if the type doesn't declare its own constructor,\n", - "but instead uses the [`@value` decorator](#value-decorator), _and_ the type\n", - "has only one field. That's because Mojo automatically creates a member-wise\n", - "constructor for each field, and when there is only one field, that synthesized\n", - "constructor works exactly like a conversion constructor. For example, this\n", - "type also can convert a `Source` value to a `Target` value:\n", - "\n", - "```mojo\n", - "@value\n", - "struct Target:\n", - " var s: Source\n", - "```\n", - "\n", - "Implicit conversion can fail if Mojo can't unambiguously match the conversion to\n", - "a constructor. For example, if the target type has two overloaded constructors\n", - "that take different types, and each of those types supports an implicit\n", - "conversion from the source type, the compiler has two equally-valid paths to \n", - "convert the values:\n", - "\n", - "```mojo\n", - "struct A: \n", - " fn __init__(out self, s: Source): ...\n", - "\n", - "struct B: \n", - " fn __init__(out self, s: Source): ...\n", - "\n", - "struct Target:\n", - " fn __init__(out self, a: A): ...\n", - " fn __init__(out self, b: B): ...\n", - "\n", - "# Fails\n", - "var t = Target(Source())\n", - "```\n", - "\n", - "In this case, removing either one of the target type's constructors will fix the\n", - "problem.\n", - "\n", - "If you want to define a single-argument constructor, but you **don't** want\n", - "the types to implicitly convert, you can define the constructor with a \n", - "[keyword-only argument](/mojo/manual/functions#positional-only-and-keyword-only-arguments):\n", - "\n", - "```mojo\n", - "struct Target:\n", - " # does not support implicit conversion\n", - " fn __init__(out self, *, source: Source): ...\n", - "\n", - "# the constructor must be called with a keyword\n", - "var t = Target(source=a)\n", - "```\n", - "\n", - ":::note\n", - "\n", - "In the future we intend to provide a more explicit method of declaring whether\n", - "a constructor should support implicit conversion.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Copy constructor\n", - "\n", - "When Mojo encounters an assignment operator (`=`), it tries to make a copy of\n", - "the right-side value by calling upon that type's copy constructor: the\n", - "`__copyinit__()` method. Thus, it's the responsibility of the type author to\n", - "implement `__copyinit__()` so it returns a copy of the value.\n", - "\n", - "For example, the `MyPet` type above does not have a copy constructor,\n", - "so this code fails to compile:\n", - "\n", - "```mojo\n", - "var mine = MyPet(\"Loki\", 4)\n", - "var yours = mine # This requires a copy, but MyPet has no copy constructor\n", - "```\n", - "\n", - "To make it work, we need to add the copy constructor, like\n", - "this:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "`Self` (capital \"S\") is an alias for the current type name\n", - "(`MyPet`, in this example). Using this alias is a best practice to avoid any\n", - "mistakes when referring to the current struct name.\n", - "\n", - "Also, notice that the `existing` argument in `__copyinit__()` is immutable\n", - "because the default [argument\n", - "convention](/mojo/manual/values/ownership#argument-conventions) in an `fn`\n", - "function is `borrowed`—this is a good thing because this function should not\n", - "modify the contents of the value being copied.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now this code works to make a copy:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "var mine = MyPet(\"Loki\", 4)\n", - "var yours = mine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What makes Mojo's copy behavior different, compared to other languages, is that\n", - "`__copyinit__()` is designed to perform a deep copy of all fields in the type\n", - "(as per [value semantics](/mojo/manual/values/value-semantics)). That is,\n", - "it copies heap-allocated values, rather than just copying the pointer.\n", - "\n", - "However, the Mojo compiler doesn't enforce this, so it's the type author's\n", - "responsibility to implement `__copyinit__()` with value semantics. For example,\n", - "here's a new `HeapArray` type that performs a deep copy in the copy constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - " var cap: Int\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.cap = size * 2\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " # Deep-copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(existing.data[i])\n", - " # The lifetime of `existing` continues unchanged\n", - "\n", - " fn __del__(owned self):\n", - " # We must free the heap-allocated data, but\n", - " # Mojo knows how to destroy the other fields\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn append(inout self, val: Int):\n", - " # Update the array for demo purposes\n", - " if self.size < self.cap:\n", - " (self.data + self.size).init_pointee_copy(val)\n", - " self.size += 1\n", - " else:\n", - " print(\"Out of bounds\")\n", - "\n", - " fn dump(self):\n", - " # Print the array contents for demo purposes\n", - " print(\"[\", end=\"\")\n", - " for i in range(self.size):\n", - " if i > 0:\n", - " print(\", \", end=\"\")\n", - " print(self.data[i], end=\"\")\n", - " print(\"]\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `__copyinit__()` does not copy the `UnsafePointer` value (doing so would\n", - "make the copied value refer to the same `data` memory address as the original\n", - "value, which is a shallow copy). Instead, we initialize a new `UnsafePointer` to\n", - "allocate a new block of memory, and then copy over all the heap-allocated\n", - "values (this is a deep copy).\n", - "\n", - "Thus, when we copy an instance of `HeapArray`, each copy has its own value on\n", - "the heap, so changes to one value do not affect the other, as shown here:" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "fn copies():\n", - " var a = HeapArray(2, 1)\n", - " var b = a # Calls the copy constructor\n", - " a.dump() # Prints [1, 1]\n", - " b.dump() # Prints [1, 1]\n", - "\n", - " b.append(2) # Changes the copied data\n", - " b.dump() # Prints [1, 1, 2]\n", - " a.dump() # Prints [1, 1] (the original did not change)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "In `HeapArray`, we must use the `__del__()` destructor to free the\n", - "heap-allocated data when the `HeapArray` lifetime ends, but Mojo automatically\n", - "destroys all other fields when their respective lifetimes end. We'll discuss\n", - "this destructor more in [Death of a value](/mojo/manual/lifecycle/death).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If your type doesn't use any pointers for heap-allocated data, then writing the\n", - "constructor and copy constructor is all boilerplate code that you shouldn't\n", - "have to write. For most structs that don't manage memory explicitly, you can \n", - "just add the [`@value` decorator](/mojo/manual/decorators/value) to your\n", - "struct definition and Mojo will synthesize the `__init__()`, `__copyinit__()`,\n", - "and `__moveinit__()` methods.\n", - "\n", - ":::note\n", - "\n", - "Mojo also calls upon the copy constructor when a value is passed to a\n", - "function that takes the argument as\n", - "[`owned`](/mojo/manual/values/ownership#transfer-arguments-owned-and-)\n", - "_and_ when the lifetime of the given value does _not_ end at that point. If the\n", - "lifetime of the value does end there (usually indicated with the transfer\n", - "sigil `^`), then Mojo instead invokes the move constructor.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Move constructor\n", - "\n", - "Although copying values provides predictable behavior that matches Mojo's\n", - "[value semantics](/mojo/manual/values/value-semantics), copying some data\n", - "types can be a significant hit on performance. If you're familiar with\n", - "reference semantics, then the solution here might seem clear: instead of making\n", - "a copy when passing a value, share the value as a reference. And if the\n", - "original variable is no longer needed, nullify the original to avoid any\n", - "double-free or use-after-free errors. That's generally known as a move\n", - "operation: the memory block holding the data remains the same (the memory does\n", - "not actually move), but the pointer to that memory moves to a new variable.\n", - "\n", - "To support moving a value, implement the `__moveinit__()` method. The \n", - "`__moveinit__()` method performs a consuming move: it [transfers\n", - "ownership](/mojo/manual/values/ownership#transfer-arguments-owned-and-)\n", - "of a value from one variable to another when the original variable's lifetime\n", - "ends (also called a \"destructive move\").\n", - "\n", - ":::note\n", - "\n", - "A move constructor is **not required** to transfer ownership of a\n", - "value. Unlike in Rust, transferring ownership is not always a move operation;\n", - "the move constructors are only part of the implementation for how Mojo\n", - "transfers ownership of a value. You can learn more in the section about\n", - "[ownership\n", - "transfer](/mojo/manual/values/ownership#transfer-arguments-owned-and-).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When a move occurs, Mojo immediately invalidates the original\n", - "variable, preventing any access to it and disabling its destructor. Invalidating\n", - "the original variable is important to avoid memory errors on heap-allocated\n", - "data, such as use-after-free and double-free errors.\n", - "\n", - "Here's how to add the move constructor to the `HeapArray` example:" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - " var cap: Int\n", - "\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.cap = size * 2\n", - " self.data = UnsafePointer[Int].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " # Deep-copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(existing.data[i])\n", - " # The lifetime of `existing` continues unchanged\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " print(\"move\")\n", - " # Shallow copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = existing.data\n", - " # Then the lifetime of `existing` ends here, but\n", - " # Mojo does NOT call its destructor\n", - "\n", - " fn __del__(owned self):\n", - " # We must free the heap-allocated data, but\n", - " # Mojo knows how to destroy the other fields\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn append(inout self, val: Int):\n", - " # Update the array for demo purposes\n", - " if self.size < self.cap:\n", - " (self.data + self.size).init_pointee_copy(val)\n", - " self.size += 1\n", - " else:\n", - " print(\"Out of bounds\")\n", - "\n", - " fn dump(self):\n", - " # Print the array contents for demo purposes\n", - " print(\"[\", end=\"\")\n", - " for i in range(self.size):\n", - " if i > 0:\n", - " print(\", \", end=\"\")\n", - " print(self.data[i], end=\"\")\n", - " print(\"]\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The critical feature of `__moveinit__()` is that it takes the incoming value as\n", - "`owned`, meaning this method gets unique ownership of the value. Moreover,\n", - "because this is a dunder method that Mojo calls only when performing a move \n", - "(during ownership transfer), the `existing` argument is guaranteed to be a \n", - "mutable reference to the original value, _not a copy_ (unlike other methods that\n", - "may declare an argument as `owned`, but might receive the value as a copy if the\n", - "method is called without the [`^` transfer\n", - "sigil](/mojo/manual/values/ownership#transfer-arguments-owned-and-)).\n", - "That is, Mojo calls this move constructor _only_ when the original variable's\n", - "lifetime actually ends at the point of transfer.\n", - "\n", - "Here's an example showing how to invoke the move constructor for `HeapArray`:" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "fn moves():\n", - " var a = HeapArray(3, 1)\n", - "\n", - " a.dump() # Prints [1, 1, 1]\n", - "\n", - " var b = a^ # Prints \"move\"; the lifetime of `a` ends here\n", - "\n", - " b.dump() # Prints [1, 1, 1]\n", - " #a.dump() # ERROR: use of uninitialized value 'a'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `__moveinit__()` performs a shallow copy of the\n", - "existing field values (it copies the pointer, instead of allocating new memory\n", - "on the heap), which is what makes it useful for types with heap-allocated\n", - "values that are expensive to copy.\n", - "\n", - "To go further and ensure your type can never be copied, you can make it\n", - "\"move-only\" by implementing `__moveinit__()` and _excluding_ `__copyinit__()`.\n", - "A move-only type can be passed to other variables and passed into functions\n", - "with any argument convention (`borrowed`, `inout`, and `owned`)—the only catch\n", - "is that you must use the `^` transfer sigil to end the lifetime of a\n", - "move-only type when assigning it to a new variable or when passing it as an\n", - "`owned` argument." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "For types without heap-allocated fields, you get no real benefit from\n", - "the move constructor. Making copies of simple data types on the stack, like\n", - "integers, floats, and booleans, is very cheap. Yet, if you allow your type to\n", - "be copied, then there's generally no reason to disallow moves, so you can\n", - "synthesize both constructors by adding the [`@value`\n", - "decorator](/mojo/manual/decorators/value).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simple value types {#value-decorator}\n", - "\n", - "Because copy and move constructors are opt-in, Mojo provides great control for\n", - "exotic use cases (such as for atomic values that should never be copied or\n", - "moved), but most structs are simple aggregations of other types that should be\n", - "easily copied and moved, and we don't want to write a lot of boilerplate\n", - "constructors for those simple value types.\n", - "\n", - "To solve this, Mojo provides the [`@value`\n", - "decorator](/mojo/manual/decorators/value), which synthesizes the\n", - "boilerplate code for the `__init__()`, `__copyinit__()`, and `__moveinit__()`\n", - "methods.\n", - "\n", - "For example, consider a simple struct like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo sees the `@value` decorator and notices that you don't have a member-wise\n", - "initializer (a constructor with arguments for each field), a copy constructor,\n", - "or a move constructor, so it synthesizes them for you. The result is as if you\n", - "had actually written this:" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo synthesizes each lifecycle method only when it doesn't exist, so\n", - "you can use `@value` and still define your own versions to override the default\n", - "behavior. For example, it is fairly common to use the default member-wise and\n", - "move constructor, but create a custom copy constructor. Another common pattern\n", - "is to use `@value` to create a member-wise constructor, and add overloads that\n", - "take different sets of arguments. For example, if you want to create\n", - "a `MyPet` struct without specifying an age, you could add an overloaded\n", - "constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String):\n", - " self.name = name^\n", - " self.age = 0\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this overloaded constructor **doesn't** prevent the `@value` decorator\n", - "from synthesizing the member-wise constructor. To override this default\n", - "constructor, you'd need to add a constructor with the same signature as the\n", - "default member-wise constructor.\n", - "\n", - "Something you can see in this code that we didn't mention yet is that the\n", - "`__init__()` method takes all arguments as `owned`, because the constructor\n", - "must take ownership to store each value. This is a useful micro-optimization\n", - "and enables the use of move-only types. Trivial types like `Int` are also\n", - "passed as `owned`, but because ownership doesn't mean anything for integers, we\n", - "can elide that declaration and the transfer sigil (`^`) for simplicity. The\n", - "transfer operator is also just a formality in this case, because, even if it's\n", - "not used with `self.name = name^`, the Mojo compiler will notice that `name` is\n", - "last used here and convert this assignment into a move, instead of a\n", - "copy+delete.\n", - "\n", - ":::note\n", - "\n", - "If your type contains any move-only fields, Mojo will not generate\n", - "the copy constructor because it cannot copy those fields. Further, the `@value`\n", - "decorator won't work at all if any of your members are neither copyable nor\n", - "movable. For example, if you have something like `Atomic` in your struct, then\n", - "it probably isn't a true value type, and you don't want the copy/move\n", - "constructors anyway.\n", - "\n", - "Also notice that the `MyPet` struct above doesn't include the `__del__()`\n", - "destructor (the `@value` decorator does not synthesize this), because Mojo\n", - "doesn't need it to destroy fields, as discussed in [Death of a\n", - "value](/mojo/manual/lifecycle/death)\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Trivial types\n", - "\n", - "So far, we've talked about values that live in memory, which means they have an\n", - "identity (an address) that can be passed around among functions (passed \"by\n", - "reference\"). This is great for most types, and it's a safe default for large\n", - "objects with expensive copy operations. However, it's inefficient for tiny\n", - "things like a single integer or floating point number. We call these types\n", - "\"trivial\" because they are just \"bags of bits\" that should be copied, moved,\n", - "and destroyed without invoking any custom lifecycle methods.\n", - "\n", - "Trivial types are the most common types that surround us, and from a language\n", - "perspective, Mojo doesn’t need special support for these written in a struct.\n", - "Usually, these values are so tiny that they should be passed around in CPU\n", - "registers, not indirectly through memory.\n", - "\n", - "As such, Mojo provides a struct decorator to declare these types of values:\n", - "`@register_passable(\"trivial\")`. This decorator tells Mojo that the type should\n", - "be copyable and movable but that it has no user-defined logic (no lifecycle\n", - "methods) for doing this. It also tells Mojo to pass the value in CPU registers\n", - "whenever possible, which has clear performance benefits.\n", - "\n", - "You'll see this decorator on types like `Int` in the standard library:\n", - "\n", - "```mojo\n", - "@register_passable(\"trivial\")\n", - "struct Int:\n", - " var value: __mlir_type.index\n", - "\n", - " fn __init__(value: __mlir_type.index) -> Int:\n", - " return Self {value: value}\n", - " ...\n", - "```\n", - "\n", - "We expect to use this decorator pervasively on Mojo standard library types, but\n", - "it is safe to ignore for general application-level code.\n", - "\n", - "For more information, see the [`@register_passable`\n", - "documentation](/mojo/manual/decorators/register-passable).\n", - "\n", - ":::note TODO\n", - "\n", - "This decorator is due for reconsideration. Lack of custom\n", - "copy/move/destroy logic and \"passability in a register\" are orthogonal concerns\n", - "and should be split. This former logic should be subsumed into a more general\n", - "`@value(\"trivial\")` decorator, which is orthogonal from `@register_passable`.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx new file mode 100644 index 0000000000..c852c4c700 --- /dev/null +++ b/docs/manual/lifecycle/life.mdx @@ -0,0 +1,692 @@ +--- +title: Life of a value +sidebar_position: 2 +description: An explanation of when and how Mojo creates values. +--- + +The life of a value in Mojo begins when a variable is initialized and continues +up until the value is last used, at which point Mojo destroys it. This page +describes how every value in Mojo is created, copied, and moved. (The next +page describes [how values are +destroyed](/mojo/manual/lifecycle/death).) + +All data types in Mojo—including basic types in the standard library such as +[`Bool`](/mojo/stdlib/builtin/bool/Bool), +[`Int`](/mojo/stdlib/builtin/int/Int), and +[`String`](/mojo/stdlib/collections/string/String), up to complex types such +as [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) and +[`object`](/mojo/stdlib/builtin/object/object)—are defined as a +[struct](/mojo/manual/structs). This means the creation and +destruction of any piece of data follows the same lifecycle rules, and you can +define your own data types that work exactly the same way. + +Mojo structs don't get any default lifecycle methods, such as a +constructor, copy constructor, or move constructor. That means you can create +a struct without a constructor, but then you can't instantiate it, and it +would be useful only as a sort of namespace for static methods. For example: + +```mojo +struct NoInstances: + var state: Int + + @staticmethod + fn print_hello(): + print("Hello world!") +``` + +Without a constructor, this cannot be instantiated, so it has no lifecycle. The +`state` field is also useless because it cannot be initialized (Mojo structs do +not support default field values—you must initialize them in a constructor). + +So the only thing you can do is call the static method: + +```mojo +NoInstances.print_hello() +``` + +```output +Hello world! +``` + +## Constructor + +To create an instance of a Mojo type, it needs the `__init__()` constructor +method. The main responsibility of the constructor is to initialize all fields. +For example: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age +``` + +Now we can create an instance: + +```mojo +var mine = MyPet("Loki", 4) +``` + +An instance of `MyPet` can also be +[read](/mojo/manual/values/ownership#read-arguments-read) +and destroyed, but it currently can't be copied or moved. + +We believe this is a good default starting point, because there are no built-in +lifecycle events and no surprise behaviors. You—the type author—must +explicitly decide whether and how the type can be copied or moved, by +implementing the copy and move constructors. + +:::note + +Mojo does not require a destructor to destroy an object. As long as +all fields in the struct are destructible (every type in the standard library +is destructible, except for +[pointers](/mojo/stdlib/memory/unsafe)), then Mojo knows how to destroy +the type when its lifetime ends. We'll discuss that more in [Death of a +value](/mojo/manual/lifecycle/death). + +::: + +### Overloading the constructor + +Like any other function/method, you can +[overload](/mojo/manual/functions#overloaded-functions) the +`__init__()` constructor to initialize the object with different arguments. For +example, you might want a default constructor that sets some default values and +takes no arguments, and then additional constructors that accept more arguments. + +Just be aware that, in order to modify any fields, each constructor must +declare the `self` argument with the [`out` +convention](/mojo/manual/values/ownership#mutable-arguments-mut). If you +want to call one constructor from another, you simply call upon that +constructor as you would externally (you don't need to pass `self`). + +For example, here's how you can delegate work from an overloaded constructor: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self): + self.name = "" + self.age = 0 + + fn __init__(out self, name: String): + self = MyPet() + self.name = name +``` + +### Field initialization + +Notice in the previous example that, by the end of each constructor, all fields +must be initialized. That's the only requirement in the constructor. + +In fact, the `__init__()` constructor is smart enough to treat the `self` +object as fully initialized even before the constructor is finished, as long +as all fields are initialized. For example, this constructor can pass around +`self` as soon as all fields are initialized: + +```mojo +fn use(arg: MyPet): + pass + +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int, cond: Bool): + self.name = name + if cond: + self.age = age + use(self) # Safe to use immediately! + + self.age = age + use(self) # Safe to use immediately! +``` + +### Constructors and implicit conversion + +Mojo supports implicit conversion from one type to another. Implicit conversion +can happen when one of the following occurs: + +- You assign a value of one type to a variable with a different type. +- You pass a value of one type to a function that requires a different type. + +In both cases, implicit conversion is supported when the target type +defines a constructor that meets the following criteria: + +- Is declared with the `@implicit` decorator. +- Has a single required, non-keyword argument of the source type. + +For example: + +```mojo +var a = Source() +var b: Target = a +``` + +Mojo implicitly converts the `Source` value in `a` to a `Target` value if +`Target` defines a matching constructor like this: + +```mojo +struct Target: + + @implicit + fn __init__(out self, s: Source): ... +``` + +With implicit conversion, the assignment above is essentially identical to: + +```mojo +var b = Target(a) +``` + +In general, types should only support implicit conversions when the conversion +lossless, and ideally inexpensive. For example, converting an integer to a +floating-point number is usually lossless (except for very large positive and +negative integers, where the conversion may be approximate), but converting a +floating-point number to an integer is very likely to lose information. So +Mojo supports implicit conversion from `Int` to `Float64`, but not the reverse. + +The constructor used for implicit conversion can take optional arguments, so +the following constructor would also support implicit conversion from `Source` +to `Target`: + +```mojo +struct Target: + + @implicit + fn __init__(out self, s: Source, reverse: Bool = False): ... +``` + +Implicit conversion can fail if Mojo can't unambiguously match the conversion to +a constructor. For example, if the target type has two overloaded constructors +that take different types, and each of those types supports an implicit +conversion from the source type, the compiler has two equally-valid paths to +convert the values: + +```mojo +struct A: + @implicit + fn __init__(out self, s: Source): ... + +struct B: + @implicit + fn __init__(out self, s: Source): ... + +struct OverloadedTarget: + @implicit + fn __init__(out self, a: A): ... + @implicit + fn __init__(out self, b: B): ... + +var t = OverloadedTarget(Source()) # Error: ambiguous call to '__init__': each + # candidate requires 1 implicit conversion +``` + +In this case, you can fix the issue by explicitly casting to one of the +intermediate types. For example: + +```mojo +var t = OverloadedTarget(A(Source())) # OK +``` + +Mojo applies at most one implicit conversion to a variable. For example: + +```mojo +var t: OverloadedTarget = Source() # Error: can't implicitly convert Source + # to Target +``` + +Would fail because there's no direct conversion from `Source` to +`OverloadedTarget`. + +## Copy constructor + +When Mojo encounters an assignment statement that doesn't use the [transfer +sigil (`^`)](/mojo/manual/values/ownership#transfer-arguments-owned-and-), it +tries to make a copy of the right-side value by calling upon that type's copy +constructor: the `__copyinit__()` method. Thus, it's the responsibility of the +type author to implement `__copyinit__()` so it returns a copy of the value. + +For example, the `MyPet` type above does not have a copy constructor, +so this code fails to compile: + +```mojo +var mine = MyPet("Loki", 4) +var yours = mine # This requires a copy, but MyPet has no copy constructor +``` + +To make it work, we need to add the copy constructor, like +this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age +``` + +:::note + +`Self` (capital "S") is an alias for the current type name +(`MyPet`, in this example). Using this alias is a best practice to avoid any +mistakes when referring to the current struct name. + +Also, notice that the `existing` argument in `__copyinit__()` is immutable +because the default [argument +convention](/mojo/manual/values/ownership#argument-conventions) is +`read`—this is a good thing because this function should not modify the +contents of the value being copied. + +::: + +Now this code works to make a copy: + +```mojo +var mine = MyPet("Loki", 4) +var yours = mine +``` + +What makes Mojo's copy behavior different, compared to other languages, is that +`__copyinit__()` is designed to perform a deep copy of all fields in the type +(as per [value semantics](/mojo/manual/values/value-semantics)). That is, +it copies heap-allocated values, rather than just copying the pointer. + +However, the Mojo compiler doesn't enforce this, so it's the type author's +responsibility to implement `__copyinit__()` with value semantics. For example, +here's a new `HeapArray` type that performs a deep copy in the copy constructor: + +```mojo +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + var cap: Int + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.cap = size * 2 + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __copyinit__(out self, existing: Self): + # Deep-copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(existing.data[i]) + # The lifetime of `existing` continues unchanged + + fn __del__(owned self): + # We must free the heap-allocated data, but + # Mojo knows how to destroy the other fields + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn append(mut self, val: Int): + # Update the array for demo purposes + if self.size < self.cap: + (self.data + self.size).init_pointee_copy(val) + self.size += 1 + else: + print("Out of bounds") + + fn dump(self): + # Print the array contents for demo purposes + print("[", end="") + for i in range(self.size): + if i > 0: + print(", ", end="") + print(self.data[i], end="") + print("]") +``` + +Notice that `__copyinit__()` does not copy the `UnsafePointer` value (doing so would +make the copied value refer to the same `data` memory address as the original +value, which is a shallow copy). Instead, we initialize a new `UnsafePointer` to +allocate a new block of memory, and then copy over all the heap-allocated +values (this is a deep copy). + +Thus, when we copy an instance of `HeapArray`, each copy has its own value on +the heap, so changes to one value do not affect the other, as shown here: + +```mojo +fn copies(): + var a = HeapArray(2, 1) + var b = a # Calls the copy constructor + a.dump() # Prints [1, 1] + b.dump() # Prints [1, 1] + + b.append(2) # Changes the copied data + b.dump() # Prints [1, 1, 2] + a.dump() # Prints [1, 1] (the original did not change) +``` + +:::note + +In `HeapArray`, we must use the `__del__()` destructor to free the +heap-allocated data when the `HeapArray` lifetime ends, but Mojo automatically +destroys all other fields when their respective lifetimes end. We'll discuss +this destructor more in [Death of a value](/mojo/manual/lifecycle/death). + +::: + +If your type doesn't use any pointers for heap-allocated data, then writing the +constructor and copy constructor is all boilerplate code that you shouldn't +have to write. For most structs that don't manage memory explicitly, you can +just add the [`@value` decorator](/mojo/manual/decorators/value) to your +struct definition and Mojo will synthesize the `__init__()`, `__copyinit__()`, +and `__moveinit__()` methods. + +:::note + +Mojo also calls upon the copy constructor when a value is passed to a +function that takes the argument as +[`owned`](/mojo/manual/values/ownership#transfer-arguments-owned-and-) +*and* when the lifetime of the given value does *not* end at that point. If the +lifetime of the value does end there (usually indicated with the transfer +sigil `^`), then Mojo instead invokes the move constructor. + +::: + +## Move constructor + +Although copying values provides predictable behavior that matches Mojo's +[value semantics](/mojo/manual/values/value-semantics), copying some data +types can be a significant hit on performance. If you're familiar with +reference semantics, then the solution here might seem clear: instead of making +a copy when passing a value, share the value as a reference. And if the +original variable is no longer needed, nullify the original to avoid any +double-free or use-after-free errors. That's generally known as a move +operation: the memory block holding the data remains the same (the memory does +not actually move), but the pointer to that memory moves to a new variable. + +To support moving a value, implement the `__moveinit__()` method. The +`__moveinit__()` method performs a consuming move: it [transfers +ownership](/mojo/manual/values/ownership#transfer-arguments-owned-and-) +of a value from one variable to another when the original variable's lifetime +ends (also called a "destructive move"). + +:::note + +A move constructor is **not required** to transfer ownership of a +value. Unlike in Rust, transferring ownership is not always a move operation; +the move constructors are only part of the implementation for how Mojo +transfers ownership of a value. You can learn more in the section about +[ownership +transfer](/mojo/manual/values/ownership#transfer-arguments-owned-and-). + +::: + +When a move occurs, Mojo immediately invalidates the original +variable, preventing any access to it and disabling its destructor. Invalidating +the original variable is important to avoid memory errors on heap-allocated +data, such as use-after-free and double-free errors. + +Here's how to add the move constructor to the `HeapArray` example: + +```mojo +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + var cap: Int + + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.cap = size * 2 + self.data = UnsafePointer[Int].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __copyinit__(out self, existing: Self): + # Deep-copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(existing.data[i]) + # The lifetime of `existing` continues unchanged + + fn __moveinit__(out self, owned existing: Self): + print("move") + # Shallow copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = existing.data + # Then the lifetime of `existing` ends here, but + # Mojo does NOT call its destructor + + fn __del__(owned self): + # We must free the heap-allocated data, but + # Mojo knows how to destroy the other fields + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn append(mut self, val: Int): + # Update the array for demo purposes + if self.size < self.cap: + (self.data + self.size).init_pointee_copy(val) + self.size += 1 + else: + print("Out of bounds") + + fn dump(self): + # Print the array contents for demo purposes + print("[", end="") + for i in range(self.size): + if i > 0: + print(", ", end="") + print(self.data[i], end="") + print("]") +``` + +The critical feature of `__moveinit__()` is that it takes the incoming value as +`owned`, meaning this method gets unique ownership of the value. Moreover, +because this is a dunder method that Mojo calls only when performing a move +(during ownership transfer), the `existing` argument is guaranteed to be a +mutable reference to the original value, *not a copy* (unlike other methods that +may declare an argument as `owned`, but might receive the value as a copy if the +method is called without the [`^` transfer +sigil](/mojo/manual/values/ownership#transfer-arguments-owned-and-)). +That is, Mojo calls this move constructor *only* when the original variable's +lifetime actually ends at the point of transfer. + +Here's an example showing how to invoke the move constructor for `HeapArray`: + +```mojo +fn moves(): + var a = HeapArray(3, 1) + + a.dump() # Prints [1, 1, 1] + + var b = a^ # Prints "move"; the lifetime of `a` ends here + + b.dump() # Prints [1, 1, 1] + #a.dump() # ERROR: use of uninitialized value 'a' +``` + +Notice that `__moveinit__()` performs a shallow copy of the +existing field values (it copies the pointer, instead of allocating new memory +on the heap), which is what makes it useful for types with heap-allocated +values that are expensive to copy. + +To go further and ensure your type can never be copied, you can make it +"move-only" by implementing `__moveinit__()` and *excluding* `__copyinit__()`. +A move-only type can be passed to other variables and passed into functions +with any argument convention (`read`, `mut`, and `owned`)—the only catch +is that you must use the `^` transfer sigil to end the lifetime of a +move-only type when assigning it to a new variable or when passing it as an +`owned` argument. + +:::note + +For types without heap-allocated fields, you get no real benefit from +the move constructor. Making copies of simple data types on the stack, like +integers, floats, and booleans, is very cheap. Yet, if you allow your type to +be copied, then there's generally no reason to disallow moves, so you can +synthesize both constructors by adding the [`@value` +decorator](/mojo/manual/decorators/value). + +::: + +## Simple value types {#value-decorator} + +Because copy and move constructors are opt-in, Mojo provides great control for +exotic use cases (such as for atomic values that should never be copied or +moved), but most structs are simple aggregations of other types that should be +easily copied and moved, and we don't want to write a lot of boilerplate +constructors for those simple value types. + +To solve this, Mojo provides the [`@value` +decorator](/mojo/manual/decorators/value), which synthesizes the +boilerplate code for the `__init__()`, `__copyinit__()`, and `__moveinit__()` +methods. + +For example, consider a simple struct like this: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo sees the `@value` decorator and notices that you don't have a member-wise +initializer (a constructor with arguments for each field), a copy constructor, +or a move constructor, so it synthesizes them for you. The result is as if you +had actually written this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Mojo synthesizes each lifecycle method only when it doesn't exist, so +you can use `@value` and still define your own versions to override the default +behavior. For example, it is fairly common to use the default member-wise and +move constructor, but create a custom copy constructor. Another common pattern +is to use `@value` to create a member-wise constructor, and add overloads that +take different sets of arguments. For example, if you want to create +a `MyPet` struct without specifying an age, you could add an overloaded +constructor: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String): + self.name = name^ + self.age = 0 + +``` + +Note that this overloaded constructor **doesn't** prevent the `@value` decorator +from synthesizing the member-wise constructor. To override this default +constructor, you'd need to add a constructor with the same signature as the +default member-wise constructor. + +Something you can see in this code that we didn't mention yet is that the +`__init__()` method takes all arguments as `owned`, because the constructor +must take ownership to store each value. This is a useful micro-optimization +and enables the use of move-only types. Trivial types like `Int` are also +passed as `owned`, but because ownership doesn't mean anything for integers, we +can elide that declaration and the transfer sigil (`^`) for simplicity. The +transfer operator is also just a formality in this case, because, even if it's +not used with `self.name = name^`, the Mojo compiler will notice that `name` is +last used here and convert this assignment into a move, instead of a +copy+delete. + +:::note + +If your type contains any move-only fields, Mojo will not generate +the copy constructor because it cannot copy those fields. Further, the `@value` +decorator won't work at all if any of your members are neither copyable nor +movable. For example, if you have something like `Atomic` in your struct, then +it probably isn't a true value type, and you don't want the copy/move +constructors anyway. + +Also notice that the `MyPet` struct above doesn't include the `__del__()` +destructor (the `@value` decorator does not synthesize this), because Mojo +doesn't need it to destroy fields, as discussed in [Death of a +value](/mojo/manual/lifecycle/death) + +::: + +## Trivial types + +So far, we've talked about values that live in memory, which means they have an +identity (an address) that can be passed around among functions (passed "by +reference"). This is great for most types, and it's a safe default for large +objects with expensive copy operations. However, it's inefficient for tiny +things like a single integer or floating point number. We call these types +"trivial" because they are just "bags of bits" that should be copied, moved, +and destroyed without invoking any custom lifecycle methods. + +Trivial types are the most common types that surround us, and from a language +perspective, Mojo doesn’t need special support for these written in a struct. +Usually, these values are so tiny that they should be passed around in CPU +registers, not indirectly through memory. + +As such, Mojo provides a struct decorator to declare these types of values: +`@register_passable("trivial")`. This decorator tells Mojo that the type should +be copyable and movable but that it has no user-defined logic (no lifecycle +methods) for doing this. It also tells Mojo to pass the value in CPU registers +whenever possible, which has clear performance benefits. + +You'll see this decorator on types like `Int` in the standard library: + +```mojo +@register_passable("trivial") +struct Int: + var value: __mlir_type.index + + fn __init__(value: __mlir_type.index) -> Int: + return Self {value: value} + ... +``` + +We expect to use this decorator pervasively on Mojo standard library types, but +it is safe to ignore for general application-level code. + +For more information, see the [`@register_passable` +documentation](/mojo/manual/decorators/register-passable). + +:::note TODO + +This decorator is due for reconsideration. Lack of custom +copy/move/destroy logic and "passability in a register" are orthogonal concerns +and should be split. This former logic should be subsumed into a more general +`@value("trivial")` decorator, which is orthogonal from `@register_passable`. + +::: diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index e8a72e4a8c..a11cbd2cd8 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -849,10 +849,10 @@ struct MyInt: def __radd__(self, lhs: Int) -> Self: return MyInt(self.value + lhs) - def __iadd__(inout self, rhs: MyInt) -> None: + def __iadd__(mut self, rhs: MyInt) -> None: self.value += rhs.value - def __iadd__(inout self, rhs: Int) -> None: + def __iadd__(mut self, rhs: Int) -> None: self.value += rhs ``` @@ -953,7 +953,7 @@ struct MySeq[type: CollectionElement]: fn __getitem__(self, idx: Int) -> type: # Return element at the given index ... - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): # Assign the element at the given index the provided value ``` @@ -1116,7 +1116,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -1169,7 +1169,7 @@ this example. else: raise "index out of bounds" - def __setitem__(inout self, idx: Int, value: Float64) -> None: + def __setitem__(mut self, idx: Int, value: Float64) -> None: if idx == 0: self.re = value elif idx == 1: @@ -1372,44 +1372,44 @@ f1 / c1 = (-0.068665598535133904 - 0.37193865873197529i) Now let's implement support for the in-place assignment operators: `+=`, `-=`, `*=`, and `/=`. These modify the original value, so we need to mark `self` as -being an `inout` argument and update the `re` and `im` fields instead of +being an `mut` argument and update the `re` and `im` fields instead of returning a new `Complex` instance. And once again, we'll overload the definitions to support both a `Complex` and a `Float64` operand. ```mojo # ... - def __iadd__(inout self, rhs: Self) -> None: + def __iadd__(mut self, rhs: Self) -> None: self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64) -> None: + def __iadd__(mut self, rhs: Float64) -> None: self.re += rhs - def __isub__(inout self, rhs: Self) -> None: + def __isub__(mut self, rhs: Self) -> None: self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64) -> None: + def __isub__(mut self, rhs: Float64) -> None: self.re -= rhs - def __imul__(inout self, rhs: Self) -> None: + def __imul__(mut self, rhs: Self) -> None: new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64) -> None: + def __imul__(mut self, rhs: Float64) -> None: self.re *= rhs self.im *= rhs - def __itruediv__(inout self, rhs: Self) -> None: + def __itruediv__(mut self, rhs: Self) -> None: denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64) -> None: + def __itruediv__(mut self, rhs: Float64) -> None: self.re /= rhs self.im /= rhs ``` diff --git a/docs/manual/packages.md b/docs/manual/packages.md index ec7f1b55ea..1b1b6927e0 100644 --- a/docs/manual/packages.md +++ b/docs/manual/packages.md @@ -23,7 +23,7 @@ struct MyPair: var first: Int var second: Int - fn __init__(inout self, first: Int, second: Int): + fn __init__(out self, first: Int, second: Int): self.first = first self.second = second diff --git a/docs/manual/parameters/index.ipynb b/docs/manual/parameters/index.ipynb deleted file mode 100644 index 358f846ff3..0000000000 --- a/docs/manual/parameters/index.ipynb +++ /dev/null @@ -1,1908 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: \"Parameterization: compile-time metaprogramming\"\n", - "description: An introduction to parameters and compile-time metaprogramming.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Many languages have facilities for _metaprogramming_: that is, for writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with runtime overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use.\n", - "\n", - "To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same language as runtime programs, so you don't have to learn a new language—just a few new features.\n", - "\n", - "The main new feature is _parameters_. You can think of a parameter as a compile-time variable that becomes a runtime constant. This usage of \"parameter\" is probably different from what you're used to from other languages, where \"parameter\" and \"argument\" are often used interchangeably. In Mojo, \"parameter\" and \"parameter expression\" refer to compile-time values, and \"argument\" and \"expression\" refer to runtime values. \n", - "\n", - "In Mojo, you can add parameters to a struct or function. You can also define \n", - "named parameter expressions—aliases—that you can use as runtime constants." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameterized functions\n", - "\n", - "To define a _parameterized function_, add parameters in square brackets ahead\n", - "of the argument list. Each parameter is formatted just like an argument: a \n", - "parameter name, followed by a colon and a type (which is required). In the\n", - "following example, the function has a single parameter, `count` of type `Int`. " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn repeat[count: Int](msg: String):\n", - " @parameter\n", - " for i in range(count):\n", - " print(msg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`@parameter`](/mojo/manual/decorators/parameter) directive shown here \n", - "causes the `for` loop to be evaluated at compile time. The directive only works\n", - "if the loop limits are compile-time constants. Since `count` is a parameter,\n", - "`range(count)` can be calculated at compile time.\n", - "\n", - "Calling a parameterized function, you provide values for the parameters, just \n", - "like function arguments: " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n", - "Hello\n", - "Hello\n" - ] - } - ], - "source": [ - "repeat[3](\"Hello\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " \n", - " The compiler resolves the parameter values during compilation, and creates a\n", - " concrete version of the `repeat[]()` function for each unique parameter value.\n", - " After resolving the parameter values and unrolling the loop, the `repeat[3]()`\n", - " function would be roughly equivalent to this:\n", - "\n", - "```mojo\n", - "fn repeat_3(msg: String):\n", - " print(msg)\n", - " print(msg)\n", - " print(msg)\n", - "```\n", - "\n", - ":::note\n", - "\n", - "This doesn't represent actual code generated by the compiler. By the\n", - "time parameters are resolved, Mojo code has already been transformed to an\n", - "intermediate representation in [MLIR](https://mlir.llvm.org/).\n", - "\n", - ":::\n", - "\n", - "If the compiler can't resolve all parameter values to constant values, \n", - "compilation fails." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameters and generics\n", - "\n", - "\"Generics\" refers to functions that can act on multiple types of values, or \n", - "containers that can hold multiple types of values. For example, \n", - "[`List`](/mojo/stdlib/collections/list/List), can hold\n", - "different types of values, so you can have a list of `Int` values, or\n", - "a list of `String` values).\n", - "\n", - "In Mojo, generics use parameters to specify types. For example, `List`\n", - "takes a type parameter, so a vector of integers is written `List[Int]`.\n", - "So all generics use parameters, but **not** everything that uses parameters is a\n", - "generic. \n", - "\n", - "For example, the `repeat[]()` function in the previous section includes \n", - "parameter of type `Int`, and an argument of type `String`. It's parameterized,\n", - "but not generic. A generic function or struct is parameterized on _type_. For\n", - "example, we could rewrite `repeat[]()` to take any type of argument that\n", - "conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait: " - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "42\n" - ] - } - ], - "source": [ - "fn repeat[MsgType: Stringable, count: Int](msg: MsgType):\n", - " @parameter\n", - " for i in range(count):\n", - " print(str(msg))\n", - "\n", - "# Must use keyword parameter for `count`\n", - "repeat[count=2](42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This updated function takes any `Stringable` type, so you can pass it an `Int`,\n", - "`String`, or `Bool` value.\n", - "\n", - "You can't pass the `count` as a positional keyword without also specifying `MsgType`.\n", - "You can put `//` after `MsgType` to specify that it's always inferred by the argument. Now\n", - "you can pass the following parameter `count` positionally:" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "42\n" - ] - } - ], - "source": [ - "fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType):\n", - " @parameter\n", - " for i in range(count):\n", - " print(str(msg))\n", - "\n", - "# MsgType is always inferred, so first positional keyword `2` is passed to `count`\n", - "repeat[2](42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Mojo's support for generics is still early. You can write generic functions like\n", - "this using traits and parameters. You can also write generic collections like\n", - "`List` and `Dict`. If you're interested in learning how these types work, you\n", - "can find the source code for the standard library collection types \n", - "[on GitHub](https://github.com/modularml/mojo/blob/nightly/stdlib/src/collections/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Parameterized structs\n", - "\n", - "You can also add parameters to structs. You can use parameterized structs to\n", - "build generic collections. For example, a generic array type might include code\n", - "like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct GenericArray[ElementType: CollectionElement]:\n", - " var data: UnsafePointer[ElementType]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, *elements: ElementType):\n", - " self.size = len(elements)\n", - " self.data = UnsafePointer[ElementType].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_move(elements[i])\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn __getitem__(self, i: Int) raises -> ref [self] ElementType:\n", - " if (i < self.size):\n", - " return self.data[i]\n", - " else:\n", - " raise Error(\"Out of bounds\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This struct has a single parameter, `ElementType`, which is a placeholder for\n", - "the data type you want to store in the array, sometimes called a _type\n", - "parameter_. `ElementType` is typed as\n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement), which is a\n", - "[trait](/mojo/manual/traits) representing any type that can be copied and moved.\n", - "\n", - "As with parameterized functions, you need to pass in parameter values when you\n", - "use a parameterized struct. In this case, when you create an instance of \n", - "`GenericArray`, you need to specify the type you want to store, like `Int`, or\n", - "`Float64`. (This is a little confusing, because the _parameter value_ you're\n", - "passing in this case is a _type_. That's OK: a Mojo type is a valid compile-time\n", - "value.)\n", - "\n", - "You'll see that `ElementType` is used throughout the struct where you'd usually see a \n", - "type name. For example, as the formal type for the `elements` in the \n", - "constructor, and the return type of the `__getitem__()` method.\n", - "\n", - "Here's an example of using `GenericArray`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2 3 4 " - ] - } - ], - "source": [ - "var array = GenericArray[Int](1, 2, 3, 4)\n", - "for i in range(array.size):\n", - " print(array[i], end=\" \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A parameterized struct can use the `Self` type to represent a concrete instance\n", - "of the struct (that is, with all its parameters specified). For example, you\n", - "could add a static factory method to `GenericArray` with the following\n", - "signature:\n", - "\n", - "```mojo\n", - "struct GenericArray[ElementType: CollectionElement]:\n", - " ...\n", - "\n", - " @staticmethod\n", - " fn splat(count: Int, value: ElementType) -> Self:\n", - " # Create a new array with count instances of the given value\n", - "```\n", - "\n", - "Here, `Self` is equivalent to writing `GenericArray[ElementType]`. That is, you\n", - "can call the `splat()` method like this:\n", - "\n", - "```mojo\n", - "GenericArray[Float64].splat(8, 0)\n", - "```\n", - "\n", - "The method returns an instance of `GenericArray[Float64]`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conditional conformance\n", - "\n", - "When creating a generic struct, you might want to define some methods that\n", - "require extra features. For example, consider a collection like `GenericArray`\n", - "that holds instances of `CollectionElement`. The `CollectionElement` trait\n", - "only requires that the stored data type be copyable and movable. This\n", - "imposes a lot of limitations: you can't implement a `sort()` method because\n", - "you can't guarantee that the stored type supports the comparison operators; you can't\n", - "write a useful `__str__()` or `__repr__()` dunder method because you can't\n", - "guarantee that the stored type supports conversion to a string.\n", - "\n", - "The answer to these issues is _conditional conformance_, which lets you define a \n", - "method that requires additional features. You do this by defining the `self`\n", - "value that has a more specific bound on one or more of its parameters. \n", - "\n", - "For example, the following code defines a `Container` type that holds an\n", - "instance of `CollectionElement`. It also defines a `__str__()` method that can \n", - "only be called if the stored `ElementType` conforms to \n", - "`StringableCollectionElement`:" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "Hello\n" - ] - } - ], - "source": [ - "@value\n", - "struct Container[ElementType: CollectionElement]:\n", - " var element: ElementType\n", - "\n", - " def __str__[StrElementType: StringableCollectionElement, //](\n", - " self: Container[StrElementType]) -> String:\n", - " return str(self.element)\n", - "\n", - "def use_container():\n", - " float_container = Container(5)\n", - " string_container = Container(\"Hello\")\n", - " print(float_container.__str__())\n", - " print(string_container.__str__())\n", - "\n", - "use_container()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note the signature of the `__str__()` method, which declares the `self` argument\n", - "with a more specific type. Specifically, it declares that it takes a `Container`\n", - "with an `ElementType` that conforms to the `StringableCollectionElement` trait.\n", - "\n", - "```mojo\n", - "def __str__[StrElementType: StringableCollectionElement, //](\n", - " self: Container[StrElementType]) -> String:\n", - "```\n", - "\n", - "This trait must be a superset of `ElementType`'s original trait: for example,\n", - "`StringableCollectionElement` inherits from `CollectionElement`, so it includes\n", - "all of requirements of the original trait.\n", - "\n", - "Note that the `use_container()` function calls the `__str__()` method directly,\n", - "rather than calling `str(float_container)`. One current limitation of\n", - "conditional conformance is that Mojo can't recognize the struct\n", - "`Container[Int]` as conforming to `Stringable`, even though the `__str__()`\n", - "method is implemented for any `ElementType` that's also `Stringable`." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Case study: the SIMD type\n", - "\n", - "For a real-world example of a parameterized type, let's look at the \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type from Mojo's standard library.\n", - "\n", - "[Single instruction, multiple data (SIMD)](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data) is a parallel processing technology built into many modern CPUs,\n", - "GPUs, and custom accelerators. SIMD allows you to perform a single operation on\n", - "multiple pieces of data at once. For example, if you want to take the square \n", - "root of each element in an array, you can use SIMD to parallelize the work. \n", - "\n", - "Processors implement SIMD using low-level vector registers in hardware that hold\n", - "multiple instances of a scalar data type. In order to use the SIMD instructions\n", - "on these processors, the data must be shaped into the proper SIMD width\n", - "(data type) and length (vector size). Processors may support 512-bit or\n", - "longer SIMD vectors, and support many data types from 8-bit integers to 64-bit \n", - "floating point numbers, so it's not practical to define all of the possible SIMD\n", - "variations. \n", - "\n", - "Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct)\n", - "exposes the common SIMD operations through its methods, and makes the SIMD data type\n", - "and size values parametric. This allows you to directly map your data to the \n", - "SIMD vectors on any hardware.\n", - "\n", - "Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition:\n", - "\n", - "```mojo\n", - "struct SIMD[type: DType, size: Int]:\n", - " var value: … # Some low-level MLIR stuff here\n", - "\n", - " # Create a new SIMD from a number of scalars\n", - " fn __init__(out self, *elems: SIMD[type, 1]): ...\n", - "\n", - " # Fill a SIMD with a duplicated scalar value.\n", - " @staticmethod\n", - " fn splat(x: SIMD[type, 1]) -> SIMD[type, size]: ...\n", - "\n", - " # Cast the elements of the SIMD to a different elt type.\n", - " fn cast[target: DType](self) -> SIMD[target, size]: ...\n", - "\n", - " # Many standard operators are supported.\n", - " fn __add__(self, rhs: Self) -> Self: ...\n", - "```\n", - "\n", - "So you can create and use a SIMD vector like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 4 9 16 " - ] - } - ], - "source": [ - "var vector = SIMD[DType.int16, 4](1, 2, 3, 4)\n", - "vector = vector * vector\n", - "for i in range(4):\n", - " print(vector[i], end=\" \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, a simple arithmetic operator like `*` applied to a pair of \n", - "`SIMD` vector operates on the corresponding elements in each vector.\n", - "\n", - "Defining each SIMD variant with parameters is great for code reuse because the\n", - "`SIMD` type can express all the different vector variants statically, instead of\n", - "requiring the language to pre-define every variant.\n", - "\n", - "Because `SIMD` is a parameterized type, the `self` argument in its functions\n", - "carries those parameters—the full type name is `SIMD[type, size]`. Although\n", - "it's valid to write this out (as shown in the return type of `splat()`), this\n", - "can be verbose, so we recommend using the `Self` type (from\n", - "[PEP673](https://peps.python.org/pep-0673/)) like the `__add__` example does." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Overloading on parameters\n", - "\n", - "Functions and methods can be overloaded on their parameter signatures. The\n", - "overload resolution logic filters for candidates according to the following\n", - "rules, in order of precedence:\n", - "\n", - "1) Candidates with the minimal number of implicit conversions (in both arguments\n", - "and parameters).\n", - "2) Candidates without variadic arguments.\n", - "3) Candidates without variadic parameters.\n", - "4) Candidates with the shortest parameter signature.\n", - "5) Non-`@staticmethod` candidates (over `@staticmethod` ones, if available). \n", - "\n", - "If there is more than one candidate after applying these rules, the overload\n", - "resolution fails. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "foo[x: MyInt, a: Int]()\n", - "bar[a: Int](b: Int)\n", - "bar[*a: Int](b: Int)\n" - ] - } - ], - "source": [ - "@register_passable(\"trivial\")\n", - "struct MyInt:\n", - " \"\"\"A type that is implicitly convertible to `Int`.\"\"\"\n", - " var value: Int\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __init__(out self, _a: Int):\n", - " self.value = _a\n", - "\n", - "fn foo[x: MyInt, a: Int]():\n", - " print(\"foo[x: MyInt, a: Int]()\")\n", - "\n", - "fn foo[x: MyInt, y: MyInt]():\n", - " print(\"foo[x: MyInt, y: MyInt]()\")\n", - "\n", - "fn bar[a: Int](b: Int):\n", - " print(\"bar[a: Int](b: Int)\")\n", - "\n", - "fn bar[a: Int](*b: Int):\n", - " print(\"bar[a: Int](*b: Int)\")\n", - "\n", - "fn bar[*a: Int](b: Int):\n", - " print(\"bar[*a: Int](b: Int)\")\n", - "\n", - "fn parameter_overloads[a: Int, b: Int, x: MyInt]():\n", - " # `foo[x: MyInt, a: Int]()` is called because it requires no implicit\n", - " # conversions, whereas `foo[x: MyInt, y: MyInt]()` requires one.\n", - " foo[x, a]()\n", - "\n", - " # `bar[a: Int](b: Int)` is called because it does not have variadic\n", - " # arguments or parameters.\n", - " bar[a](b)\n", - "\n", - " # `bar[*a: Int](b: Int)` is called because it has variadic parameters.\n", - " bar[a, a, a](b)\n", - "\n", - "parameter_overloads[1, 2, MyInt(3)]()\n", - "\n", - "struct MyStruct:\n", - " fn __init__(out self):\n", - " pass\n", - "\n", - " fn foo(inout self):\n", - " print(\"calling instance method\")\n", - "\n", - " @staticmethod\n", - " fn foo():\n", - " print(\"calling static method\")\n", - "\n", - "fn test_static_overload():\n", - " var a = MyStruct()\n", - " # `foo(inout self)` takes precedence over a static method.\n", - " a.foo()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using parameterized types and functions\n", - "\n", - "You can use parametric types and functions by passing values to the\n", - "parameters in square brackets. For example, for the `SIMD` type above, `type`\n", - "specifies the data type and `size` specifies the length of the SIMD vector (it\n", - "must be a power of 2):" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "small_vec type: float32 length: 4\n", - "bigger_vec2 type: float32 length: 32\n" - ] - } - ], - "source": [ - "# Make a vector of 4 floats.\n", - "var small_vec = SIMD[DType.float32, 4](1.0, 2.0, 3.0, 4.0)\n", - "\n", - "# Make a big vector containing 1.0 in float16 format.\n", - "var big_vec = SIMD[DType.float16, 32](1.0)\n", - "\n", - "# Do some math and convert the elements to float32.\n", - "var bigger_vec = (big_vec+big_vec).cast[DType.float32]()\n", - "\n", - "# You can write types out explicitly if you want of course.\n", - "var bigger_vec2 : SIMD[DType.float32, 32] = bigger_vec\n", - "\n", - "print('small_vec type:', small_vec.element_type, 'length:', len(small_vec))\n", - "print('bigger_vec2 type:', bigger_vec2.element_type, 'length:', len(bigger_vec2))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the `cast()` method also needs a parameter to specify the type you\n", - "want from the cast (the method definition above expects a `target` parametric\n", - "value). Thus, just as the `SIMD` struct is a generic type definition, the\n", - "`cast()` method is a generic method definition. At compile time, the compiler\n", - "creates a concrete version of the `cast()` method with the target parameter\n", - "bound to `DType.float32`.\n", - "\n", - "The code above shows the use of concrete types (that is, the parameters are all\n", - "bound to known values). But the major power of parameters comes from the\n", - "ability to define parametric algorithms and types (code that uses the parameter\n", - "values). For example, here's how to define a parametric algorithm with `SIMD`\n", - "that is type- and width-agnostic:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.154296875, 0.154296875, 0.154296875, 0.154296875]\n" - ] - } - ], - "source": [ - "from math import sqrt\n", - "\n", - "fn rsqrt[dt: DType, width: Int](x: SIMD[dt, width]) -> SIMD[dt, width]:\n", - " return 1 / sqrt(x)\n", - "\n", - "var v = SIMD[DType.float16, 4](42)\n", - "print(rsqrt(v))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the `x` argument is actually a `SIMD` type based on the function\n", - "parameters. The runtime program can use the value of the parameters, because the\n", - "parameters are resolved at compile-time before they are needed by the runtime\n", - "program (but compile-time parameter expressions cannot use runtime values).\n", - "\n", - "### Parameter inference\n", - "\n", - "The Mojo compiler can often _infer_ parameter values, so you don't always have\n", - "to specify them. For example, you can call the `rsqrt()` function defined above\n", - "without any parameters:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.174072265625, 0.174072265625, 0.174072265625, 0.174072265625]\n" - ] - } - ], - "source": [ - "var v = SIMD[DType.float16, 4](33)\n", - "print(rsqrt(v))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "The compiler infers its parameters based on the parametric `v`\n", - "value passed into it, as if you wrote `rsqrt[DType.float16, 4](v)` explicitly.\n", - "\n", - "Mojo can also infer the values of struct parameters from the arguments passed to \n", - "a constructor or static method.\n", - "\n", - "For example, consider the following struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct One[Type: StringableCollectionElement]:\n", - " var value: Type\n", - "\n", - " fn __init__(out self, value: Type):\n", - " self.value = value\n", - "\n", - "def use_one():\n", - " s1 = One(123)\n", - " s2 = One(\"Hello\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that you can create an instance of `One` without specifying the `Type`\n", - "parameter—Mojo can infer it from the `value` argument.\n", - "\n", - "You can also infer parameters from a parameterized type passed to a constructor\n", - "or static method:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "infer me\n", - "🔥 1 2\n" - ] - } - ], - "source": [ - "struct Two[Type: StringableCollectionElement]:\n", - " var val1: Type\n", - " var val2: Type\n", - "\n", - " fn __init__(out self, one: One[Type], another: One[Type]):\n", - " self.val1 = one.value\n", - " self.val2 = another.value\n", - " print(str(self.val1), str(self.val2))\n", - "\n", - " @staticmethod\n", - " fn fire(thing1: One[Type], thing2: One[Type]):\n", - " print(\"🔥\", str(thing1.value), str(thing2.value))\n", - "\n", - "def use_two():\n", - " s3 = Two(One(\"infer\"), One(\"me\"))\n", - " Two.fire(One(1), One(2))\n", - "\n", - "use_two()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`Two` takes a `Type` parameter, and its constructor takes values of type\n", - "`One[Type]`. When constructing an instance of `Two`, you don't need to specify\n", - "the `Type` parameter, since it can be inferred from the arguments.\n", - "\n", - "Similarly, the static `fire()` method takes values of type `One[Type]`, so Mojo\n", - "can infer the `Type` value at compile time.\n", - "\n", - ":::note\n", - "\n", - "If you're familiar with C++, you may recognize this as similar to Class Template\n", - "Argument Deduction (CTAD).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optional parameters and keyword parameters\n", - "\n", - "Just as you can specify [optional\n", - "arguments](/mojo/manual/functions#optional-arguments) in function signatures,\n", - "you can also define an optional _parameter_ by giving it a default value.\n", - "\n", - "You can also pass parameters by keyword, just like you can use \n", - "[keyword arguments](/mojo/manual/functions#keyword-arguments).\n", - "For a function or struct with multiple optional parameters, using keywords\n", - "allows you to pass only the parameters you want to specify, regardless of\n", - "their position in the function signature. \n", - "\n", - "For example, here's a function with two parameters, each with a default value:" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "fn speak[a: Int = 3, msg: StringLiteral = \"woof\"]():\n", - " print(msg, a)\n", - "\n", - "fn use_defaults() raises:\n", - " speak() # prints 'woof 3'\n", - " speak[5]() # prints 'woof 5'\n", - " speak[7, \"meow\"]() # prints 'meow 7'\n", - " speak[msg=\"baaa\"]() # prints 'baaa 3'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Recall that when a parametric function is called, Mojo can infer the parameter values.\n", - "That is, it can use the parameter values attached to an argument value (see the `sqrt[]()`\n", - "example above). If the parametric function also has a default value defined,\n", - "then the inferred parameter type takes precedence.\n", - "\n", - "For example, in the following code, we update the parametric `speak[]()` function\n", - "to take an argument with a parametric type. Although the function has a default\n", - "parameter value for `a`, Mojo instead uses the inferred `a` parameter value\n", - "from the `bar` argument (as written, the default `a` value can never be used,\n", - "but this is just for demonstration purposes):" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Bar[v: Int]:\n", - " pass\n", - "\n", - "fn speak[a: Int = 3, msg: StringLiteral = \"woof\"](bar: Bar[a]):\n", - " print(msg, a)\n", - "\n", - "fn use_inferred():\n", - " speak(Bar[9]()) # prints 'woof 9'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned above, you can also use optional parameters and keyword \n", - "parameters in a struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "struct KwParamStruct[greeting: String = \"Hello\", name: String = \"🔥mojo🔥\"]:\n", - " fn __init__(out self):\n", - " print(greeting, name)\n", - "\n", - "fn use_kw_params():\n", - " var a = KwParamStruct[]() # prints 'Hello 🔥mojo🔥'\n", - " var b = KwParamStruct[name=\"World\"]() # prints 'Hello World'\n", - " var c = KwParamStruct[greeting=\"Hola\"]() # prints 'Hola 🔥mojo🔥'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Mojo supports positional-only and keyword-only parameters, following the same\n", - "rules as [positional-only and keyword-only\n", - "arguments](/mojo/manual/functions#positional-only-and-keyword-only-arguments).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Infer-only parameters\n", - "\n", - "Sometimes you need to declare functions where parameters depend on other\n", - "parameters. Because the signature is processed left to right, a parameter can\n", - "only _depend_ on a parameter earlier in the parameter list. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Value: 2.2000000000000002\n", - "Value is floating-point: True\n" - ] - } - ], - "source": [ - "fn dependent_type[dtype: DType, value: Scalar[dtype]]():\n", - " print(\"Value: \", value)\n", - " print(\"Value is floating-point: \", dtype.is_floating_point())\n", - "\n", - "dependent_type[DType.float64, Float64(2.2)]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can't reverse the position of the `dtype` and `value` parameters, because\n", - "`value` depends on `dtype`. However, because `dtype` is a required parameter,\n", - "you can't leave it out of the parameter list and let Mojo infer it from `value`:\n", - "\n", - "```mojo\n", - "dependent_type[Float64(2.2)]() # Error!\n", - "```\n", - "\n", - "Infer-only parameters are a special class of parameters that are **always** \n", - "inferred from context. Infer-only parameters are placed at the **beginning** of\n", - "the parameter list, set off from other parameters by the `//` sigil:\n", - "\n", - "```mojo\n", - "fn example[type: CollectionElement, //, list: List[type]]()\n", - "```\n", - "\n", - "Transforming `dtype` into an infer-only parameter solves this problem:" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Value: 2.2000000000000002\n", - "Value is floating-point: True\n" - ] - } - ], - "source": [ - "fn dependent_type[dtype: DType, //, value: Scalar[dtype]]():\n", - " print(\"Value: \", value)\n", - " print(\"Value is floating-point: \", dtype.is_floating_point())\n", - "\n", - "dependent_type[Float64(2.2)]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Because infer-only parameters are declared at the beginning of the parameter\n", - "list, other parameters can depend on them, and the compiler will always attempt\n", - "to infer the infer-only values from bound parameters or arguments.\n", - "\n", - "If the compiler can't infer the value of an infer-only parameter, compilation\n", - "fails." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variadic parameters\n", - "\n", - "Mojo also supports variadic parameters, similar to \n", - "[Variadic arguments](/mojo/manual/functions#variadic-arguments):" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyTensor[*dimensions: Int]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Variadic parameters currently have some limitations that variadic arguments don't have:\n", - "\n", - "- Variadic parameters must be homogeneous—that is, all the values must be the\n", - " same type. \n", - " \n", - "- The parameter type must be register-passable.\n", - "\n", - "- The parameter values aren't automatically projected into a `VariadicList`, so you\n", - " need to construct the list explicitly:" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum_params[*values: Int]() -> Int:\n", - " alias list = VariadicList(values)\n", - " var sum = 0\n", - " for v in list:\n", - " sum += v\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Variadic keyword parameters (for example, `**kwparams`) are\n", - "not supported yet." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameter expressions are just Mojo code\n", - "\n", - "A parameter expression is any code expression (such as `a+b`) that occurs where\n", - "a parameter is expected. Parameter expressions support operators and function\n", - "calls, just like runtime code, and all parameter types use the same type\n", - "system as the runtime program (such as `Int` and `DType`).\n", - "\n", - "Because parameter expressions use the same grammar and types as runtime\n", - "Mojo code, you can use many \n", - "[\"dependent type\"](https://en.wikipedia.org/wiki/Dependent_type) features. For\n", - "example, you might want to define a helper function to concatenate two SIMD\n", - "vectors:" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "result type: float32 length: 4\n" - ] - } - ], - "source": [ - "fn concat[ty: DType, len1: Int, len2: Int](\n", - " lhs: SIMD[ty, len1], rhs: SIMD[ty, len2]) -> SIMD[ty, len1+len2]:\n", - "\n", - " var result = SIMD[ty, len1 + len2]()\n", - " for i in range(len1):\n", - " result[i] = SIMD[ty, 1](lhs[i])\n", - " for j in range(len2):\n", - " result[len1 + j] = SIMD[ty, 1](rhs[j])\n", - " return result\n", - "\n", - "var a = SIMD[DType.float32, 2](1, 2)\n", - "var x = concat(a, a)\n", - "\n", - "print('result type:', x.element_type, 'length:', len(x))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the resulting length is the sum of the input vector lengths, and this is expressed with a simple `+` operation. \n", - "\n", - "### Powerful compile-time programming\n", - "\n", - "While simple expressions are useful, sometimes you want to write imperative\n", - "compile-time logic with control flow. You can even do compile-time recursion.\n", - "For instance, here is an example \"tree reduction\" algorithm that sums all\n", - "elements of a vector recursively into a scalar:" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n", - "Elements sum: 10\n" - ] - } - ], - "source": [ - "fn slice[ty: DType, new_size: Int, size: Int](\n", - " x: SIMD[ty, size], offset: Int) -> SIMD[ty, new_size]:\n", - " var result = SIMD[ty, new_size]()\n", - " for i in range(new_size):\n", - " result[i] = SIMD[ty, 1](x[i + offset])\n", - " return result\n", - "\n", - "fn reduce_add[ty: DType, size: Int](x: SIMD[ty, size]) -> Int:\n", - " @parameter\n", - " if size == 1:\n", - " return int(x[0])\n", - " elif size == 2:\n", - " return int(x[0]) + int(x[1])\n", - "\n", - " # Extract the top/bottom halves, add them, sum the elements.\n", - " alias half_size = size // 2\n", - " var lhs = slice[ty, half_size, size](x, 0)\n", - " var rhs = slice[ty, half_size, size](x, half_size)\n", - " return reduce_add[ty, half_size](lhs + rhs)\n", - "\n", - "var x = SIMD[DType.index, 4](1, 2, 3, 4)\n", - "print(x)\n", - "print(\"Elements sum:\", reduce_add(x))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to create a parametric if condition, which is an `if` statement that\n", - "runs at compile-time. It requires that its condition be a valid parameter\n", - "expression, and ensures that only the live branch of the `if` statement is\n", - "compiled into the program. (This is similar to use of the `@parameter` decorator\n", - "with a `for` loop shown earlier.)\n", - "\n", - "## Mojo types are just parameter expressions\n", - "\n", - "While we've shown how you can use parameter expressions within types, type\n", - "annotations can themselves be arbitrary expressions (just like in Python).\n", - "Types in Mojo have a special metatype type, allowing type-parametric algorithms\n", - "and functions to be defined. \n", - "\n", - "For example, we can create a simplified `Array` that supports arbitrary types of\n", - "elements (via the `AnyTrivialRegType` parameter):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct Array[T: AnyTrivialRegType]:\n", - " var data: UnsafePointer[T]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, size: Int, value: T):\n", - " self.size = size\n", - " self.data = UnsafePointer[T].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(value)\n", - "\n", - " fn __getitem__(self, i: Int) -> T:\n", - " return self.data[i]\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - "var v = Array[Float32](4, 3.14)\n", - "print(v[0], v[1], v[2], v[3])" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the `T` parameter is being used as the formal type for the\n", - "`value` arguments and the return type of the `__getitem__()` function. \n", - "Parameters allow the `Array` type to provide different APIs based on the\n", - "different use-cases. \n", - "\n", - "There are many other cases that benefit from more advanced use of parameters.\n", - "For example, you can execute a closure N times in parallel, feeding in a value\n", - "from the context, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [], - "source": [ - "fn parallelize[func: fn (Int) -> None](num_work_items: Int):\n", - " # Not actually parallel: see the 'algorithm' module for real implementation.\n", - " for i in range(num_work_items):\n", - " func(i)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another example where this is important is with variadic generics, where an\n", - "algorithm or data structure may need to be defined over a list of heterogeneous\n", - "types such as for a tuple. Right now, this is not fully supported in Mojo and \n", - "requires writing some MLIR by hand. In the future, this will be possible in pure\n", - "Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `alias`: named parameter expressions\n", - "\n", - "It is very common to want to *name* compile-time values. Whereas `var` defines a\n", - "runtime value, we need a way to define a\n", - "compile-time temporary value. For this, Mojo uses an `alias` declaration. \n", - "\n", - "For example, the [`DType`](/mojo/stdlib/builtin/dtype/DType) struct \n", - "implements a simple enum using aliases for the enumerators like this (the actual\n", - "`DType` implementation details vary a bit):\n", - "\n", - "```mojo\n", - "struct DType:\n", - " var value : UI8\n", - " alias invalid = DType(0)\n", - " alias bool = DType(1)\n", - " alias int8 = DType(2)\n", - " alias uint8 = DType(3)\n", - " alias int16 = DType(4)\n", - " alias int16 = DType(5)\n", - " ...\n", - " alias float32 = DType(15)\n", - "```\n", - "\n", - "This allows clients to use `DType.float32` as a parameter expression (which also\n", - "works as a runtime value) naturally. Note that this is invoking the\n", - "runtime constructor for `DType` at compile-time.\n", - "\n", - "Types are another common use for aliases. Because types are compile-time\n", - "expressions, it is handy to be able to do things like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "alias Float16 = SIMD[DType.float16, 1]\n", - "alias UInt8 = SIMD[DType.uint8, 1]\n", - "\n", - "var x: Float16 = 0 # Float16 works like a \"typedef\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Like `var` variables, aliases obey scope, and you can use local aliases within\n", - "functions as you'd expect." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fully-bound, partially-bound, and unbound types\n", - "\n", - "A parametric type with its parameters specified is said to be _fully-bound_. \n", - "That is, all of its parameters are bound to values. As mentioned before, you can\n", - "only instantiate a fully-bound type (sometimes called a _concrete type_).\n", - "\n", - "However, parametric types can be _unbound_ or _partially bound_ in some\n", - "contexts. For example, you can alias a partially-bound type to create a new type\n", - "that requires fewer parameters:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import Dict\n", - "\n", - "alias StringKeyDict = Dict[String, _]\n", - "var b = StringKeyDict[UInt8]()\n", - "b[\"answer\"] = 42" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, `StringKeyDict` is a type alias for a `Dict` that takes `String` keys. The\n", - "underscore `_` in the parameter list indicates that the second parameter,\n", - "`V` (the value type), is unbound.\n", - "You specify the `V` parameter later, when you use `StringKeyDict`.\n", - "\n", - "For example, given the following type:" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyType[s: String, i: Int, i2: Int, b: Bool = True]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It can appear in code in the following forms:\n", - "\n", - "- _Fully bound_, with all of its parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[\"Hello\", 3, 4, True]\n", - " ```\n", - "\n", - "- _Partially bound_, with *some but not all* of its parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[\"Hola\", _, _, True]\n", - " ```\n", - "\n", - "- _Unbound_, with no parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[_, _, _, _]\n", - " ```\n", - "\n", - "You can also use the star-underscore expression `*_` to unbind an arbitrary\n", - "number of positional parameters at the end of a parameter\n", - "list.\n", - "\n", - "```mojo\n", - "# These two types are equivalent\n", - "MyType[\"Hello\", *_]\n", - "MyType[\"Hello\", _, _, _]\n", - "```\n", - "\n", - "When a parameter is explicitly unbound with the `_` or `*_` expression, you\n", - "**must** specify a value for that parameter to use the type. Any default value\n", - "from the original type declaration is ignored.\n", - "\n", - "Partially-bound and unbound parametric types can be used in some contexts where\n", - "the missing (unbound) parameters will be supplied later—such as in \n", - "[aliases](#alias-named-parameter-expressions) and\n", - "[automatically parameterized functions](#automatic-parameterization-of-functions).\n", - "\n", - "### Omitted parameters\n", - "\n", - "Mojo also supports an alternate format for unbound parameter where the parameter\n", - "is simply omitted from the expression:\n", - "\n", - "```mojo\n", - "# Partially bound\n", - "MyType[\"Hi there\"]\n", - "# Unbound\n", - "MyType\n", - "```\n", - "\n", - "This format differs from the explicit unbinding syntax described above in that\n", - "the default values for omitted parameters are bound immediately. For example, \n", - "the following expressions are equivalent: \n", - "\n", - "```mojo\n", - "MyType[\"Hi there\"]\n", - "# equivalent to\n", - "MyType[\"Hi there\", _, _, True] # Uses the default value for `b`\n", - "```\n", - "\n", - ":::note \n", - "\n", - "This format is currently supported for backwards compatibility. We intend to\n", - "deprecate this format in the future in favor of the explicit unbinding syntax.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Automatic parameterization of functions\n", - "\n", - "Mojo supports \"automatic\" parameterization of functions. If a function \n", - "argument type is a \n", - "[partially-bound or unbound type](#fully-bound-partially-bound-and-unbound-types),\n", - "the unbound parameters are automatically added as input parameters on the \n", - "function. This is easier to understand with an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "float64\n", - "4\n" - ] - } - ], - "source": [ - "fn print_params(vec: SIMD[*_]):\n", - " print(vec.type)\n", - " print(vec.size)\n", - "\n", - "var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0)\n", - "print_params(v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the above example, the `print_params` function is automatically \n", - "parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is\n", - "an [unbound parameterized\n", - "type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't\n", - "specify any parameter values for the type. Mojo treats the unbound parameters\n", - "on `vec` as implicit parameters on the function. This is roughly equivalent to\n", - "the following code, which includes _explicit_ input parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "fn print_params[t: DType, s: Int](vec: SIMD[t, s]):\n", - " print(vec.type)\n", - " print(vec.size)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "When you call `print_params()` you must pass it a concrete instance of the \n", - "`SIMD` type—that is, one with all of its parameters specified, like \n", - "`SIMD[DType.float64, 4]`. The Mojo compiler _infers_ the parameter \n", - "values from the input argument.\n", - "\n", - "With a manually parameterized function, you can access the input parameters by\n", - "name (for example, `t` and `s` in the previous example). For an\n", - "automatically parameterized function, you can access the parameters as\n", - "attributes on the argument (for example, `vec.type`). \n", - "\n", - "This ability to access a type's input parameters is not specific to \n", - "automatically parameterized functions, you can use it anywhere. You can access \n", - "the input parameters of a parameterized type as attributes on the type itself:" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [], - "source": [ - "fn on_type():\n", - " print(SIMD[DType.float32, 2].size) # prints 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or as attributes on an _instance_ of the type:" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "fn on_instance():\n", - " var x = SIMD[DType.int32, 2](4, 8)\n", - " print(x.type) # prints int32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can even use this syntax in the function's signature to define a \n", - "function's arguments and return type based on an argument's parameters.\n", - "For example, if you want your function to take two SIMD vectors with the same\n", - "type and size, you can write code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 0, 2, 0, 3, 0, 4, 0]\n" - ] - } - ], - "source": [ - "fn interleave(v1: SIMD, v2: __type_of(v1)) -> SIMD[v1.type, v1.size*2]:\n", - " var result = SIMD[v1.type, v1.size*2]()\n", - " for i in range(v1.size):\n", - " result[i*2] = SIMD[v1.type, 1](v1[i])\n", - " result[i*2+1] = SIMD[v1.type, 1](v2[i])\n", - " return result\n", - "\n", - "var a = SIMD[DType.int16, 4](1, 2, 3, 4)\n", - "var b = SIMD[DType.int16, 4](0, 0, 0, 0)\n", - "var c = interleave(a, b)\n", - "print(c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As shown in the example, you can use the magic `__type_of(x)` call if you just want to match the type of an argument. In this case, it's more convenient and compact that writing the equivalent `SIMD[v1.type, v1.size]`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Automatic parameterization with partially-bound types\n", - "\n", - "Mojo also supports automatic parameterization: with [partially-bound\n", - "parameterized types](#fully-bound-partially-bound-and-unbound-types) (that is,\n", - "types with some but not all of the parameters specified).\n", - "\n", - "For example, suppose we have a `Fudge` struct with three parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Fudge[sugar: Int, cream: Int, chocolate: Int = 7](Stringable):\n", - " fn __str__(self) -> String:\n", - " return str(\"Fudge (\") + str(sugar) + \",\" +\n", - " str(cream) + \",\" + str(chocolate) + \")\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can write a function that takes a `Fudge` argument with just one bound \n", - "parameter (it's _partially bound_):" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "fn eat(f: Fudge[5, *_]):\n", - " print(\"Ate \" + str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `eat()` function takes a `Fudge` struct with the first parameter (`sugar`)\n", - "bound to the value 5. The second and third parameters, `cream` and `chocolate`\n", - "are unbound.\n", - "\n", - "The unbound `cream` and `chocolate` parameters become implicit input parameters\n", - "on the `eat` function. In practice, this is roughly equivalent to writing:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "fn eat[cr: Int, ch: Int](f: Fudge[5, cr, ch]):\n", - " print(\"Ate\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In both cases, we can call the function by passing in an instance with the\n", - "`cream` and `chocolate` parameters bound:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ate Fudge (5,5,7)\n", - "Ate Fudge (5,8,9)\n" - ] - } - ], - "source": [ - "eat(Fudge[5, 5, 7]())\n", - "eat(Fudge[5, 8, 9]())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you try to pass in an argument with a `sugar` value other than 5,\n", - "compilation fails, because it doesn't match the argument type:\n", - "\n", - "```mojo\n", - "eat(Fudge[12, 5, 7]()) \n", - "# ERROR: invalid call to 'eat': argument #0 cannot be converted from 'Fudge[12, 5, 7]' to 'Fudge[5, 5, 7]'\n", - "```\n", - "\n", - "\n", - "You can also explicitly unbind individual parameters. This gives you \n", - "more freedom in specifying unbound parameters.\n", - "\n", - "For example, you might want to let the user specify values for `sugar` and \n", - "`chocolate`, and leave `cream` constant. To do this, replace each unbound\n", - "parameter value with a single underscore (`_`):" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour(f: Fudge[_, 6, _]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, the unbound parameters (`sugar` and `chocolate`) are added as implicit\n", - "input parameters on the function. This version is roughly equivalent to the\n", - "following code, where these two values are explicitly bound to the input \n", - "parameters, `su` and `ch`:" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour[su: Int, ch: Int](f: Fudge[su, 6, ch]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also specify parameters by keyword, or mix positional and keyword\n", - "parameters, so the following function is roughly equivalent to the previous one:\n", - "the first parameter, `sugar` is explicitly unbound with the underscore character.\n", - "The `chocolate` parameter is unbound using the keyword syntax, `chocolate=_`. \n", - "And `cream` is explicitly bound to the value 6:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour(f: Fudge[_, chocolate=_, cream=6]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All three versions of the `devour()` function work with the following calls:" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Devoured Fudge (3,6,9)\n", - "Devoured Fudge (4,6,8)\n" - ] - } - ], - "source": [ - "devour(Fudge[3, 6, 9]())\n", - "devour(Fudge[4, 6, 8]())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Legacy syntax (omitted parameters)\n", - "\n", - "You can also specify an unbound or partially-bound type by omitting parameters: \n", - "for example:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ate Fudge (5,4,7)\n" - ] - } - ], - "source": [ - "fn nibble(f: Fudge[5]):\n", - " print(\"Ate\", str(f))\n", - "\n", - "nibble(Fudge[5, 4, 7]())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, `Fudge[5]` works like `Fudge[5, *_]` **except** in the handling of\n", - "parameters with default values. Instead of discarding the default value of\n", - "`chocolate`, `Fudge[5]` binds the default value immediately, making it\n", - "equivalent to: `Fudge[5, _, 7]`.\n", - "\n", - "This means that the following code won't compile with the previous definition\n", - "for the `nibble()` function, since it doesn't use the default value for\n", - "`chocolate`:\n", - "\n", - "```mojo\n", - "nibble(Fudge[5, 5, 9]())\n", - "# ERROR: invalid call to 'nibble': argument #0 cannot be converted from 'Fudge[5, 5, 9]' to 'Fudge[5, 5, 7]'\n", - "```\n", - "\n", - ":::note TODO\n", - "\n", - "Support for omitting unbound parameters will eventually be deprecated in\n", - "favor of explicitly unbound parameters using `_` and `*_`. \n", - "\n", - ":::\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `rebind()` builtin\n", - "\n", - "One of the consequences of Mojo not performing function instantiation in the\n", - "parser like C++ is that Mojo cannot always figure out whether some parametric\n", - "types are equal and complain about an invalid conversion. This typically occurs\n", - "in static dispatch patterns. For example, the following code won't compile:\n", - "\n", - "```mojo\n", - "fn take_simd8(x: SIMD[DType.float32, 8]):\n", - " pass\n", - "\n", - "fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]):\n", - " @parameter\n", - " if nelts == 8:\n", - " take_simd8(x)\n", - "```\n", - "\n", - "The parser will complain:\n", - "\n", - "```plaintext\n", - "error: invalid call to 'take_simd8': argument #0 cannot be converted from\n", - "'SIMD[f32, nelts]' to 'SIMD[f32, 8]'\n", - " take_simd8(x)\n", - " ~~~~~~~~~~^~~\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is because the parser fully type-checks the function without instantiation,\n", - "and the type of `x` is still `SIMD[f32, nelts]`, and not `SIMD[f32, 8]`, despite\n", - "the static conditional. The remedy is to manually \"rebind\" the type of `x`,\n", - "using the `rebind` builtin, which inserts a compile-time assert that the input\n", - "and result types resolve to the same type after function instantiation:" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "fn take_simd8(x: SIMD[DType.float32, 8]):\n", - " pass\n", - "\n", - "fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]):\n", - " @parameter\n", - " if nelts == 8:\n", - " take_simd8(rebind[SIMD[DType.float32, 8]](x))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx new file mode 100644 index 0000000000..fae5e5f72c --- /dev/null +++ b/docs/manual/parameters/index.mdx @@ -0,0 +1,1335 @@ +--- +title: "Parameterization: compile-time metaprogramming" +description: An introduction to parameters and compile-time metaprogramming. +--- + +Many languages have facilities for *metaprogramming*: that is, for writing code that +generates or modifies code. Python has facilities for dynamic metaprogramming: features +like decorators, metaclasses, and many more. These features make Python very flexible +and productive, but since they're dynamic, they come with runtime overhead. Other +languages have static or compile-time metaprogramming features, like C preprocessor +macros and C++ templates. These can be limiting and hard to use. + +To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use +metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same +language as runtime programs, so you don't have to learn a new language—just a few new +features. + +The main new feature is *parameters*. You can think of a parameter as a +compile-time variable that becomes a runtime constant. This usage of "parameter" +is probably different from what you're used to from other languages, where +"parameter" and "argument" are often used interchangeably. In Mojo, "parameter" +and "parameter expression" refer to compile-time values, and "argument" and +"expression" refer to runtime values. + +In Mojo, you can add parameters to a struct or function. You can also define +named parameter expressions—aliases—that you can use as runtime constants. + +## Parameterized functions + +To define a *parameterized function*, add parameters in square brackets ahead +of the argument list. Each parameter is formatted just like an argument: a +parameter name, followed by a colon and a type (which is required). In the +following example, the function has a single parameter, `count` of type `Int`. + +```mojo +fn repeat[count: Int](msg: String): + @parameter + for i in range(count): + print(msg) +``` + +The [`@parameter`](/mojo/manual/decorators/parameter) directive shown here +causes the `for` loop to be evaluated at compile time. The directive only works +if the loop limits are compile-time constants. Since `count` is a parameter, +`range(count)` can be calculated at compile time. + +Calling a parameterized function, you provide values for the parameters, just +like function arguments: + +```mojo +repeat[3]("Hello") +``` + +```output +Hello +Hello +Hello +``` + +The compiler resolves the parameter values during compilation, and creates a +concrete version of the `repeat[]()` function for each unique parameter value. +After resolving the parameter values and unrolling the loop, the `repeat[3]()` +function would be roughly equivalent to this: + +```mojo +fn repeat_3(msg: String): + print(msg) + print(msg) + print(msg) +``` + +:::note + +This doesn't represent actual code generated by the compiler. By the +time parameters are resolved, Mojo code has already been transformed to an +intermediate representation in [MLIR](https://mlir.llvm.org/). + +::: + +If the compiler can't resolve all parameter values to constant values, +compilation fails. + +## Parameters and generics + +"Generics" refers to functions that can act on multiple types of values, or +containers that can hold multiple types of values. For example, +[`List`](/mojo/stdlib/collections/list/List), can hold +different types of values, so you can have a list of `Int` values, or +a list of `String` values). + +In Mojo, generics use parameters to specify types. For example, `List` +takes a type parameter, so a vector of integers is written `List[Int]`. +So all generics use parameters, but **not** everything that uses parameters is a +generic. + +For example, the `repeat[]()` function in the previous section includes +parameter of type `Int`, and an argument of type `String`. It's parameterized, +but not generic. A generic function or struct is parameterized on *type*. For +example, we could rewrite `repeat[]()` to take any type of argument that +conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait: + +```mojo +fn repeat[MsgType: Stringable, count: Int](msg: MsgType): + @parameter + for i in range(count): + print(str(msg)) + +# Must use keyword parameter for `count` +repeat[count=2](42) +``` + +```output +42 +42 +``` + +This updated function takes any `Stringable` type, so you can pass it an `Int`, +`String`, or `Bool` value. + +You can't pass the `count` as a positional keyword without also specifying +`MsgType`. You can put `//` after `MsgType` to specify that it's always inferred +by the argument. Now you can pass the following parameter `count` positionally: + +```mojo +fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType): + @parameter + for i in range(count): + print(str(msg)) + +# MsgType is always inferred, so first positional keyword `2` is passed to `count` +repeat[2](42) +``` + +```output +42 +42 +``` + +Mojo's support for generics is still early. You can write generic functions like +this using traits and parameters. You can also write generic collections like +`List` and `Dict`. If you're interested in learning how these types work, you +can find the source code for the standard library collection types +[on GitHub](https://github.com/modularml/mojo/blob/nightly/stdlib/src/collections/). + +## Parameterized structs + +You can also add parameters to structs. You can use parameterized structs to +build generic collections. For example, a generic array type might include code +like this: + +```mojo +from memory import UnsafePointer + +struct GenericArray[ElementType: CollectionElement]: + var data: UnsafePointer[ElementType] + var size: Int + + fn __init__(out self, *elements: ElementType): + self.size = len(elements) + self.data = UnsafePointer[ElementType].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_move(elements[i]) + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn __getitem__(self, i: Int) raises -> ref [self] ElementType: + if (i < self.size): + return self.data[i] + else: + raise Error("Out of bounds") +``` + +This struct has a single parameter, `ElementType`, which is a placeholder for +the data type you want to store in the array, sometimes called a *type +parameter*. `ElementType` is typed as +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement), which is a +[trait](/mojo/manual/traits) representing any type that can be copied and moved. + +As with parameterized functions, you need to pass in parameter values when you +use a parameterized struct. In this case, when you create an instance of +`GenericArray`, you need to specify the type you want to store, like `Int`, or +`Float64`. (This is a little confusing, because the *parameter value* you're +passing in this case is a *type*. That's OK: a Mojo type is a valid compile-time +value.) + +You'll see that `ElementType` is used throughout the struct where you'd usually +see a type name. For example, as the formal type for the `elements` in the +constructor, and the return type of the `__getitem__()` method. + +Here's an example of using `GenericArray`: + +```mojo +var array = GenericArray[Int](1, 2, 3, 4) +for i in range(array.size): + print(array[i], end=" ") +``` + +```output +1 2 3 4 +``` + +A parameterized struct can use the `Self` type to represent a concrete instance +of the struct (that is, with all its parameters specified). For example, you +could add a static factory method to `GenericArray` with the following +signature: + +```mojo +struct GenericArray[ElementType: CollectionElement]: + ... + + @staticmethod + fn splat(count: Int, value: ElementType) -> Self: + # Create a new array with count instances of the given value +``` + +Here, `Self` is equivalent to writing `GenericArray[ElementType]`. That is, you +can call the `splat()` method like this: + +```mojo +GenericArray[Float64].splat(8, 0) +``` + +The method returns an instance of `GenericArray[Float64]`. + +### Conditional conformance + +When creating a generic struct, you might want to define some methods that +require extra features. For example, consider a collection like `GenericArray` +that holds instances of `CollectionElement`. The `CollectionElement` trait only +requires that the stored data type be copyable and movable. This imposes a lot +of limitations: you can't implement a `sort()` method because you can't +guarantee that the stored type supports the comparison operators; you can't +write a useful `__str__()` or `__repr__()` dunder method because you can't +guarantee that the stored type supports conversion to a string. + +The answer to these issues is *conditional conformance*, which lets you define a +method that requires additional features. You do this by defining the `self` +value that has a more specific bound on one or more of its parameters. + +For example, the following code defines a `Container` type that holds an +instance of `CollectionElement`. It also defines a `__str__()` method that can +only be called if the stored `ElementType` conforms to +`StringableCollectionElement`: + +```mojo +@value +struct Container[ElementType: CollectionElement]: + var element: ElementType + + def __str__[StrElementType: StringableCollectionElement, //]( + self: Container[StrElementType]) -> String: + return str(self.element) + +def use_container(): + float_container = Container(5) + string_container = Container("Hello") + print(float_container.__str__()) + print(string_container.__str__()) + +use_container() +``` + +```output +5 +Hello +``` + +Note the signature of the `__str__()` method, which declares the `self` argument +with a more specific type. Specifically, it declares that it takes a `Container` +with an `ElementType` that conforms to the `StringableCollectionElement` trait. + +```mojo +def __str__[StrElementType: StringableCollectionElement, //]( + self: Container[StrElementType]) -> String: +``` + +This trait must be a superset of `ElementType`'s original trait: for example, +`StringableCollectionElement` inherits from `CollectionElement`, so it includes +all of requirements of the original trait. + +Note that the `use_container()` function calls the `__str__()` method directly, +rather than calling `str(float_container)`. One current limitation of +conditional conformance is that Mojo can't recognize the struct +`Container[Int]` as conforming to `Stringable`, even though the `__str__()` +method is implemented for any `ElementType` that's also `Stringable`. + +### Case study: the SIMD type + +For a real-world example of a parameterized type, let's look at the +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type from Mojo's standard library. + +[Single instruction, multiple data (SIMD)](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data) is a parallel processing technology built into many modern CPUs, +GPUs, and custom accelerators. SIMD allows you to perform a single operation on +multiple pieces of data at once. For example, if you want to take the square +root of each element in an array, you can use SIMD to parallelize the work. + +Processors implement SIMD using low-level vector registers in hardware that hold +multiple instances of a scalar data type. In order to use the SIMD instructions +on these processors, the data must be shaped into the proper SIMD width +(data type) and length (vector size). Processors may support 512-bit or +longer SIMD vectors, and support many data types from 8-bit integers to 64-bit +floating point numbers, so it's not practical to define all of the possible SIMD +variations. + +Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct) +exposes the common SIMD operations through its methods, and makes the SIMD data +type and size values parametric. This allows you to directly map your data to +the SIMD vectors on any hardware. + +Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition: + +```mojo +struct SIMD[type: DType, size: Int]: + var value: … # Some low-level MLIR stuff here + + # Create a new SIMD from a number of scalars + fn __init__(out self, *elems: SIMD[type, 1]): ... + + # Fill a SIMD with a duplicated scalar value. + @staticmethod + fn splat(x: SIMD[type, 1]) -> SIMD[type, size]: ... + + # Cast the elements of the SIMD to a different elt type. + fn cast[target: DType](self) -> SIMD[target, size]: ... + + # Many standard operators are supported. + fn __add__(self, rhs: Self) -> Self: ... +``` + +So you can create and use a SIMD vector like this: + +```mojo +var vector = SIMD[DType.int16, 4](1, 2, 3, 4) +vector = vector * vector +for i in range(4): + print(vector[i], end=" ") +``` + +```output +1 4 9 16 +``` + +As you can see, a simple arithmetic operator like `*` applied to a pair of +`SIMD` vector operates on the corresponding elements in each vector. + +Defining each SIMD variant with parameters is great for code reuse because the +`SIMD` type can express all the different vector variants statically, instead of +requiring the language to pre-define every variant. + +Because `SIMD` is a parameterized type, the `self` argument in its functions +carries those parameters—the full type name is `SIMD[type, size]`. Although +it's valid to write this out (as shown in the return type of `splat()`), this +can be verbose, so we recommend using the `Self` type (from +[PEP673](https://peps.python.org/pep-0673/)) like the `__add__` example does. + +## Overloading on parameters + +Functions and methods can be overloaded on their parameter signatures. The +overload resolution logic filters for candidates according to the following +rules, in order of precedence: + +1. Candidates with the minimal number of implicit conversions (in both arguments + and parameters). +2. Candidates without variadic arguments. +3. Candidates without variadic parameters. +4. Candidates with the shortest parameter signature. +5. Non-`@staticmethod` candidates (over `@staticmethod` ones, if available). + +If there is more than one candidate after applying these rules, the overload +resolution fails. For example: + +```mojo +@register_passable("trivial") +struct MyInt: + """A type that is implicitly convertible to `Int`.""" + var value: Int + + @implicit + fn __init__(out self, _a: Int): + self.value = _a + +fn foo[x: MyInt, a: Int](): + print("foo[x: MyInt, a: Int]()") + +fn foo[x: MyInt, y: MyInt](): + print("foo[x: MyInt, y: MyInt]()") + +fn bar[a: Int](b: Int): + print("bar[a: Int](b: Int)") + +fn bar[a: Int](*b: Int): + print("bar[a: Int](*b: Int)") + +fn bar[*a: Int](b: Int): + print("bar[*a: Int](b: Int)") + +fn parameter_overloads[a: Int, b: Int, x: MyInt](): + # `foo[x: MyInt, a: Int]()` is called because it requires no implicit + # conversions, whereas `foo[x: MyInt, y: MyInt]()` requires one. + foo[x, a]() + + # `bar[a: Int](b: Int)` is called because it does not have variadic + # arguments or parameters. + bar[a](b) + + # `bar[*a: Int](b: Int)` is called because it has variadic parameters. + bar[a, a, a](b) + +parameter_overloads[1, 2, MyInt(3)]() + +struct MyStruct: + fn __init__(out self): + pass + + fn foo(mut self): + print("calling instance method") + + @staticmethod + fn foo(): + print("calling static method") + +fn test_static_overload(): + var a = MyStruct() + # `foo(mut self)` takes precedence over a static method. + a.foo() +``` + +```output +foo[x: MyInt, a: Int]() +bar[a: Int](b: Int) +bar[*a: Int](b: Int) +``` + +## Using parameterized types and functions + +You can use parametric types and functions by passing values to the +parameters in square brackets. For example, for the `SIMD` type above, `type` +specifies the data type and `size` specifies the length of the SIMD vector (it +must be a power of 2): + +```mojo +# Make a vector of 4 floats. +var small_vec = SIMD[DType.float32, 4](1.0, 2.0, 3.0, 4.0) + +# Make a big vector containing 1.0 in float16 format. +var big_vec = SIMD[DType.float16, 32](1.0) + +# Do some math and convert the elements to float32. +var bigger_vec = (big_vec+big_vec).cast[DType.float32]() + +# You can write types out explicitly if you want of course. +var bigger_vec2 : SIMD[DType.float32, 32] = bigger_vec + +print('small_vec type:', small_vec.element_type, 'length:', len(small_vec)) +print('bigger_vec2 type:', bigger_vec2.element_type, 'length:', len(bigger_vec2)) +``` + +```output +small_vec type: float32 length: 4 +bigger_vec2 type: float32 length: 32 +``` + +Note that the `cast()` method also needs a parameter to specify the type you +want from the cast (the method definition above expects a `target` parametric +value). Thus, just as the `SIMD` struct is a generic type definition, the +`cast()` method is a generic method definition. At compile time, the compiler +creates a concrete version of the `cast()` method with the target parameter +bound to `DType.float32`. + +The code above shows the use of concrete types (that is, the parameters are all +bound to known values). But the major power of parameters comes from the +ability to define parametric algorithms and types (code that uses the parameter +values). For example, here's how to define a parametric algorithm with `SIMD` +that is type- and width-agnostic: + +```mojo +from math import sqrt + +fn rsqrt[dt: DType, width: Int](x: SIMD[dt, width]) -> SIMD[dt, width]: + return 1 / sqrt(x) + +var v = SIMD[DType.float16, 4](42) +print(rsqrt(v)) +``` + +```output +[0.154296875, 0.154296875, 0.154296875, 0.154296875] +``` + +Notice that the `x` argument is actually a `SIMD` type based on the function +parameters. The runtime program can use the value of the parameters, because the +parameters are resolved at compile-time before they are needed by the runtime +program (but compile-time parameter expressions cannot use runtime values). + +### Parameter inference + +The Mojo compiler can often *infer* parameter values, so you don't always have +to specify them. For example, you can call the `rsqrt()` function defined above +without any parameters: + +```mojo +var v = SIMD[DType.float16, 4](33) +print(rsqrt(v)) +``` + +```output +[0.174072265625, 0.174072265625, 0.174072265625, 0.174072265625] +``` + +The compiler infers its parameters based on the parametric `v` +value passed into it, as if you wrote `rsqrt[DType.float16, 4](v)` explicitly. + +Mojo can also infer the values of struct parameters from the arguments passed to +a constructor or static method. + +For example, consider the following struct: + +```mojo +@value +struct One[Type: StringableCollectionElement]: + var value: Type + + fn __init__(out self, value: Type): + self.value = value + +def use_one(): + s1 = One(123) + s2 = One("Hello") +``` + +Note that you can create an instance of `One` without specifying the `Type` +parameter—Mojo can infer it from the `value` argument. + +You can also infer parameters from a parameterized type passed to a constructor +or static method: + +```mojo +struct Two[Type: StringableCollectionElement]: + var val1: Type + var val2: Type + + fn __init__(out self, one: One[Type], another: One[Type]): + self.val1 = one.value + self.val2 = another.value + print(str(self.val1), str(self.val2)) + + @staticmethod + fn fire(thing1: One[Type], thing2: One[Type]): + print("🔥", str(thing1.value), str(thing2.value)) + +def use_two(): + s3 = Two(One("infer"), One("me")) + Two.fire(One(1), One(2)) + +use_two() +``` + +```output +infer me +🔥 1 2 +``` + +`Two` takes a `Type` parameter, and its constructor takes values of type +`One[Type]`. When constructing an instance of `Two`, you don't need to specify +the `Type` parameter, since it can be inferred from the arguments. + +Similarly, the static `fire()` method takes values of type `One[Type]`, so Mojo +can infer the `Type` value at compile time. + +:::note + +If you're familiar with C++, you may recognize this as similar to Class Template +Argument Deduction (CTAD). + +::: + +## Optional parameters and keyword parameters + +Just as you can specify [optional +arguments](/mojo/manual/functions#optional-arguments) in function signatures, +you can also define an optional *parameter* by giving it a default value. + +You can also pass parameters by keyword, just like you can use +[keyword arguments](/mojo/manual/functions#keyword-arguments). +For a function or struct with multiple optional parameters, using keywords +allows you to pass only the parameters you want to specify, regardless of +their position in the function signature. + +For example, here's a function with two parameters, each with a default value: + +```mojo +fn speak[a: Int = 3, msg: StringLiteral = "woof"](): + print(msg, a) + +fn use_defaults() raises: + speak() # prints 'woof 3' + speak[5]() # prints 'woof 5' + speak[7, "meow"]() # prints 'meow 7' + speak[msg="baaa"]() # prints 'baaa 3' +``` + +Recall that when a parametric function is called, Mojo can infer the parameter values. +That is, it can use the parameter values attached to an argument value (see the +`sqrt[]()` example above). If the parametric function also has a default value defined, +then the inferred parameter type takes precedence. + +For example, in the following code, we update the parametric `speak[]()` function +to take an argument with a parametric type. Although the function has a default +parameter value for `a`, Mojo instead uses the inferred `a` parameter value +from the `bar` argument (as written, the default `a` value can never be used, +but this is just for demonstration purposes): + +```mojo +@value +struct Bar[v: Int]: + pass + +fn speak[a: Int = 3, msg: StringLiteral = "woof"](bar: Bar[a]): + print(msg, a) + +fn use_inferred(): + speak(Bar[9]()) # prints 'woof 9' +``` + +As mentioned above, you can also use optional parameters and keyword +parameters in a struct: + +```mojo +struct KwParamStruct[greeting: String = "Hello", name: String = "🔥mojo🔥"]: + fn __init__(out self): + print(greeting, name) + +fn use_kw_params(): + var a = KwParamStruct[]() # prints 'Hello 🔥mojo🔥' + var b = KwParamStruct[name="World"]() # prints 'Hello World' + var c = KwParamStruct[greeting="Hola"]() # prints 'Hola 🔥mojo🔥' +``` + +:::note + +Mojo supports positional-only and keyword-only parameters, following the same +rules as [positional-only and keyword-only +arguments](/mojo/manual/functions#positional-only-and-keyword-only-arguments). + +::: + +## Infer-only parameters + +Sometimes you need to declare functions where parameters depend on other +parameters. Because the signature is processed left to right, a parameter can +only *depend* on a parameter earlier in the parameter list. For example: + +```mojo +fn dependent_type[dtype: DType, value: Scalar[dtype]](): + print("Value: ", value) + print("Value is floating-point: ", dtype.is_floating_point()) + +dependent_type[DType.float64, Float64(2.2)]() +``` + +```output +Value: 2.2000000000000002 +Value is floating-point: True +``` + +You can't reverse the position of the `dtype` and `value` parameters, because +`value` depends on `dtype`. However, because `dtype` is a required parameter, +you can't leave it out of the parameter list and let Mojo infer it from `value`: + +```mojo +dependent_type[Float64(2.2)]() # Error! +``` + +Infer-only parameters are a special class of parameters that are **always** either +inferred from context or specified by keyword. Infer-only parameters are placed at the +**beginning** of the parameter list, set off from other parameters by the `//` sigil: + +```mojo +fn example[type: CollectionElement, //, list: List[type]]() +``` + +Transforming `dtype` into an infer-only parameter solves this problem: + +```mojo +fn dependent_type[dtype: DType, //, value: Scalar[dtype]](): + print("Value: ", value) + print("Value is floating-point: ", dtype.is_floating_point()) + +dependent_type[Float64(2.2)]() +``` + +```output +Value: 2.2000000000000002 +Value is floating-point: True +``` + +Because infer-only parameters are declared at the beginning of the parameter +list, other parameters can depend on them, and the compiler will always attempt +to infer the infer-only values from bound parameters or arguments. + +There are sometimes cases where it's useful to specify an infer-only parameter by +keyword. For example, the [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) +type is parametric on [origin](/mojo/manual/values/lifetimes): + +```mojo +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... +``` + +Here, the `StringSlice` `is_mutable` parameter is infer-only. The value is usually +inferred when you create an instance of `StringSlice`. Binding the `is_mutable` +parameter by keyword lets you define a new type that's constrained to an +immutable origin: + +```mojo +alias ImmutableStringSlice = StringSlice[is_mutable=False] +``` + +If the compiler can't infer the value of an infer-only parameter, and it's not +specified by keyword, compilation fails. + +## Variadic parameters + +Mojo also supports variadic parameters, similar to +[Variadic arguments](/mojo/manual/functions#variadic-arguments): + +```mojo +struct MyTensor[*dimensions: Int]: + pass +``` + +Variadic parameters currently have some limitations that variadic arguments don't have: + +* Variadic parameters must be homogeneous—that is, all the values must be the + same type. + +* The parameter type must be register-passable. + +* The parameter values aren't automatically projected into a `VariadicList`, so you + need to construct the list explicitly: + +```mojo +fn sum_params[*values: Int]() -> Int: + alias list = VariadicList(values) + var sum = 0 + for v in list: + sum += v + return sum +``` + +Variadic keyword parameters (for example, `**kwparams`) are +not supported yet. + +## Parameter expressions are just Mojo code + +A parameter expression is any code expression (such as `a+b`) that occurs where +a parameter is expected. Parameter expressions support operators and function +calls, just like runtime code, and all parameter types use the same type +system as the runtime program (such as `Int` and `DType`). + +Because parameter expressions use the same grammar and types as runtime +Mojo code, you can use many +["dependent type"](https://en.wikipedia.org/wiki/Dependent_type) features. For +example, you might want to define a helper function to concatenate two SIMD +vectors: + +```mojo +fn concat[ty: DType, len1: Int, len2: Int]( + lhs: SIMD[ty, len1], rhs: SIMD[ty, len2]) -> SIMD[ty, len1+len2]: + + var result = SIMD[ty, len1 + len2]() + for i in range(len1): + result[i] = SIMD[ty, 1](lhs[i]) + for j in range(len2): + result[len1 + j] = SIMD[ty, 1](rhs[j]) + return result + +var a = SIMD[DType.float32, 2](1, 2) +var x = concat(a, a) + +print('result type:', x.element_type, 'length:', len(x)) +``` + +```output +result type: float32 length: 4 +``` + +Note that the resulting length is the sum of the input vector lengths, and this is +expressed with a simple `+` operation. + +### Powerful compile-time programming + +While simple expressions are useful, sometimes you want to write imperative +compile-time logic with control flow. You can even do compile-time recursion. +For instance, here is an example "tree reduction" algorithm that sums all +elements of a vector recursively into a scalar: + +```mojo +fn slice[ty: DType, new_size: Int, size: Int]( + x: SIMD[ty, size], offset: Int) -> SIMD[ty, new_size]: + var result = SIMD[ty, new_size]() + for i in range(new_size): + result[i] = SIMD[ty, 1](x[i + offset]) + return result + +fn reduce_add[ty: DType, size: Int](x: SIMD[ty, size]) -> Int: + @parameter + if size == 1: + return int(x[0]) + elif size == 2: + return int(x[0]) + int(x[1]) + + # Extract the top/bottom halves, add them, sum the elements. + alias half_size = size // 2 + var lhs = slice[ty, half_size, size](x, 0) + var rhs = slice[ty, half_size, size](x, half_size) + return reduce_add[ty, half_size](lhs + rhs) + +var x = SIMD[DType.index, 4](1, 2, 3, 4) +print(x) +print("Elements sum:", reduce_add(x)) +``` + +```output +[1, 2, 3, 4] +Elements sum: 10 +``` + +This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to +create a parametric if condition, which is an `if` statement that runs at compile-time. +It requires that its condition be a valid parameter expression, and ensures that only +the live branch of the `if` statement is compiled into the program. (This is similar to +use of the `@parameter` decorator with a `for` loop shown earlier.) + +## Mojo types are just parameter expressions + +While we've shown how you can use parameter expressions within types, type +annotations can themselves be arbitrary expressions (just like in Python). +Types in Mojo have a special metatype type, allowing type-parametric algorithms +and functions to be defined. + +For example, we can create a simplified `Array` that supports arbitrary types of +elements (via the `AnyTrivialRegType` parameter): + +```mojo +from memory import UnsafePointer + +struct Array[T: AnyTrivialRegType]: + var data: UnsafePointer[T] + var size: Int + + fn __init__(out self, size: Int, value: T): + self.size = size + self.data = UnsafePointer[T].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(value) + + fn __getitem__(self, i: Int) -> T: + return self.data[i] + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + +var v = Array[Float32](4, 3.14) +print(v[0], v[1], v[2], v[3]) +``` + +Notice that the `T` parameter is being used as the formal type for the +`value` arguments and the return type of the `__getitem__()` function. +Parameters allow the `Array` type to provide different APIs based on the +different use-cases. + +There are many other cases that benefit from more advanced use of parameters. +For example, you can execute a closure N times in parallel, feeding in a value +from the context, like this: + +```mojo +fn parallelize[func: fn (Int) -> None](num_work_items: Int): + # Not actually parallel: see the 'algorithm' module for real implementation. + for i in range(num_work_items): + func(i) +``` + +Another example where this is important is with variadic generics, where an +algorithm or data structure may need to be defined over a list of heterogeneous +types such as for a tuple. Right now, this is not fully supported in Mojo and +requires writing some MLIR by hand. In the future, this will be possible in pure +Mojo. + +## `alias`: named parameter expressions + +It is very common to want to *name* compile-time values. Whereas `var` defines a +runtime value, we need a way to define a +compile-time temporary value. For this, Mojo uses an `alias` declaration. + +For example, the [`DType`](/mojo/stdlib/builtin/dtype/DType) struct +implements a simple enum using aliases for the enumerators like this (the actual +`DType` implementation details vary a bit): + +```mojo +struct DType: + var value : UI8 + alias invalid = DType(0) + alias bool = DType(1) + alias int8 = DType(2) + alias uint8 = DType(3) + alias int16 = DType(4) + alias int16 = DType(5) + ... + alias float32 = DType(15) +``` + +This allows clients to use `DType.float32` as a parameter expression (which also +works as a runtime value) naturally. Note that this is invoking the +runtime constructor for `DType` at compile-time. + +Types are another common use for aliases. Because types are compile-time +expressions, it is handy to be able to do things like this: + +```mojo +alias Float16 = SIMD[DType.float16, 1] +alias UInt8 = SIMD[DType.uint8, 1] + +var x: Float16 = 0 # Float16 works like a "typedef" +``` + +Like `var` variables, aliases obey scope, and you can use local aliases within +functions as you'd expect. + +## Fully-bound, partially-bound, and unbound types + +A parametric type with its parameters specified is said to be *fully-bound*. +That is, all of its parameters are bound to values. As mentioned before, you can +only instantiate a fully-bound type (sometimes called a *concrete type*). + +However, parametric types can be *unbound* or *partially bound* in some +contexts. For example, you can alias a partially-bound type to create a new type +that requires fewer parameters: + +```mojo +from collections import Dict + +alias StringKeyDict = Dict[String, _] +var b = StringKeyDict[UInt8]() +b["answer"] = 42 +``` + +Here, `StringKeyDict` is a type alias for a `Dict` that takes `String` keys. The +underscore `_` in the parameter list indicates that the second parameter, +`V` (the value type), is unbound. +You specify the `V` parameter later, when you use `StringKeyDict`. + +For example, given the following type: + +```mojo +struct MyType[s: String, i: Int, i2: Int, b: Bool = True]: + pass +``` + +It can appear in code in the following forms: + +* *Fully bound*, with all of its parameters specified: + + ```mojo + MyType["Hello", 3, 4, True] + ``` + +* *Partially bound*, with *some but not all* of its parameters specified: + + ```mojo + MyType["Hola", _, _, True] + ``` + +* *Unbound*, with no parameters specified: + + ```mojo + MyType[_, _, _, _] + ``` + +You can also use the star-underscore expression `*_` to unbind an arbitrary +number of positional parameters at the end of a parameter +list. + +```mojo +# These two types are equivalent +MyType["Hello", *_] +MyType["Hello", _, _, _] +``` + +The `*_` expression specifically matches any parameters that can be specified by +position (positional-only or positional-or-keyword). To unbind keyword-only parameters, +use the double-star-underscore expression, `**_`, which matches any parameters that can +be specified by keyword (positional-or-keyword or keyword-only). + +```mojo +@value +struct KeyWordStruct[pos_or_kw: Int, *, kw_only: Int = 10]: + pass + +# Unbind both pos_or_kw and kw_only parameters +fn use_kw_struct(k: KeyWordStruct[**_]): + pass + +def main(): + use_kw_struct(KeyWordStruct[10, kw_only=11]()) +``` + +When a parameter is explicitly unbound with the `_`, `*_`, or `**_` expressions, you +**must** specify a value for that parameter to use the type. Any default value from the +original type declaration is ignored. + +Partially-bound and unbound parametric types can be used in some contexts where +the missing (unbound) parameters will be supplied later—such as in +[aliases](#alias-named-parameter-expressions) and +[automatically parameterized functions](#automatic-parameterization-of-functions). + +### Omitted parameters + +Mojo also supports an alternate format for unbound parameter where the parameter +is simply omitted from the expression: + +```mojo +# Partially bound +MyType["Hi there"] +# Unbound +MyType +``` + +This format differs from the explicit unbinding syntax described above in that +the default values for omitted parameters are bound immediately. For example, +the following expressions are equivalent: + +```mojo +MyType["Hi there"] +# equivalent to +MyType["Hi there", _, _, True] # Uses the default value for `b` +``` + +:::note + +This format is currently supported for backwards compatibility. We intend to +deprecate this format in the future in favor of the explicit unbinding syntax. + +::: + +## Automatic parameterization of functions + +Mojo supports "automatic" parameterization of functions. If a function +argument type is a +[partially-bound or unbound type](#fully-bound-partially-bound-and-unbound-types), +the unbound parameters are automatically added as input parameters on the +function. This is easier to understand with an example: + +```mojo +fn print_params(vec: SIMD[*_]): + print(vec.type) + print(vec.size) + +var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0) +print_params(v) +``` + +```output +float64 +4 +``` + +In the above example, the `print_params` function is automatically +parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is +an [unbound parameterized +type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't +specify any parameter values for the type. Mojo treats the unbound parameters +on `vec` as infer-only parameters on the function. This is roughly equivalent to +the following codes: + +```mojo +fn print_params[t: DType, s: Int, //](vec: SIMD[t, s]): + print(vec.type) + print(vec.size) +``` + +When you call `print_params()` you must pass it a concrete instance of the +`SIMD` type—that is, one with all of its parameters specified, like +`SIMD[DType.float64, 4]`. The Mojo compiler *infers* the parameter +values from the input argument. + +With a manually parameterized function, you can access the input parameters by +name (for example, `t` and `s` in the previous example). For an +automatically parameterized function, you can access the parameters as +attributes on the argument (for example, `vec.type`). + +This ability to access a type's input parameters is not specific to +automatically parameterized functions, you can use it anywhere. You can access +the input parameters of a parameterized type as attributes on the type itself: + +```mojo +fn on_type(): + print(SIMD[DType.float32, 2].size) # prints 2 +``` + +Or as attributes on an *instance* of the type: + +```mojo +fn on_instance(): + var x = SIMD[DType.int32, 2](4, 8) + print(x.type) # prints int32 +``` + +You can even use this syntax in the function's signature to define a +function's arguments and return type based on an argument's parameters. +For example, if you want your function to take two SIMD vectors with the same +type and size, you can write code like this: + +```mojo +fn interleave(v1: SIMD, v2: __type_of(v1)) -> SIMD[v1.type, v1.size*2]: + var result = SIMD[v1.type, v1.size*2]() + for i in range(v1.size): + result[i*2] = SIMD[v1.type, 1](v1[i]) + result[i*2+1] = SIMD[v1.type, 1](v2[i]) + return result + +var a = SIMD[DType.int16, 4](1, 2, 3, 4) +var b = SIMD[DType.int16, 4](0, 0, 0, 0) +var c = interleave(a, b) +print(c) +``` + +```output +[1, 0, 2, 0, 3, 0, 4, 0] +``` + +As shown in the example, you can use the magic `__type_of(x)` call if you just want to +match the type of an argument. In this case, it's more convenient and compact that +writing the equivalent `SIMD[v1.type, v1.size]`. + +### Automatic parameterization of parameters + +You can also take advantage of automatic parameterization in a function's +parameter list. For example: + +```mojo +fn foo[value: SIMD](): + pass + +# Equivalent to: +fn foo[type: DType, size: Int, //, value: SIMD[type, size]](): + pass +``` + +### Automatic parameterization with partially-bound types + +Mojo also supports automatic parameterization: with [partially-bound +parameterized types](#fully-bound-partially-bound-and-unbound-types) (that is, +types with some but not all of the parameters specified). + +For example, suppose we have a `Fudge` struct with three parameters: + +```mojo +@value +struct Fudge[sugar: Int, cream: Int, chocolate: Int = 7](Stringable): + fn __str__(self) -> String: + return str("Fudge (") + str(sugar) + "," + + str(cream) + "," + str(chocolate) + ")" + +``` + +We can write a function that takes a `Fudge` argument with just one bound +parameter (it's *partially bound*): + +```mojo +fn eat(f: Fudge[5, *_]): + print("Ate " + str(f)) +``` + +The `eat()` function takes a `Fudge` struct with the first parameter (`sugar`) +bound to the value 5. The second and third parameters, `cream` and `chocolate` +are unbound. + +The unbound `cream` and `chocolate` parameters become implicit input parameters +on the `eat` function. In practice, this is roughly equivalent to writing: + +```mojo +fn eat[cr: Int, ch: Int](f: Fudge[5, cr, ch]): + print("Ate", str(f)) +``` + +In both cases, we can call the function by passing in an instance with the +`cream` and `chocolate` parameters bound: + +```mojo +eat(Fudge[5, 5, 7]()) +eat(Fudge[5, 8, 9]()) +``` + +```output +Ate Fudge (5,5,7) +Ate Fudge (5,8,9) +``` + +If you try to pass in an argument with a `sugar` value other than 5, +compilation fails, because it doesn't match the argument type: + +```mojo +eat(Fudge[12, 5, 7]()) +# ERROR: invalid call to 'eat': argument #0 cannot be converted from 'Fudge[12, 5, 7]' to 'Fudge[5, 5, 7]' +``` + +You can also explicitly unbind individual parameters. This gives you +more freedom in specifying unbound parameters. + +For example, you might want to let the user specify values for `sugar` and +`chocolate`, and leave `cream` constant. To do this, replace each unbound +parameter value with a single underscore (`_`): + +```mojo +fn devour(f: Fudge[_, 6, _]): + print("Devoured", str(f)) +``` + +Again, the unbound parameters (`sugar` and `chocolate`) are added as implicit +input parameters on the function. This version is roughly equivalent to the +following code, where these two values are explicitly bound to the input +parameters, `su` and `ch`: + +```mojo +fn devour[su: Int, ch: Int](f: Fudge[su, 6, ch]): + print("Devoured", str(f)) +``` + +You can also specify parameters by keyword, or mix positional and keyword +parameters, so the following function is roughly equivalent to the previous one: +the first parameter, `sugar` is explicitly unbound with the underscore character. +The `chocolate` parameter is unbound using the keyword syntax, `chocolate=_`. +And `cream` is explicitly bound to the value 6: + +```mojo +fn devour(f: Fudge[_, chocolate=_, cream=6]): + print("Devoured", str(f)) +``` + +All three versions of the `devour()` function work with the following calls: + +```mojo +devour(Fudge[3, 6, 9]()) +devour(Fudge[4, 6, 8]()) +``` + +```output +Devoured Fudge (3,6,9) +Devoured Fudge (4,6,8) +``` + +### Legacy syntax (omitted parameters) + +You can also specify an unbound or partially-bound type by omitting parameters: +for example: + +```mojo +fn nibble(f: Fudge[5]): + print("Ate", str(f)) + +nibble(Fudge[5, 4, 7]()) + +``` + +```output +Ate Fudge (5,4,7) +``` + +Here, `Fudge[5]` works like `Fudge[5, *_]` **except** in the handling of +parameters with default values. Instead of discarding the default value of +`chocolate`, `Fudge[5]` binds the default value immediately, making it +equivalent to: `Fudge[5, _, 7]`. + +This means that the following code won't compile with the previous definition +for the `nibble()` function, since it doesn't use the default value for +`chocolate`: + +```mojo +nibble(Fudge[5, 5, 9]()) +# ERROR: invalid call to 'nibble': argument #0 cannot be converted from 'Fudge[5, 5, 9]' to 'Fudge[5, 5, 7]' +``` + +:::note TODO + +Support for omitting unbound parameters will eventually be deprecated in +favor of explicitly unbound parameters using `_` and `*_`. + +::: + +## The `rebind()` builtin + +One of the consequences of Mojo not performing function instantiation in the +parser like C++ is that Mojo cannot always figure out whether some parametric +types are equal and complain about an invalid conversion. This typically occurs +in static dispatch patterns. For example, the following code won't compile: + +```mojo +fn take_simd8(x: SIMD[DType.float32, 8]): + pass + +fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]): + @parameter + if nelts == 8: + take_simd8(x) +``` + +The parser will complain: + +```plaintext +error: invalid call to 'take_simd8': argument #0 cannot be converted from +'SIMD[f32, nelts]' to 'SIMD[f32, 8]' + take_simd8(x) + ~~~~~~~~~~^~~ +``` + +This is because the parser fully type-checks the function without instantiation, +and the type of `x` is still `SIMD[f32, nelts]`, and not `SIMD[f32, 8]`, despite +the static conditional. The remedy is to manually "rebind" the type of `x`, +using the `rebind` builtin, which inserts a compile-time assert that the input +and result types resolve to the same type after function instantiation: + +```mojo +fn take_simd8(x: SIMD[DType.float32, 8]): + pass + +fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]): + @parameter + if nelts == 8: + take_simd8(rebind[SIMD[DType.float32, 8]](x)) +``` diff --git a/docs/manual/pointers.ipynb b/docs/manual/pointers.ipynb deleted file mode 100644 index 7b2b495c0f..0000000000 --- a/docs/manual/pointers.ipynb +++ /dev/null @@ -1,751 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Unsafe pointers\n", - "description: Using unsafe pointers to access dynamically-allocated memory.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type \n", - "creates an indirect reference to a location in memory.\n", - "You can use an `UnsafePointer` to dynamically allocate and free memory, or to\n", - "point to memory allocated by some other piece of code. You can use these\n", - "pointers to write code that interacts with low-level interfaces, to interface\n", - "with other programming languages, or to build certain kinds of data structures.\n", - "But as the name suggests, they're inherently _unsafe_. For example, when using\n", - "unsafe pointers, you're responsible for ensuring that memory gets allocated and\n", - "freed correctly.\n", - "\n", - ":::note \n", - "\n", - "In addition to unsafe pointers, Mojo supports a safe \n", - "[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type. See\n", - "[`UnsafePointer` and `Pointer`](#unsafepointer-and-pointer) for a brief\n", - "comparison of the types.\n", - "\n", - ":::\n", - "\n", - "## What is a pointer?\n", - "\n", - "An `UnsafePointer` is a type that holds an address to memory. You can store\n", - "and retrieve values in that memory. The `UnsafePointer` type is _generic_—it can \n", - "point to any type of value, and the value type is specified as a parameter. The\n", - "value pointed to by a pointer is sometimes called a _pointee_." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "# Allocate memory to hold a value\n", - "var ptr = UnsafePointer[Int].alloc(1)\n", - "# Initialize the allocated memory\n", - "ptr.init_pointee_copy(100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - " ![](./images/pointer-diagram.png#light)\n", - " ![](./images/pointer-diagram-dark.png#dark)\n", - "\n", - "
Figure 1. Pointer and pointee
\n", - "
\n", - "\n", - "\n", - "Accessing the memory—to retrieve or update a value—is called \n", - "_dereferencing_ the pointer. You can dereference a pointer by following the\n", - "variable name with an empty pair of square brackets:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "110\n" - ] - } - ], - "source": [ - "# Update an initialized value\n", - "ptr[] += 10\n", - "# Access an initialized value\n", - "print(ptr[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also allocate memory to hold multiple values to build array-like\n", - "structures. For details, see \n", - "[Storing multiple values](#storing-multiple-values)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lifecycle of a pointer\n", - "\n", - "At any given time, a pointer can be in one of several states:\n", - "\n", - "- Uninitialized. Just like any variable, a variable of type `UnsafePointer` can\n", - " be declared but uninitialized.\n", - "\n", - " \n", - " ```mojo\n", - " var ptr: UnsafePointer[Int]\n", - " ```\n", - "\n", - "- Null. A null pointer has an address of 0, indicating an invalid pointer.\n", - "\n", - " ```mojo\n", - " ptr = UnsafePointer[Int]()\n", - " ```\n", - "\n", - "- Pointing to allocated, uninitialized memory. The `alloc()` static method\n", - " returns a pointer to a newly-allocated block of memory with space for the \n", - " specified number of elements of the pointee's type.\n", - "\n", - " ```mojo\n", - " ptr = UnsafePointer[Int].alloc(1)\n", - " ```\n", - " Trying to dereference a pointer to uninitialized memory results in undefined \n", - " behavior. \n", - "\n", - "- Pointing to initialized memory. You can initialize an allocated, uninitialized\n", - " pointer by moving or copying an existing value into the memory. Or you can use\n", - " the `address_of()` static method to get a pointer to an existing value. \n", - "\n", - " ```mojo\n", - " ptr.init_pointee_copy(value)\n", - " # or\n", - " ptr.init_pointee_move(value^)\n", - " # or \n", - " ptr = UnsafePointer[Int].address_of(value)\n", - " ```\n", - " \n", - " Once the value is initialized, you can read or mutate it using the dereference\n", - " syntax: \n", - "\n", - " ```mojo\n", - " oldValue = ptr[]\n", - " ptr[] = newValue\n", - " ```\n", - "\n", - "- Dangling. When you free the pointer's allocated memory, you're left with a \n", - " _dangling pointer_. The address still points to its previous location, but the\n", - " memory is no longer allocated to this pointer. Trying to dereference the\n", - " pointer, or calling any method that would access the memory location results\n", - " in undefined behavior.\n", - "\n", - " ```mojo\n", - " ptr.free()\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "The following diagram shows the lifecycle of an `UnsafePointer`:\n", - "\n", - "
\n", - "\n", - " ![](./images/pointer-lifecycle.png#light)\n", - " ![](./images/pointer-lifecycle-dark.png#dark)\n", - "\n", - "
Figure 2. Lifecycle of an UnsafePointer
\n", - "
\n", - "\n", - "### Allocating memory\n", - "\n", - "Use the static `alloc()` method to allocate memory. The method returns a new\n", - "pointer pointing to the requested memory. You can allocate space for one or \n", - "more values of the pointee's type.\n", - "\n", - "```mojo\n", - "ptr = UnsafePointer[Int].alloc(10) # Allocate space for 10 Int values\n", - "```\n", - "\n", - "The allocated space is _uninitialized_—like a variable that's been declared but\n", - "not initialized.\n", - "\n", - "### Initializing the pointee\n", - "\n", - "To initialize allocated memory, `UnsafePointer` provides the\n", - "[`init_pointee_copy()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_copy)\n", - "and [`init_pointee_move()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_move)\n", - "methods. For example:\n", - "\n", - "```mojo\n", - "ptr.init_pointee_copy(my_value)\n", - "```\n", - "\n", - "To move a value into the pointer's memory location, use\n", - "`init_pointee_move()`:\n", - "\n", - "```mojo\n", - "str_ptr.init_pointee_move(my_string^)\n", - "```\n", - "\n", - "Note that to move the value, you usually need to add the transfer sigil\n", - "(`^`), unless the value is a [trivial\n", - "type](/mojo/manual/types#register-passable-memory-only-and-trivial-types) (like\n", - "`Int`) or a newly-constructed, \"owned\" value:\n", - "\n", - "```mojo\n", - "str_ptr.init_pointee_move(str(\"Owned string\"))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternately, you can get a pointer to an existing value using the static \n", - "`address_of()` method. This is useful for getting a pointer to a value on the \n", - "stack, for example." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "var counter: Int = 5\n", - "ptr = UnsafePointer[Int].address_of(counter)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that when calling `address_of()`, you don't need to allocate memory ahead\n", - "of time, since you're pointing to an existing value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Dereferencing pointers\n", - "\n", - "Use the `[]` dereference operator to access the value stored at a pointer (the\n", - " \"pointee\").\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "# Read from pointee\n", - "print(ptr[])\n", - "# mutate pointee\n", - "ptr[] = 0\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "If you've allocated space for multiple values, you can use subscript syntax to\n", - "access the values, as if they were an array, like `ptr[3]`. The empty subscript\n", - "`[]` has the same meaning as `[0]`.\n", - "\n", - ":::caution\n", - "\n", - "The dereference operator assumes that the memory being dereferenced is \n", - "initialized. Dereferencing uninitialized memory results in undefined behavior.\n", - "\n", - ":::\n", - "\n", - "You cannot safely use the dereference operator on uninitialized memory, even to\n", - "_initialize_ a pointee. This is because assigning to a dereferenced pointer\n", - "calls lifecycle methods on the existing pointee (such as the destructor, move\n", - "constructor or copy constructor).\n", - "\n", - "```mojo\n", - "str_ptr = UnsafePointer[String].alloc(1)\n", - "# str_ptr[] = \"Testing\" # Undefined behavior!\n", - "str_ptr.init_pointee_move(\"Testing\")\n", - "str_ptr[] += \" pointers\" # Works now\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Destroying or removing values\n", - "\n", - "The \n", - "[`take_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#take_pointee)\n", - "method moves the pointee from the memory location pointed to by `ptr`. This is\n", - "a consuming move—it invokes `__moveinit__()` on the destination value. It leaves\n", - "the memory location uninitialized.\n", - "\n", - "The [`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee)\n", - "method calls the destructor on the pointee, and leaves the memory location\n", - "pointed to by `ptr` uninitialized. \n", - "\n", - "Both `take_pointee()` and `destroy_pointee()` require that the pointer is \n", - "non-null, and the memory location contains a valid, initialized value of the \n", - "pointee's type; otherwise the function results in undefined behavior.\n", - "\n", - "The [`move_pointee_into(self, dst)`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#move_pointee_into)\n", - "method moves the pointee from one pointer location to another. Both pointers\n", - "must be non-null. The source location must contain a valid, initialized value of \n", - "the pointee's type, and is left uninitialized after the call. The destination \n", - "location is assumed to be uninitialized—if it contains a valid value, that\n", - "value's destructor is not run. The value from the source location is moved to\n", - "the destination location as a consuming move. This function also has undefined\n", - "behavior if any of its prerequisites is not met." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Freeing memory\n", - "\n", - "Calling [`free()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#free) on a \n", - "pointer frees the memory allocated by the pointer. It doesn't call the \n", - "destructors on any values stored in the memory—you need to do that explicitly\n", - "(for example, using\n", - "[`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) or\n", - "one of the other functions described in \n", - "[Destroying or removing values](#destroying-or-removing-values)).\n", - "\n", - "Disposing of a pointer without freeing the associated memory can result in a\n", - "memory leak—where your program keeps taking more and more memory, because not\n", - "all allocated memory is being freed.\n", - "\n", - "On the other hand, if you have multiple copies of a pointer accessing the same\n", - "memory, you need to make sure you only call `free()` on one of them. Freeing the\n", - "same memory twice is also an error.\n", - "\n", - "After freeing a pointer's memory, you're left with a dangling pointer—its\n", - "address still points to the freed memory. Any attempt to access the memory,\n", - "like dereferencing the pointer results in undefined behavior.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Storing multiple values\n", - "\n", - "As mentioned in [Allocating memory](#allocating-memory), you can use an \n", - "`UnsafePointer` to allocate memory for multiple values. The memory is allocated\n", - "as a single, contiguous block. Pointers support arithmetic: adding an integer\n", - "to a pointer returns a new pointer offset by the specified number of values from\n", - "the original pointer:\n", - "\n", - "```mojo\n", - "third_ptr = first_ptr + 2\n", - "```\n", - "\n", - "Pointers also support subtraction, as well as in-place addition and subtraction:\n", - "\n", - "```mojo\n", - "# Advance the pointer one element:\n", - "ptr += 1\n", - "```\n", - "\n", - "
\n", - "\n", - " ![](./images/pointer-offset.png#light)\n", - " ![](./images/pointer-offset-dark.png#dark)\n", - "\n", - "
Figure 3. Pointer arithmetic
\n", - "
\n", - "\n", - "For example, the following example allocates memory to store 6 `Float64`\n", - "values, and initializes them all to zero." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "float_ptr = UnsafePointer[Float64].alloc(6)\n", - "for offset in range(6):\n", - " (float_ptr+offset).init_pointee_copy(0.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the values are initialized, you can access them using subscript syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0, 0.0, 3.0, 0.0, 0.0, 0.0, " - ] - } - ], - "source": [ - "float_ptr[2] = 3.0\n", - "for offset in range(6):\n", - " print(float_ptr[offset], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with foreign pointers\n", - "\n", - "When exchanging data with other programming languages, you may need to construct\n", - "an `UnsafePointer` from a foreign pointer. Mojo restricts creating \n", - "`UnsafePointer` instances from arbitrary addresses, to avoid users accidentally \n", - "creating pointers that _alias_ each other (that is, two pointers that refer to\n", - "the same location). However, there are specific methods you can use to get an\n", - "`UnsafePointer` from a Python or C/C++ pointer.\n", - "\n", - "When dealing with memory allocated elsewhere, you need to be aware of who's\n", - "responsible for freeing the memory. Freeing memory allocated elsewhere \n", - "can result in undefined behavior.\n", - "\n", - "You also need to be aware of the format of the data stored in memory, including\n", - "data types and byte order. For more information, see \n", - "[Converting data: bitcasting and byte order](#converting-data-bitcasting-and-byte-order)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Creating a Mojo pointer from a Python pointer\n", - "\n", - "The `PythonObject` type defines\n", - "an [`unsafe_get_as_pointer()`](/mojo/stdlib/python/object/PythonObject#unsafe_get_as_pointer) \n", - "method to construct an `UnsafePointer` from a Python address.\n", - "\n", - "For example, the following code creates a NumPy array and then accesses the\n", - "data using a Mojo pointer:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, 3, 4, 5, 6, 7, 8, 9, " - ] - } - ], - "source": [ - "from python import Python\n", - "from memory import UnsafePointer\n", - "\n", - "def share_array():\n", - " np = Python.import_module(\"numpy\")\n", - " arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", - " ptr = arr.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.int64]()\n", - " for i in range(9):\n", - " print(ptr[i], end=\", \")\n", - "\n", - "share_array()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NumPy arrays implement the\n", - "[array interface protocol](https://numpy.org/doc/stable/reference/arrays.interface.html),\n", - "which defines the `__array_interface__` object used in the example, where \n", - "`__array_interface__[\"data\"][0]` is a Python integer holding the address of the\n", - "underlying data. The `unsafe_get_as_pointer()` method constructs an \n", - "`UnsafePointer` to this address." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Working with C/C++ pointers\n", - "\n", - "If you call a C/C++ function that returns a pointer using the\n", - "[`external_call`](/mojo/stdlib/sys/ffi/external_call) function, you can specify\n", - "the return type as an `UnsafePointer`, and Mojo will handle the type conversion\n", - "for you." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from sys.ffi import external_call\n", - "\n", - "def get_foreign_pointer() -> UnsafePointer[Int]:\n", - " ptr = external_call[\n", - " \"my_c_function\", # external function name\n", - " UnsafePointer[Int] # return type\n", - " ]()\n", - " return ptr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Converting data: bitcasting and byte order\n", - "\n", - "Bitcasting a pointer returns a new pointer that has the same memory location,\n", - "but a new data type. This can be useful if you need to access different types of\n", - "data from a single area of memory. This can happen when you're reading binary\n", - "files, like image files, or receiving data over the network.\n", - "\n", - "The following sample processes a format that consists of chunks of data,\n", - "where each chunk contains a variable number of 32-bit integers.\n", - "Each chunk begins with an 8-bit integer that identifies the number of values\n", - "in the chunk." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]:\n", - " chunks = List[List[UInt32]]()\n", - " # A chunk size of 0 indicates the end of the data\n", - " chunk_size = int(ptr[])\n", - " while (chunk_size > 0):\n", - " # Skip the 1 byte chunk_size and get a pointer to the first\n", - " # UInt32 in the chunk\n", - " ui32_ptr = (ptr + 1).bitcast[UInt32]()\n", - " chunk = List[UInt32](capacity=chunk_size)\n", - " for i in range(chunk_size):\n", - " chunk.append(ui32_ptr[i])\n", - " chunks.append(chunk)\n", - " # Move our pointer to the next byte after the current chunk\n", - " ptr += (1 + 4 * chunk_size)\n", - " # Read the size of the next chunk\n", - " chunk_size = int(ptr[])\n", - " return chunks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When dealing with data read in from a file or from the network, you may also\n", - "need to deal with byte order. Most systems use little-endian byte order (also\n", - "called least-signficicant byte, or LSB) where the least-significant byte in a\n", - "multibyte value comes first. For example, the number 1001 can be represented in\n", - "hexadecimal as 0x03E9, where E9 is the least-significant byte. Represented as a\n", - "16-bit little-endian integer, the two bytes are ordered E9 03. As a 32-bit \n", - "integer, it would be represented as E9 03 00 00. \n", - "\n", - "Big-endian or most-significant byte (MSB) ordering is the opposite: in the \n", - "32-bit case, 00 00 03 E9. MSB ordering is frequently used in file formats and\n", - "when transmitting data over the network. You can use the \n", - "[`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap) function to swap the byte\n", - "order of a SIMD value from big-endian to little-endian or the reverse. For\n", - "example, if the method above was reading big-endian data, you'd just need to\n", - "change a single line:\n", - "\n", - "```mojo\n", - "chunk.append(byte_swap(ui32_ptr[i]))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with SIMD vectors\n", - "\n", - "The `UnsafePointer` type includes\n", - "[`load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#load) and\n", - "[`store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#store) methods for\n", - "performing aligned loads and stores of scalar values. It also has methods\n", - "supporting strided load/store and gather/scatter.\n", - "\n", - "Strided load loads values from memory into a SIMD vector using an offset (the\n", - "\"stride\") between successive memory addresses. This can be useful for\n", - "extracting rows or columns from tabular data, or for extracting individual\n", - "values from structured data. For example, consider the data for an RGB image,\n", - "where each pixel is made up of three 8-bit values, for red, green, and blue. If\n", - "you want to access just the red values, you can use a strided load or store.\n", - "\n", - "
\n", - "\n", - " ![](./images/strided-load-storage.png#light)\n", - " ![](./images/strided-load-storage-dark.png#dark)\n", - "\n", - "
Figure 4. Strided load
\n", - "
\n", - "\n", - "The following function uses the \n", - "[`strided_load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_load)\n", - "and \n", - "[`strided_store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_store)\n", - "methods to invert the red pixel values in an image, 8 values at a time. (Note\n", - "that this function only handles images where the number of pixels is evenly\n", - "divisible by eight.)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def invert_red_channel(ptr: UnsafePointer[UInt8], pixel_count: Int):\n", - " # number of values loaded or stored at a time\n", - " alias simd_width = 8\n", - " # bytes per pixel, which is also the stride size\n", - " bpp = 3\n", - " for i in range(0, pixel_count * bpp, simd_width * bpp):\n", - " red_values = ptr.offset(i).strided_load[width=simd_width](bpp)\n", - " # Invert values and store them in their original locations\n", - " ptr.offset(i).strided_store[width=simd_width](~red_values, bpp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`gather()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#gather) and\n", - "[`scatter()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#scatter) methods\n", - "let you load or store a set of values that are stored in arbitrary locations. \n", - "You do this by passing in a SIMD vector of _offsets_ to the current pointer. For\n", - "example, when using `gather()`, the nth value in the vector is loaded\n", - "from (pointer address) + offset[n]." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Safety\n", - "\n", - "Unsafe pointers are unsafe for several reasons:\n", - "\n", - "- Memory management is up to the user. You need to manually allocate\n", - " and free memory, and be aware of when other APIs are allocating or freeing\n", - " memory for you.\n", - "\n", - "- `UnsafePointer` values are _nullable_—that is, the pointer\n", - " is not guaranteed to point to anything. And even when a pointer points to\n", - " allocated memory, that memory may not be _initialized_.\n", - "\n", - "- Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`.\n", - " When you use an `UnsafePointer`, managing memory and knowing when to destroy\n", - " objects is your responsibility. \n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `UnsafePointer` and `Pointer`\n", - "\n", - "The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is essentially a \n", - "safe pointer type. Like a pointer, you can derference a `Pointer` using the \n", - "dereference operator, `[]`. However, the `Pointer` type has several\n", - "differences from `UnsafePointer` which make it safer:\n", - "\n", - "- A `Pointer` is _non-nullable_: it always points to something.\n", - "- You can't allocate or free memory using a `Pointer`—only point to an\n", - " existing value.\n", - "- A `Pointer` only refers to a single value. You can't do pointer arithmetic\n", - " with a `Pointer`.\n", - "- A `Pointer` has an associated _origin_, which connects it back to an\n", - " original, owned value. The origin ensures that the value won't be destroyed\n", - " while the pointer exists.\n", - "\n", - "The `Pointer` type shouldn't be confused with the immutable and mutable\n", - "references used with the `borrowed` and `inout` argument conventions. Those\n", - "references do not require explicit dereferencing, unlike a `Pointer` or \n", - "`UnsafePointer`." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/pointers/index.mdx b/docs/manual/pointers/index.mdx new file mode 100644 index 0000000000..075fa33ea5 --- /dev/null +++ b/docs/manual/pointers/index.mdx @@ -0,0 +1,272 @@ +--- +title: Intro to pointers +sidebar_position: 1 +description: An overview of accessing memory using Mojo's pointer types. +--- + +A pointer is an indirect reference to one or more values stored in memory. The +pointer is a value that holds an address to memory, and provides APIs to store +and retrieve values to that memory. The value pointed to by a pointer is also +known as a _pointee_. + +The Mojo standard library includes several types of pointers, which provide +different sets of features. All of these pointer types are _generic_—they can +point to any type of value, and the value type is specified as a parameter. For +example, the following code creates an `OwnedPointer` that points to an `Int` +value: + +```mojo +var ptr: OwnedPointer[Int] +ptr = OwnedPointer(100) +``` + +The `ptr` variable has a value of type `OwnedPointer[Int]`. The pointer *points +to* a value of type `Int`, as shown in Figure 1. + + +
+ +![](../images/owned-pointer-diagram.png#light) +![](../images/owned-pointer-diagram-dark.png#dark) + +
Figure 1. Pointer and pointee
+
+ +Accessing the memory—to retrieve or update a value—is called +_dereferencing_ the pointer. You can dereference a pointer by following the +variable name with an empty pair of square brackets: + +```mojo +# Update an initialized value +ptr[] += 10 +# Access an initialized value +print(ptr[]) +``` + +## Pointer terminology + +Before we jump into the pointer types, here are a few terms you’ll run across. Some +of them may already be familiar to you. + +- **Safe pointers**: are designed to prevent memory errors. Unless you use one + of the APIs that are specially designated as unsafe, you can use these + pointers without worrying about memory issues like double-free or + use-after-free. + +- **Nullable pointers**: can point to an invalid memory location (typically 0, +or a “null pointer”). Safe pointers aren’t nullable. + +- **Smart pointers**: own their pointees, which means that the value they point + to may be deallocated when the pointer itself is destroyed. Non-owning + pointers may point to values owned elsewhere, or may require some manual + management of the value lifecycle. + +- **Memory allocation**: some pointer types can allocate memory to store their + pointees, while other pointers can only point to pre-existing values. Memory + allocation can either be implicit (that is, performed automatically when + initializing a pointer with a value) or explicit. + +- **Uninitialized memory**: refers to memory locations that haven’t been + initialized with a value, which may therefore contain random data. + Newly-allocated memory is uninitialized. The safe pointer types don’t allow + users to access memory that’s uninitialized. Unsafe pointers can allocate a + block of uninitialized memory locations and then initialize them one at a time. + Being able to access uninitialized memory is unsafe by definition. + +- **Copyable types**: can be copied implicitly (for example, by assigning a + value to a variable). Also called *implicitly copyable types*. + + ```mojo + copied_ptr = ptr + ``` + + *Explicitly copyable* types require the user to request a copy, using a + constructor with a keyword argument: + + ```mojo + copied_owned_ptr = OwnedPointer(other=owned_ptr) + ``` + +## Pointer types + +The Mojo standard library includes several pointer types with different +characteristics: + +- [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) is a safe pointer that points + to a single value that it doesn’t own. + +- [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) is a smart + pointer that points to a single value, and maintains exclusive ownership of + that value. + +- [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted + smart pointer that points to an owned value with ownership potentially shared + with other instances of `ArcPointer`. + +- [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) points to + one or more consecutive memory locations, and can refer to uninitialized + memory. + +Table 1 summarizes the different types of pointers: + +
+ +| | `Pointer` | `OwnedPointer` | `ArcPointer` | `UnsafePointer` | +| --- | --- | --- | --- | --- | +| Safe | Yes | Yes | Yes | No | +| Allocates memory | No | Implicitly 1 | Implicitly 1 | Explicitly | +| Owns pointee(s) | No | Yes | Yes | No 2 | +| Copyable | Yes | No 3 | Yes | Yes | +| Nullable | No | No | No | Yes | +| Can point to uninitialized memory | No | No | No | Yes | +| Can point to multiple values (array-like access) | No | No | No | Yes | + +
Table 1. Pointer types
+
+ +1 `OwnedPointer` and `ArcPointer` implicitly allocate memory when you +initialize the pointer with a value. + +2 `UnsafePointer` provides unsafe methods for initializing and +destroying instances of the stored type. The user is responsible for managing +the lifecycle of stored values. + +3 `OwnedPointer` is explicitly copyable, but explicitly copying an +`OwnedPointer` copies the *stored value* into a new `OwnedPointer`. + +The following sections provide more details on each pointer type. + +## `Pointer` + +The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is a safe pointer that +points to a initialized value that it doesn’t own. Some example use cases for a +`Pointer` include: + +- Storing a reference to a related type. For example, a list’s iterator object +might hold a `Pointer` back to the original list. + +- Passing the memory location for a single value to external code via +`external_call()`. + +- Where you need an API to return a long-lived reference to a value. (Currently +the iterators for standard library collection types like `List` return +pointers.) + +You can construct a `Pointer` using the `address_of()` static method: + +```python +ptr = Pointer.address_of(some_value) +``` + +You can also create a `Pointer` by copying an existing `Pointer`. + +A `Pointer` carries an [`origin`](/mojo/manual/values/lifetimes) for the stored +value, so Mojo can track the lifetime of the referenced value. + +## `OwnedPointer` + +The [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) type is a +smart pointer designed for cases where there is single ownership of the +underlying data. An `OwnedPointer` points to a single item, which is passed in +when you initialize the `OwnedPointer`. The `OwnedPointer` allocates memory and +moves or copies the value into the reserved memory. + +```python +o_ptr = OwnedPointer(some_big_struct) +``` + +An owned pointer can hold almost any type of item, but the stored item must be +either `Movable`, `Copyable`, or `ExplicitlyCopyable`. + +Since an `OwnedPointer` is designed to enforce single ownership, the pointer +itself can be moved, but not copied. + +Note: Currently, you can’t create an `Optional[OwnedPointer[T]]` because the +`Optional` type only works with types that are both movable and copyable. This +restricts some use cases that would otherwise be a natural fit +for`OwnedPointer`, including self-referential data structures like linked lists +and trees. (Until this use case is supported for `OwnedPointer`, it’s possible +to use`ArcPointer` where you need a smart pointer that can be `Optional`.) + +## `ArcPointer` + +An [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted +smart pointer, ideal for shared resources where the last owner for a given value +may not be clear. Like an `OwnedPointer`, it points to a single value, and it +allocates memory when you initialize the `ArcPointer` with a value: + +```python +attributesDict = Dict[String, String]() +attributes = ArcPointer(attributesDict) +``` + +Unlike an `OwnedPointer`, an `ArcPointer` can be freely copied. All instances +of a given `ArcPointer` share a reference count, which is incremented whenever +the `ArcPointer` is copied and decremented whenever an instance is destroyed. +When the reference count reaches zero, the stored value is destroyed and the +allocated memory is freed. + +You can use `ArcPointer` to implement safe reference-semantic types. For +example, in the following code snippet `SharedDict` uses an `ArcPointer` to +store a dictionary. Copying an instance of `SharedDict` only copies the +`ArcPointer`, not the dictionary, which is shared between all of the copies. + +```python +from memory import ArcPointer +from collections import Dict + +struct SharedDict: + var attributes: ArcPointer[Dict[String, String]] + + fn __init__(out self): + attributesDict = Dict[String, String]() + self.attributes = ArcPointer(attributesDict) + + fn __copyinit__(out self, other: Self): + self.attributes = other.attributes + + def __setitem__(inout self, key: String, value: String): + self.attributes[][key] = value + + def __getitem__(self, key: String) -> String: + return self.attributes[].get(key, default="") + +def main(): + thing1 = SharedDict() + thing2 = thing1 + thing1["Flip"] = "Flop" + print(thing2["Flip"]) +``` + +Note: The reference count is stored using an +[`Atomic`]([/mojo/stdlib/os/atomic/Atomic](https://docs.modular-staging.com/mojo/stdlib/os/atomic/Atomic)) +value to ensure that updates to the reference count are thread-safe. However, +Mojo doesn’t currently enforce exclusive access across thread boundaries, so +it’s possible to form race conditions. + +## UnsafePointer + +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) is a +low-level pointer that can access a block of contiguous memory locations, which +might be uninitialized. It’s analogous to a raw pointer in the C and C++ +programming languages. `UnsafePointer` provides unsafe methods for initializing +and destroying stored values, as well as for accessing the values once they’re +initialized. + +As the name suggests, `UnsafePointer` doesn’t provide any memory safety +guarantees, so you should reserve it for cases when none of the other pointer +types will do the job. Here are some use cases where you might want to use an +`UnsafePointer`: + +- Building a high-performance array-like structure, such as `List` or `Tensor`. + A single `UnsafePointer` can access many values, and gives you a lot of + control over how you allocate, use, and deallocate memory. Being able to + access uninitialized memory means that you can preallocate a block of memory, + and initialize values incrementally as they are added to the collection. + +- Interacting with external libraries including C++ and Python. You can + use`UnsafePointer` to pass a buffer full of data to or from an external + library. + +For more information, see [Unsafe +pointers](/mojo/manual/pointers/unsafe-pointers). diff --git a/docs/manual/pointers/unsafe-pointers.mdx b/docs/manual/pointers/unsafe-pointers.mdx new file mode 100644 index 0000000000..a2a5f04acd --- /dev/null +++ b/docs/manual/pointers/unsafe-pointers.mdx @@ -0,0 +1,506 @@ +--- +title: Unsafe pointers +description: Using unsafe pointers to access dynamically-allocated memory. +--- + +The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type is +one of several pointer types available in the standard library to indirectly +reference locations in memory. + +You can use an `UnsafePointer` to dynamically allocate and free memory, or to +point to memory allocated by some other piece of code. You can use these +pointers to write code that interacts with low-level interfaces, to interface +with other programming languages, or to build array-like data structures. +But as the name suggests, they're inherently *unsafe*. For example, when using +unsafe pointers, you're responsible for ensuring that memory gets allocated and +freed correctly. + +In general, you should prefer safe pointer types when possible, reserving +`UnsafePointer` for those use cases where no other pointer type works. +For a comparison of standard library pointer types, see [Intro to +pointers](/mojo/manual/pointers/). + +## Unsafe pointer basics + +An `UnsafePointer` is a type that holds an address to memory. You can store +and retrieve values in that memory. The `UnsafePointer` type is *generic*—it can +point to any type of value, and the value type is specified as a parameter. The +value pointed to by a pointer is sometimes called a *pointee*. + +```mojo +from memory import UnsafePointer + +# Allocate memory to hold a value +var ptr = UnsafePointer[Int].alloc(1) +# Initialize the allocated memory +ptr.init_pointee_copy(100) +``` + +
+ +![](../images/pointer-diagram.png#light) +![](../images/pointer-diagram-dark.png#dark) + +
Figure 1. Pointer and pointee
+
+ +Accessing the memory—to retrieve or update a value—is called +*dereferencing* the pointer. You can dereference a pointer by following the +variable name with an empty pair of square brackets: + +```mojo +# Update an initialized value +ptr[] += 10 +# Access an initialized value +print(ptr[]) +``` + +```output +110 +``` + +You can also allocate memory to hold multiple values to build array-like +structures. For details, see +[Storing multiple values](#storing-multiple-values). + +## Lifecycle of a pointer + +At any given time, a pointer can be in one of several states: + +- Uninitialized. Just like any variable, a variable of type `UnsafePointer` can + be declared but uninitialized. + + ```mojo + var ptr: UnsafePointer[Int] + ``` + +- Null. A null pointer has an address of 0, indicating an invalid pointer. + + ```mojo + ptr = UnsafePointer[Int]() + ``` + +- Pointing to allocated, uninitialized memory. The `alloc()` static method + returns a pointer to a newly-allocated block of memory with space for the + specified number of elements of the pointee's type. + + ```mojo + ptr = UnsafePointer[Int].alloc(1) + ``` + + Trying to dereference a pointer to uninitialized memory results in undefined + behavior. + +- Pointing to initialized memory. You can initialize an allocated, uninitialized + pointer by moving or copying an existing value into the memory. Or you can use + the `address_of()` static method to get a pointer to an existing value. + + ```mojo + ptr.init_pointee_copy(value) + # or + ptr.init_pointee_move(value^) + # or + ptr = UnsafePointer[Int].address_of(value) + ``` + + Once the value is initialized, you can read or mutate it using the dereference + syntax: + + ```mojo + oldValue = ptr[] + ptr[] = newValue + ``` + +- Dangling. When you free the pointer's allocated memory, you're left with a + *dangling pointer*. The address still points to its previous location, but the + memory is no longer allocated to this pointer. Trying to dereference the + pointer, or calling any method that would access the memory location results + in undefined behavior. + + ```mojo + ptr.free() + ``` + +The following diagram shows the lifecycle of an `UnsafePointer`: + +
+ +![](../images/pointer-lifecycle.png#light) +![](../images/pointer-lifecycle-dark.png#dark) + +
Figure 2. Lifecycle of an UnsafePointer
+
+ +### Allocating memory + +Use the static `alloc()` method to allocate memory. The method returns a new +pointer pointing to the requested memory. You can allocate space for one or +more values of the pointee's type. + +```mojo +ptr = UnsafePointer[Int].alloc(10) # Allocate space for 10 Int values +``` + +The allocated space is *uninitialized*—like a variable that's been declared but +not initialized. + +### Initializing the pointee + +To initialize allocated memory, `UnsafePointer` provides the +[`init_pointee_copy()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_copy) +and [`init_pointee_move()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_move) +methods. For example: + +```mojo +ptr.init_pointee_copy(my_value) +``` + +To move a value into the pointer's memory location, use +`init_pointee_move()`: + +```mojo +str_ptr.init_pointee_move(my_string^) +``` + +Note that to move the value, you usually need to add the transfer sigil +(`^`), unless the value is a [trivial +type](/mojo/manual/types#register-passable-memory-only-and-trivial-types) (like +`Int`) or a newly-constructed, "owned" value: + +```mojo +str_ptr.init_pointee_move(str("Owned string")) +``` + +Alternately, you can get a pointer to an existing value using the static +`address_of()` method. This is useful for getting a pointer to a value on the +stack, for example. + +```mojo +var counter: Int = 5 +ptr = UnsafePointer[Int].address_of(counter) +``` + +Note that when calling `address_of()`, you don't need to allocate memory ahead +of time, since you're pointing to an existing value. + +### Dereferencing pointers + +Use the `[]` dereference operator to access the value stored at a pointer (the +"pointee"). + +```mojo +# Read from pointee +print(ptr[]) +# mutate pointee +ptr[] = 0 + +``` + +```output +5 +``` + +If you've allocated space for multiple values, you can use subscript syntax to +access the values, as if they were an array, like `ptr[3]`. The empty subscript +`[]` has the same meaning as `[0]`. + +:::caution + +The dereference operator assumes that the memory being dereferenced is +initialized. Dereferencing uninitialized memory results in undefined behavior. + +::: + +You cannot safely use the dereference operator on uninitialized memory, even to +*initialize* a pointee. This is because assigning to a dereferenced pointer +calls lifecycle methods on the existing pointee (such as the destructor, move +constructor or copy constructor). + +```mojo +str_ptr = UnsafePointer[String].alloc(1) +# str_ptr[] = "Testing" # Undefined behavior! +str_ptr.init_pointee_move("Testing") +str_ptr[] += " pointers" # Works now +``` + +### Destroying or removing values + +The +[`take_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#take_pointee) +method moves the pointee from the memory location pointed to by `ptr`. This is +a consuming move—it invokes `__moveinit__()` on the destination value. It leaves +the memory location uninitialized. + +The [`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) +method calls the destructor on the pointee, and leaves the memory location +pointed to by `ptr` uninitialized. + +Both `take_pointee()` and `destroy_pointee()` require that the pointer is +non-null, and the memory location contains a valid, initialized value of the +pointee's type; otherwise the function results in undefined behavior. + +The [`move_pointee_into(self, dst)`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#move_pointee_into) +method moves the pointee from one pointer location to another. Both pointers +must be non-null. The source location must contain a valid, initialized value of +the pointee's type, and is left uninitialized after the call. The destination +location is assumed to be uninitialized—if it contains a valid value, that +value's destructor is not run. The value from the source location is moved to +the destination location as a consuming move. This function also has undefined +behavior if any of its prerequisites is not met. + +### Freeing memory + +Calling [`free()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#free) on a +pointer frees the memory allocated by the pointer. It doesn't call the +destructors on any values stored in the memory—you need to do that explicitly +(for example, using +[`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) or +one of the other functions described in +[Destroying or removing values](#destroying-or-removing-values)). + +Disposing of a pointer without freeing the associated memory can result in a +memory leak—where your program keeps taking more and more memory, because not +all allocated memory is being freed. + +On the other hand, if you have multiple copies of a pointer accessing the same +memory, you need to make sure you only call `free()` on one of them. Freeing the +same memory twice is also an error. + +After freeing a pointer's memory, you're left with a dangling pointer—its +address still points to the freed memory. Any attempt to access the memory, +like dereferencing the pointer results in undefined behavior. + +## Storing multiple values + +As mentioned in [Allocating memory](#allocating-memory), you can use an +`UnsafePointer` to allocate memory for multiple values. The memory is allocated +as a single, contiguous block. Pointers support arithmetic: adding an integer +to a pointer returns a new pointer offset by the specified number of values from +the original pointer: + +```mojo +third_ptr = first_ptr + 2 +``` + +Pointers also support subtraction, as well as in-place addition and subtraction: + +```mojo +# Advance the pointer one element: +ptr += 1 +``` + +
+ +![](../images/pointer-offset.png#light) +![](../images/pointer-offset-dark.png#dark) + +
Figure 3. Pointer arithmetic
+
+ +For example, the following example allocates memory to store 6 `Float64` +values, and initializes them all to zero. + +```mojo +float_ptr = UnsafePointer[Float64].alloc(6) +for offset in range(6): + (float_ptr+offset).init_pointee_copy(0.0) +``` + +Once the values are initialized, you can access them using subscript syntax: + +```mojo +float_ptr[2] = 3.0 +for offset in range(6): + print(float_ptr[offset], end=", ") +``` + +```output +0.0, 0.0, 3.0, 0.0, 0.0, 0.0, +``` + +## Working with foreign pointers + +When exchanging data with other programming languages, you may need to construct +an `UnsafePointer` from a foreign pointer. Mojo restricts creating +`UnsafePointer` instances from arbitrary addresses, to avoid users accidentally +creating pointers that *alias* each other (that is, two pointers that refer to +the same location). However, there are specific methods you can use to get an +`UnsafePointer` from a Python or C/C++ pointer. + +When dealing with memory allocated elsewhere, you need to be aware of who's +responsible for freeing the memory. Freeing memory allocated elsewhere +can result in undefined behavior. + +You also need to be aware of the format of the data stored in memory, including +data types and byte order. For more information, see +[Converting data: bitcasting and byte order](#converting-data-bitcasting-and-byte-order). + +### Creating a Mojo pointer from a Python pointer + +The `PythonObject` type defines +an [`unsafe_get_as_pointer()`](/mojo/stdlib/python/object/PythonObject#unsafe_get_as_pointer) +method to construct an `UnsafePointer` from a Python address. + +For example, the following code creates a NumPy array and then accesses the +data using a Mojo pointer: + +```mojo +from python import Python +from memory import UnsafePointer + +def share_array(): + np = Python.import_module("numpy") + arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) + ptr = arr.ctypes.data.unsafe_get_as_pointer[DType.int64]() + for i in range(9): + print(ptr[i], end=", ") + +share_array() +``` + +```output +1, 2, 3, 4, 5, 6, 7, 8, 9, +``` + +This example uses the NumPy +[`ndarray.ctype`](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.ctypes.html#numpy.ndarray.ctypes) +attribute to access the raw pointer to the underlying storage +(`ndarray.ctype.data`). The `unsafe_get_as_pointer()` method constructs an +`UnsafePointer` to this address. + +### Working with C/C++ pointers + +If you call a C/C++ function that returns a pointer using the +[`external_call`](/mojo/stdlib/sys/ffi/external_call) function, you can specify +the return type as an `UnsafePointer`, and Mojo will handle the type conversion +for you. + +```mojo +from sys.ffi import external_call + +def get_foreign_pointer() -> UnsafePointer[Int]: + ptr = external_call[ + "my_c_function", # external function name + UnsafePointer[Int] # return type + ]() + return ptr +``` + +## Converting data: bitcasting and byte order + +Bitcasting a pointer returns a new pointer that has the same memory location, +but a new data type. This can be useful if you need to access different types of +data from a single area of memory. This can happen when you're reading binary +files, like image files, or receiving data over the network. + +The following sample processes a format that consists of chunks of data, +where each chunk contains a variable number of 32-bit integers. +Each chunk begins with an 8-bit integer that identifies the number of values +in the chunk. + +```mojo + +def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]: + chunks = List[List[UInt32]]() + # A chunk size of 0 indicates the end of the data + chunk_size = int(ptr[]) + while (chunk_size > 0): + # Skip the 1 byte chunk_size and get a pointer to the first + # UInt32 in the chunk + ui32_ptr = (ptr + 1).bitcast[UInt32]() + chunk = List[UInt32](capacity=chunk_size) + for i in range(chunk_size): + chunk.append(ui32_ptr[i]) + chunks.append(chunk) + # Move our pointer to the next byte after the current chunk + ptr += (1 + 4 * chunk_size) + # Read the size of the next chunk + chunk_size = int(ptr[]) + return chunks +``` + +When dealing with data read in from a file or from the network, you may also +need to deal with byte order. Most systems use little-endian byte order (also +called least-signficicant byte, or LSB) where the least-significant byte in a +multibyte value comes first. For example, the number 1001 can be represented in +hexadecimal as 0x03E9, where E9 is the least-significant byte. Represented as a +16-bit little-endian integer, the two bytes are ordered E9 03. As a 32-bit +integer, it would be represented as E9 03 00 00. + +Big-endian or most-significant byte (MSB) ordering is the opposite: in the +32-bit case, 00 00 03 E9. MSB ordering is frequently used in file formats and +when transmitting data over the network. You can use the +[`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap) function to swap the byte +order of a SIMD value from big-endian to little-endian or the reverse. For +example, if the method above was reading big-endian data, you'd just need to +change a single line: + +```mojo +chunk.append(byte_swap(ui32_ptr[i])) +``` + +## Working with SIMD vectors + +The `UnsafePointer` type includes +[`load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#load) and +[`store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#store) methods for +performing aligned loads and stores of scalar values. It also has methods +supporting strided load/store and gather/scatter. + +Strided load loads values from memory into a SIMD vector using an offset (the +"stride") between successive memory addresses. This can be useful for +extracting rows or columns from tabular data, or for extracting individual +values from structured data. For example, consider the data for an RGB image, +where each pixel is made up of three 8-bit values, for red, green, and blue. If +you want to access just the red values, you can use a strided load or store. + +
+ +![](../images/strided-load-storage.png#light) +![](../images/strided-load-storage-dark.png#dark) + +
Figure 4. Strided load
+
+ +The following function uses the +[`strided_load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_load) +and +[`strided_store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_store) +methods to invert the red pixel values in an image, 8 values at a time. (Note +that this function only handles images where the number of pixels is evenly +divisible by eight.) + +```mojo +def invert_red_channel(ptr: UnsafePointer[UInt8], pixel_count: Int): + # number of values loaded or stored at a time + alias simd_width = 8 + # bytes per pixel, which is also the stride size + bpp = 3 + for i in range(0, pixel_count * bpp, simd_width * bpp): + red_values = ptr.offset(i).strided_load[width=simd_width](bpp) + # Invert values and store them in their original locations + ptr.offset(i).strided_store[width=simd_width](~red_values, bpp) +``` + +The [`gather()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#gather) and +[`scatter()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#scatter) methods +let you load or store a set of values that are stored in arbitrary locations. +You do this by passing in a SIMD vector of *offsets* to the current pointer. For +example, when using `gather()`, the nth value in the vector is loaded +from (pointer address) + offset[n]. + +## Safety + +Unsafe pointers are unsafe for several reasons: + +- Memory management is up to the user. You need to manually allocate + and free memory, and be aware of when other APIs are allocating or freeing + memory for you. + +- `UnsafePointer` values are *nullable*—that is, the pointer + is not guaranteed to point to anything. And even when a pointer points to + allocated memory, that memory may not be *initialized*. + +- Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. + When you use an `UnsafePointer`, managing memory and knowing when to destroy + objects is your responsibility. diff --git a/docs/manual/python/index.ipynb b/docs/manual/python/index.ipynb deleted file mode 100644 index 3058ef0d98..0000000000 --- a/docs/manual/python/index.ipynb +++ /dev/null @@ -1,297 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Python integration\n", - "sidebar_position: 1\n", - "description: Using Python and Mojo together.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo is still in early development and many Python features are not yet\n", - "implemented. You can't currently write everything in Mojo that you can write in\n", - "Python. And Mojo doesn't have its own ecosystem of packages yet.\n", - "\n", - "To help bridge this gap, Mojo lets you import Python modules, call Python \n", - "functions, and interact with Python objects from Mojo code. The Python code\n", - "runs in a standard Python interpreter (CPython), so your existing Python code\n", - "doesn't need to change.\n", - "\n", - "## Create a Python environment\n", - "\n", - "To successfully integrate Python code with your Mojo project, your environment\n", - "must have a compatible Python runtime installed along with any additional\n", - "Python packages that you want to use. Currently, you can create a compatible\n", - "environment in a couple of ways:\n", - "\n", - "- We recommend that you use [Magic](/magic), our package manager and\n", - " virtual environment manager for MAX and Mojo projects. To use Magic to create\n", - " and manage the virtual environment for your Mojo/Python project, first\n", - " follow the instructions in [Install Magic](/magic/#install-magic).\n", - " Then you can create a new Mojo project like this:\n", - "\n", - " ```sh\n", - " magic init my-mojo-project --format mojoproject\n", - " ```\n", - "\n", - " After creating the project, you can enter the project and install any\n", - " dependencies, for example [NumPy](https://numpy.org/):\n", - "\n", - " ```sh\n", - " cd my-mojo-project\n", - " ```\n", - "\n", - " ```sh\n", - " magic add \"numpy>=2.0\"\n", - " ```\n", - "\n", - "- Alternatively, you can also add MAX and Mojo to a\n", - " [conda](https://docs.conda.io/projects/conda/en/latest/index.html) project.\n", - " To do so, follow the steps in [Add MAX/Mojo to a conda project](/magic/conda).\n", - "\n", - "- It's also possible to convert an existing conda project to Magic as documented\n", - " in [Migrate a conda project to Magic](/magic/#migrate-a-conda-project-to-magic).\n", - "\n", - "## Import a Python module\n", - "\n", - "To import a Python module in Mojo, just call \n", - "[`Python.import_module()`](/mojo/stdlib/python/python/Python#import_module) \n", - "with the module name. The following shows an example of importing the standard\n", - "Python [NumPy](https://numpy.org/) package:\n", - "\n", - "```mojo\n", - "from python import Python\n", - "\n", - "def main():\n", - " # This is equivalent to Python's `import numpy as np`\n", - " np = Python.import_module(\"numpy\")\n", - "\n", - " # Now use numpy as if writing in Python\n", - " array = np.array([1, 2, 3])\n", - " print(array)\n", - "```\n", - "\n", - "Running this program produces the following output:\n", - "\n", - "```\n", - "[1 2 3]\n", - "```" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Assuming that you have the NumPy package installed in your\n", - "[environment](#create-a-python-environment), this imports NumPy and you can use any\n", - "of its features.\n", - "\n", - "A few things to note:\n", - "\n", - "- The `import_module()` method returns a reference to the module in the form of\n", - " a [`PythonObject`](/mojo/stdlib/python/python_object/PythonObject)\n", - " wrapper. You must store the reference in a variable and then use it as shown\n", - " in the example above to access functions, classes, and other objects defined\n", - " by the module. See [Mojo wrapper objects](/mojo/manual/python/types#mojo-wrapper-objects)\n", - " for more information about the `PythonObject` type.\n", - "\n", - "- Currently, you cannot import individual members (such as a single Python class\n", - " or function). You must import the whole Python module and then access members\n", - " through the module name.\n", - "\n", - "- Mojo doesn't yet support top-level code, so the `import_module()` call must\n", - " be inside another method. This means you may need to import a module multiple\n", - " times or pass around a reference to the module. This works the same way as \n", - " Python: importing the module multiple times won't run the initialization\n", - " logic more than once, so you don't pay any performance penalty.\n", - "\n", - "- `import_module()` may raise an exception (for example, if the module isn't\n", - " installed). If you're using it inside an `fn` function, you need to either\n", - " handle errors (using a `try/except` clause), or add the `raises` keyword to\n", - " the function signature. You'll also see this when calling Python functions\n", - " that may raise exceptions. (Raising exceptions is much more common in Python\n", - " code than in the Mojo standard library, which \n", - " [limits their use for performance reasons](/mojo/roadmap#the-standard-library-has-limited-exceptions-use).)\n", - "\n", - "\n", - ":::caution\n", - "\n", - "[`mojo build`](/mojo/cli/build) doesn't include the Python packages used by\n", - "your Mojo project. Instead, Mojo loads the Python interpreter and Python\n", - "packages at runtime, so they must be provided in the environment where you run\n", - "the Mojo program (such as inside the Magic environment where you built the\n", - "executable). For more information, see the section above to [create a Python\n", - "environment](#create-a-python-environment).\n", - "\n", - ":::" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Import a local Python module\n", - "\n", - "If you have some local Python code you want to use in Mojo, just add\n", - "the directory to the Python path and then import the module.\n", - "\n", - "For example, suppose you have a Python file named `mypython.py`:\n", - "\n", - "```python title=\"mypython.py\"\n", - "import numpy as np\n", - "\n", - "def gen_random_values(size, base):\n", - " # generate a size x size array of random numbers between base and base+1\n", - " random_array = np.random.rand(size, size)\n", - " return random_array + base\n", - "```\n", - "\n", - "Here's how you can import it and use it in a Mojo file:\n", - "\n", - "```mojo title=\"main.mojo\"\n", - "from python import Python\n", - "\n", - "def main():\n", - " Python.add_to_path(\"path/to/module\")\n", - " mypython = Python.import_module(\"mypython\")\n", - "\n", - " values = mypython.gen_random_values(2, 3)\n", - " print(values)\n", - "```\n", - "\n", - "Both absolute and relative paths work with \n", - "[`add_to_path()`](/mojo/stdlib/python/python/Python#add_to_path). For example,\n", - "you can import from the local directory like this:\n", - "\n", - "```mojo\n", - "Python.add_to_path(\".\")\n", - "```\n", - "\n", - "## Call Mojo from Python\n", - "\n", - "As shown above, you can call out to Python modules from Mojo. However, there's \n", - "currently no way to do the reverse—import Mojo modules from Python or call Mojo\n", - "functions from Python.\n", - "\n", - "This may present a challenge for using certain modules. For example, many UI \n", - "frameworks have a main event loop that makes callbacks to user-defined code\n", - "in response to UI events. This is sometimes called an \"inversion of control\" \n", - "pattern. Instead of your application code calling *in* to a library, the \n", - "framework code calls *out* to your application code.\n", - "\n", - "This pattern doesn't work because you can't pass Mojo callbacks to a Python \n", - "module.\n", - "\n", - "For example, consider the popular [Tkinter package](https://docs.python.org/3/library/tkinter.html). \n", - "The typical usage for Tkinter is something like this:\n", - "\n", - "- You create a main, or \"root\" window for the application.\n", - "- You add one or more UI widgets to the window. The widgets can have associated\n", - " callback functions (for example, when a button is pushed).\n", - "- You call the root window's `mainloop()` method, which listens for events, \n", - " updates the UI, and invokes callback functions. The main loop keeps running\n", - " until the application exits.\n", - "\n", - "Since Python can't call back into Mojo, one alternative is to have the Mojo\n", - "application drive the event loop and poll for updates. The following example\n", - "uses Tkinter, but the basic approach can be applied to other packages.\n", - "\n", - "First you create a Python module that defines a Tkinter interface, with a window\n", - "and single button:\n", - "\n", - "```python title=\"myapp.py\"\n", - "import tkinter as tk\n", - "\n", - "class App:\n", - " def __init__(self):\n", - " self._root = tk.Tk()\n", - " self.clicked = False\n", - "\n", - " def click(self):\n", - " self.clicked = True\n", - "\n", - " def create_button(self, button_text: str):\n", - " button = tk.Button(\n", - " master=self._root,\n", - " text=button_text,\n", - " command=self.click\n", - " )\n", - " button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)\n", - "\n", - " def create(self, res: str):\n", - " self._root.geometry(res)\n", - " self.create_button(\"Hello Mojo!\")\n", - "\n", - " def update(self):\n", - " self._root.update()\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can call this module from Mojo like this:\n", - "\n", - "```mojo title=\"main.mojo\"\n", - "from python import Python\n", - "\n", - "def button_clicked():\n", - " print(\"Hi from a Mojo🔥 fn!\")\n", - "\n", - "def main():\n", - " Python.add_to_path(\".\")\n", - " app = Python.import_module(\"myapp\").App()\n", - " app.create(\"800x600\")\n", - "\n", - " while True:\n", - " app.update()\n", - " if app.clicked:\n", - " button_clicked()\n", - " app.clicked = False\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Instead of the Python module calling the Tkinter `mainloop()` method, the Mojo \n", - "code calls the `update()` method in a loop and checks the `clicked` attribute \n", - "after each update.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/python/index.mdx b/docs/manual/python/index.mdx new file mode 100644 index 0000000000..43987ffee3 --- /dev/null +++ b/docs/manual/python/index.mdx @@ -0,0 +1,236 @@ +--- +title: Python integration +sidebar_position: 1 +description: Using Python and Mojo together. +--- + +Mojo is still in early development and many Python features are not yet +implemented. You can't currently write everything in Mojo that you can write in +Python. And Mojo doesn't have its own ecosystem of packages yet. + +To help bridge this gap, Mojo lets you import Python modules, call Python +functions, and interact with Python objects from Mojo code. The Python code +runs in a standard Python interpreter (CPython), so your existing Python code +doesn't need to change. + +## Create a Python environment + +To successfully integrate Python code with your Mojo project, your environment +must have a compatible Python runtime installed along with any additional +Python packages that you want to use. Currently, you can create a compatible +environment in a couple of ways: + +* We recommend that you use [Magic](/magic), our package manager and + virtual environment manager for MAX and Mojo projects. To use Magic to create + and manage the virtual environment for your Mojo/Python project, first + follow the instructions in [Install Magic](/magic/#install-magic). + Then you can create a new Mojo project like this: + + ```sh + magic init my-mojo-project --format mojoproject + ``` + + After creating the project, you can enter the project and install any + dependencies, for example [NumPy](https://numpy.org/): + + ```sh + cd my-mojo-project + ``` + + ```sh + magic add "numpy>=2.0" + ``` + +* Alternatively, you can also add MAX and Mojo to a + [conda](https://docs.conda.io/projects/conda/en/latest/index.html) project. + To do so, follow the steps in [Add MAX/Mojo to a conda project](/magic/conda). + +* It's also possible to convert an existing conda project to Magic as documented + in [Migrate a conda project to Magic](/magic/#migrate-a-conda-project-to-magic). + +## Import a Python module + +To import a Python module in Mojo, just call +[`Python.import_module()`](/mojo/stdlib/python/python/Python#import_module) +with the module name. The following shows an example of importing the standard +Python [NumPy](https://numpy.org/) package: + +```mojo +from python import Python + +def main(): + # This is equivalent to Python's `import numpy as np` + np = Python.import_module("numpy") + + # Now use numpy as if writing in Python + array = np.array([1, 2, 3]) + print(array) +``` + +Running this program produces the following output: + +``` +[1 2 3] +``` + +Assuming that you have the NumPy package installed in your +[environment](#create-a-python-environment), this imports NumPy and you can use any +of its features. + +A few things to note: + +* The `import_module()` method returns a reference to the module in the form of + a [`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) + wrapper. You must store the reference in a variable and then use it as shown + in the example above to access functions, classes, and other objects defined + by the module. See [Mojo wrapper objects](/mojo/manual/python/types#mojo-wrapper-objects) + for more information about the `PythonObject` type. + +* Currently, you cannot import individual members (such as a single Python class + or function). You must import the whole Python module and then access members + through the module name. + +* Mojo doesn't yet support top-level code, so the `import_module()` call must + be inside another method. This means you may need to import a module multiple + times or pass around a reference to the module. This works the same way as + Python: importing the module multiple times won't run the initialization + logic more than once, so you don't pay any performance penalty. + +* `import_module()` may raise an exception (for example, if the module isn't + installed). If you're using it inside an `fn` function, you need to either + handle errors (using a `try/except` clause), or add the `raises` keyword to + the function signature. You'll also see this when calling Python functions + that may raise exceptions. (Raising exceptions is much more common in Python + code than in the Mojo standard library, which + [limits their use for performance reasons](/mojo/roadmap#the-standard-library-has-limited-exceptions-use).) + +:::caution + +[`mojo build`](/mojo/cli/build) doesn't include the Python packages used by +your Mojo project. Instead, Mojo loads the Python interpreter and Python +packages at runtime, so they must be provided in the environment where you run +the Mojo program (such as inside the Magic environment where you built the +executable). For more information, see the section above to [create a Python +environment](#create-a-python-environment). + +::: + +### Import a local Python module + +If you have some local Python code you want to use in Mojo, just add +the directory to the Python path and then import the module. + +For example, suppose you have a Python file named `mypython.py`: + +```python title="mypython.py" +import numpy as np + +def gen_random_values(size, base): + # generate a size x size array of random numbers between base and base+1 + random_array = np.random.rand(size, size) + return random_array + base +``` + +Here's how you can import it and use it in a Mojo file: + +```mojo title="main.mojo" +from python import Python + +def main(): + Python.add_to_path("path/to/module") + mypython = Python.import_module("mypython") + + values = mypython.gen_random_values(2, 3) + print(values) +``` + +Both absolute and relative paths work with +[`add_to_path()`](/mojo/stdlib/python/python/Python#add_to_path). For example, +you can import from the local directory like this: + +```mojo +Python.add_to_path(".") +``` + +## Call Mojo from Python + +As shown above, you can call out to Python modules from Mojo. However, there's +currently no way to do the reverse—import Mojo modules from Python or call Mojo +functions from Python. + +This may present a challenge for using certain modules. For example, many UI +frameworks have a main event loop that makes callbacks to user-defined code +in response to UI events. This is sometimes called an "inversion of control" +pattern. Instead of your application code calling *in* to a library, the +framework code calls *out* to your application code. + +This pattern doesn't work because you can't pass Mojo callbacks to a Python +module. + +For example, consider the popular [Tkinter package](https://docs.python.org/3/library/tkinter.html). +The typical usage for Tkinter is something like this: + +* You create a main, or "root" window for the application. +* You add one or more UI widgets to the window. The widgets can have associated + callback functions (for example, when a button is pushed). +* You call the root window's `mainloop()` method, which listens for events, + updates the UI, and invokes callback functions. The main loop keeps running + until the application exits. + +Since Python can't call back into Mojo, one alternative is to have the Mojo +application drive the event loop and poll for updates. The following example +uses Tkinter, but the basic approach can be applied to other packages. + +First you create a Python module that defines a Tkinter interface, with a window +and single button: + +```python title="myapp.py" +import tkinter as tk + +class App: + def __init__(self): + self._root = tk.Tk() + self.clicked = False + + def click(self): + self.clicked = True + + def create_button(self, button_text: str): + button = tk.Button( + master=self._root, + text=button_text, + command=self.click + ) + button.place(relx=0.5, rely=0.5, anchor=tk.CENTER) + + def create(self, res: str): + self._root.geometry(res) + self.create_button("Hello Mojo!") + + def update(self): + self._root.update() +``` + +You can call this module from Mojo like this: + +```mojo title="main.mojo" +from python import Python + +def button_clicked(): + print("Hi from a Mojo🔥 fn!") + +def main(): + Python.add_to_path(".") + app = Python.import_module("myapp").App() + app.create("800x600") + + while True: + app.update() + if app.clicked: + button_clicked() + app.clicked = False +``` + +Instead of the Python module calling the Tkinter `mainloop()` method, the Mojo +code calls the `update()` method in a loop and checks the `clicked` attribute +after each update. diff --git a/docs/manual/python/types.ipynb b/docs/manual/python/types.ipynb deleted file mode 100644 index c7c4c4e558..0000000000 --- a/docs/manual/python/types.ipynb +++ /dev/null @@ -1,292 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Python types\n", - "sidebar_position: 2\n", - "description: Using Mojo types in Python, and Python types in Mojo.\n", - "---\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When calling Python methods, Mojo needs to convert back and forth between native\n", - "Python objects and native Mojo objects. Most of these conversions happen\n", - "automatically, but there are a number of cases that Mojo doesn't handle yet.\n", - "In these cases you may need to do an explicit conversion, or call an extra\n", - "method.\n", - "\n", - "## Mojo types in Python\n", - "\n", - "Mojo primitive types implicitly convert into Python objects.\n", - "Today we support lists, tuples, integers, floats, booleans, and strings.\n", - "\n", - "For example, given this Python function that prints Python types:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "def type_printer(value):\n", - " print(type(value))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "(You can ignore the `%%python` at the start of the code sample; it's explained\n", - "in the note below.)\n", - "\n", - "You can pass this Python function Mojo types with no problem:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "type_printer(4)\n", - "type_printer(3.14)\n", - "type_printer((\"Mojo\", True))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "This is a simplified code example written as a set of Jupyter\n", - "notebook cells. The first cell includes the `%%python` directive so it's\n", - "interpreted as Python. The second cell includes top-level Mojo code. You'd need\n", - "to adjust this code to run it elsewhere.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python types in Mojo\n", - "\n", - "You can also use Python objects from Mojo. For example, Mojo's \n", - "[`Dict`](/mojo/stdlib/collections/dict/Dict) and \n", - "[`List`](/mojo/stdlib/collections/list/List) types don't natively support\n", - "heterogeneous collections. One alternative is to use a Python dictionary or\n", - "list.\n", - "\n", - "For example, to create a Python dictionary, use the \n", - "[`dict()`](/mojo/stdlib/python/python/Python#dict) method:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "from python import Python\n", - "\n", - "def use_dict():\n", - " var dictionary = Python.dict()\n", - " dictionary[\"item_name\"] = \"whizbang\"\n", - " dictionary[\"price\"] = 11.75\n", - " dictionary[\"inventory\"] = 100\n", - " print(dictionary)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mojo wrapper objects\n", - "\n", - "When you use Python objects in your Mojo code, Mojo adds the \n", - "[`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) wrapper around\n", - "the Python object. This object exposes a number of common double underscore\n", - "methods (dunder methods) like `__getitem__()` and `__getattr__()`, passing them\n", - "through to the underlying Python object. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can explicitly create a wrapped Python object by initializing a \n", - "`PythonObject` with a Mojo literal:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "from python import PythonObject\n", - "\n", - "var py_list: PythonObject = [1, 2, 3, 4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most of the time, you can treat the wrapped object just like you'd treat it in \n", - "Python. You can use Python's `[]` operators to access an item in a list, and use\n", - "dot-notation to access attributes and call methods. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var n = py_list[2]\n", - "py_list.append(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "If you want to construct a Python type that doesn't have a literal Mojo \n", - "equivalent, you can also use the \n", - "[`Python.evaluate()`](/mojo/stdlib/python/python/Python#evaluate) method. For\n", - "example, to create a Python `set`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "def use_py_set():\n", - " var py_set = Python.evaluate('set([2, 3, 5, 7, 11])')\n", - " var num_items = len(py_set)\n", - " print(num_items, \" items in set.\") # prints \"5 items in set\"\n", - " print(py_set.__contains__(6)) # prints \"False\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TODO: You should be able to use the expression `6 in py_set`. However, because\n", - "of the way `PythonObject` currently works, you need to call the \n", - "`__contains__()` method directly.\n", - "\n", - "Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to \n", - "explicitly convert a Python value into a native Mojo value. \n", - "\n", - "Currently `PythonObject` conforms to the \n", - "[`Intable`](/mojo/stdlib/builtin/int/Intable), \n", - "[`Stringable`](/mojo/stdlib/builtin/str/Stringable), and \n", - "[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which \n", - "means you can convert Python values to Mojo `Int`, `String`, and `Bool` types\n", - "using the built-in \n", - "[`int()`](/mojo/stdlib/builtin/int/int-function),\n", - "[`str()`](/mojo/stdlib/builtin/str/str),\n", - "and [`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python \n", - "values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function.\n", - " \n", - "`PythonObject` also provides the\n", - "[`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for \n", - "converting to a Mojo floating point value.\n", - "\n", - "```mojo\n", - "var i: Int = int(py_int)\n", - "var s: String = str(py_string)\n", - "var b: Bool = bool(py_bool)\n", - "var f: Float64 = py_float.to_float64()\n", - "```\n", - "\n", - "### Comparing Python types in Mojo\n", - "\n", - "In conditionals, Python objects act like you'd expect them to: Python values \n", - "like `False` and `None` evaluate as false in Mojo, too.\n", - "\n", - "If you need to know the type of the underlying Python object, you can use the \n", - "[`Python.type()`](/mojo/stdlib/python/python/Python#type) method, which is \n", - "equivalent to the Python `type()` builtin. You can compare the identity of two\n", - "Python objects using the\n", - "[`Python.is_type()`](/mojo/stdlib/python/python/Python#is_type) method (which is\n", - "equivalent to the Python `is` operator):" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "def python_types():\n", - " from python import Python\n", - " from python import PythonObject\n", - "\n", - " var value1: PythonObject = 3.7\n", - " var value2 = Python.evaluate(\"10/3\")\n", - " var float_type = Python.evaluate(\"float\")\n", - "\n", - " print(Python.type(value1)) # \n", - " print(Python.is_type(Python.type(value1), Python.type(value2))) # True\n", - " print(Python.is_type(Python.type(value1), float_type)) # True\n", - " print(Python.is_type(Python.type(value1), Python.none())) # False\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One TODO item here: The `Python.is_type()` method is misleadingly named, since \n", - "it doesn't compare _types_, but object identity.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx new file mode 100644 index 0000000000..a7d25d0f9a --- /dev/null +++ b/docs/manual/python/types.mdx @@ -0,0 +1,172 @@ +--- +title: Python types +sidebar_position: 2 +description: Using Mojo types in Python, and Python types in Mojo. +--- + +When calling Python methods, Mojo needs to convert back and forth between native +Python objects and native Mojo objects. Most of these conversions happen +automatically, but there are a number of cases that Mojo doesn't handle yet. +In these cases you may need to do an explicit conversion, or call an extra +method. + +## Mojo types in Python + +Mojo primitive types implicitly convert into Python objects. +Today we support lists, tuples, integers, floats, booleans, and strings. + +For example, given this Python function that prints Python types: + +```mojo +%%python +def type_printer(value): + print(type(value)) +``` + +(You can ignore the `%%python` at the start of the code sample; it's explained +in the note below.) + +You can pass this Python function Mojo types with no problem: + +```mojo +type_printer(4) +type_printer(3.14) +type_printer(("Mojo", True)) +``` + +```output + + + +``` + +:::note + +This is a simplified code example written as a set of Jupyter +notebook cells. The first cell includes the `%%python` directive so it's +interpreted as Python. The second cell includes top-level Mojo code. You'd need +to adjust this code to run it elsewhere. + +::: + +## Python types in Mojo + +You can also use Python objects from Mojo. For example, Mojo's +[`Dict`](/mojo/stdlib/collections/dict/Dict) and +[`List`](/mojo/stdlib/collections/list/List) types don't natively support +heterogeneous collections. One alternative is to use a Python dictionary or +list. + +For example, to create a Python dictionary, use the +[`dict()`](/mojo/stdlib/python/python/Python#dict) method: + +```mojo +from python import Python + +def use_dict(): + var dictionary = Python.dict() + dictionary["item_name"] = "whizbang" + dictionary["price"] = 11.75 + dictionary["inventory"] = 100 + print(dictionary) + +``` + +### Mojo wrapper objects + +When you use Python objects in your Mojo code, Mojo adds the +[`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) wrapper around +the Python object. This object exposes a number of common double underscore +methods (dunder methods) like `__getitem__()` and `__getattr__()`, passing them +through to the underlying Python object. + +You can explicitly create a wrapped Python object by initializing a +`PythonObject` with a Mojo literal: + +```mojo +from python import PythonObject + +var py_list: PythonObject = [1, 2, 3, 4] +``` + +Most of the time, you can treat the wrapped object just like you'd treat it in +Python. You can use Python's `[]` operators to access an item in a list, and use +dot-notation to access attributes and call methods. For example: + +```mojo +var n = py_list[2] +py_list.append(5) +``` + +If you want to construct a Python type that doesn't have a literal Mojo +equivalent, you can also use the +[`Python.evaluate()`](/mojo/stdlib/python/python/Python#evaluate) method. For +example, to create a Python `set`: + +```mojo +def use_py_set(): + var py_set = Python.evaluate('set([2, 3, 5, 7, 11])') + var num_items = len(py_set) + print(num_items, " items in set.") # prints "5 items in set" + print(py_set.__contains__(6)) # prints "False" +``` + +TODO: You should be able to use the expression `6 in py_set`. However, because +of the way `PythonObject` currently works, you need to call the +`__contains__()` method directly. + +Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to +explicitly convert a Python value into a native Mojo value. + +Currently `PythonObject` conforms to the +[`Intable`](/mojo/stdlib/builtin/int/Intable), +[`Stringable`](/mojo/stdlib/builtin/str/Stringable), and +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which +means you can convert Python values to Mojo `Int`, `String`, and `Bool` types +using the built-in +[`int()`](/mojo/stdlib/builtin/int/int-function), +[`str()`](/mojo/stdlib/builtin/str/str), +and [`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python +values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function. + +`PythonObject` also provides the +[`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for +converting to a Mojo floating point value. + +```mojo +var i: Int = int(py_int) +var s: String = str(py_string) +var b: Bool = bool(py_bool) +var f: Float64 = py_float.to_float64() +``` + +### Comparing Python types in Mojo + +In conditionals, Python objects act like you'd expect them to: Python values +like `False` and `None` evaluate as false in Mojo, too. + +If you need to know the type of the underlying Python object, you can use the +[`Python.type()`](/mojo/stdlib/python/python/Python#type) method, which is +equivalent to the Python `type()` builtin. You can compare the identity of two +Python objects using the +[`Python.is_type()`](/mojo/stdlib/python/python/Python#is_type) method (which is +equivalent to the Python `is` operator): + +```mojo +def python_types(): + from python import Python + from python import PythonObject + + var value1: PythonObject = 3.7 + var value2 = Python.evaluate("10/3") + var float_type = Python.evaluate("float") + + print(Python.type(value1)) # + print(Python.is_type(Python.type(value1), Python.type(value2))) # True + print(Python.is_type(Python.type(value1), float_type)) # True + print(Python.is_type(Python.type(value1), Python.none())) # False + +``` + +One TODO item here: The `Python.is_type()` method is misleadingly named, since +it doesn't compare *types*, but object identity. diff --git a/docs/manual/structs.ipynb b/docs/manual/structs.ipynb deleted file mode 100644 index aff69827b1..0000000000 --- a/docs/manual/structs.ipynb +++ /dev/null @@ -1,485 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Structs\n", - "sidebar_position: 4\n", - "description: Introduction to Mojo structures (structs).\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A Mojo struct is a data structure that allows you to encapsulate fields and\n", - "methods that operate on an abstraction, such as a data type or an object.\n", - "**Fields** are variables that hold data relevant to the struct, and **methods**\n", - "are functions inside a struct that generally act upon the field data.\n", - "\n", - "For example, if you're building a graphics program, you can use a struct to\n", - "define an `Image` that has fields to store information about each image\n", - "(such as the pixels) and methods that perform actions on it (such as rotate\n", - "it).\n", - "\n", - "For the most part, Mojo's struct format is designed to provide a static,\n", - "memory-safe data structure for high-level data types used in programs. For\n", - "example, all the data types in Mojo's standard library (such as `Int`,\n", - "`Bool`, `String`, and `Tuple`) are defined as structs.\n", - "\n", - "If you understand how [functions](/mojo/manual/functions) and\n", - "[variables](/mojo/manual/variables) work in Mojo, you probably\n", - "noticed that Mojo is designed to provide dynamic programming features in a\n", - "`def` function while enforcing stronger code safety in `fn` functions. When it\n", - "comes to structs, Mojo leans toward the safe side: You can still choose whether\n", - "to use either `def` or `fn` declarations for methods, but all fields must be\n", - "declared with `var`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Struct definition\n", - "\n", - "You can define a simple struct called `MyPair` with two fields like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, you can't instantiate this struct because it has no constructor\n", - "method. So here it is with a constructor to initialize the two fields:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the first argument in the `__init__()` method is `inout self`. For\n", - "now, ignore `inout` (it's an [argument\n", - "convention](/mojo/manual/values/ownership#argument-conventions) that\n", - "declares `self` as a mutable reference); all you need to know right now is that\n", - "`self` must be the first argument. It references the current struct instance\n", - "(it allows code in the method to refer to \"itself\"). *When you call the\n", - "constructor, you never pass a value for `self`—Mojo passes it in \n", - "automatically.*\n", - "\n", - "The `__init__()` method is one of many [special methods](#special-methods)\n", - "(also known as \"dunder methods\" because they have *d*ouble *under*scores) with\n", - "pre-determined names.\n", - "\n", - ":::note\n", - "\n", - "You can't assign values when you declare fields. You must initialize\n", - "all of the struct's fields in the constructor. (If you try to leave a field\n", - "uninitialized, the code won't compile.)\n", - "\n", - ":::\n", - "\n", - "Once you have a constructor, you can create an instance of `MyPair` and set the\n", - "fields:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "var mine = MyPair(2,4)\n", - "print(mine.first)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Methods\n", - "\n", - "In addition to special methods like `__init__()`, you can add any other method\n", - "you want to your struct. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second\n", - "\n", - " fn get_sum(self) -> Int:\n", - " return self.first + self.second" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "14\n" - ] - } - ], - "source": [ - "var mine = MyPair(6, 8)\n", - "print(mine.get_sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `get_sum()` also uses the `self` argument, because this is\n", - "the only way you can access the struct's fields in a method. The name `self` is\n", - "just a convention, and you can use any name you want to refer to the struct \n", - "instance that is always passed as the first argument.\n", - "\n", - "Methods that take the implicit `self` argument are called _instance methods_ \n", - "because they act on an instance of the struct. \n", - "\n", - ":::note\n", - "\n", - "The `self` argument in a struct method is the only argument in an\n", - "`fn` function that does not require a type. You can include it if you want, but\n", - "you can elide it because Mojo already knows its type (`MyPair` in this case).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Static methods\n", - "\n", - "A struct can also have _static methods_. A static method can be called without \n", - "creating an instance of the struct. Unlike instance methods, a static method\n", - "doesn't receive the implicit `self` argument, so it can't access any fields on\n", - "the struct.\n", - "\n", - "To declare a static method, use the `@staticmethod` decorator and don't include\n", - "a `self` argument:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "struct Logger:\n", - "\n", - " fn __init__(out self):\n", - " pass\n", - "\n", - " @staticmethod\n", - " fn log_info(message: String):\n", - " print(\"Info: \", message)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can invoke a static method by calling it on the type (in this case,\n", - "`Logger`). You can also call it on an instance of the type. Both forms are\n", - "shown below:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Info: Static method called.\n", - "Info: Static method called from instance.\n" - ] - } - ], - "source": [ - "Logger.log_info(\"Static method called.\")\n", - "var l = Logger()\n", - "l.log_info(\"Static method called from instance.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Structs compared to classes\n", - "\n", - "If you're familiar with other object-oriented languages, then structs might\n", - "sound a lot like classes, and there are some similarities, but also some\n", - "important differences. Eventually, Mojo will also support classes to match the\n", - "behavior of Python classes.\n", - "\n", - "So, let's compare Mojo structs to Python classes. They both support methods,\n", - "fields, operator overloading, decorators for metaprogramming, and more, but\n", - "their key differences are as follows:\n", - "\n", - "- Python classes are dynamic: they allow for dynamic dispatch, monkey-patching\n", - "(or “swizzling”), and dynamically binding instance fields at runtime.\n", - "\n", - "- Mojo structs are static: they are bound at compile-time (you cannot add\n", - "methods at runtime). Structs allow you to trade flexibility for performance\n", - "while being safe and easy to use.\n", - "\n", - "- Mojo structs do not support inheritance (\"sub-classing\"), but a struct can\n", - " implement [traits](/mojo/manual/traits).\n", - "\n", - "- Python classes support class attributes—values that are shared by all\n", - " instances of the class, equivalent to class variables or static data members\n", - " in other languages.\n", - " \n", - "- Mojo structs don't support static data members.\n", - "\n", - "Syntactically, the biggest difference compared to a Python class is that all\n", - "fields in a struct must be explicitly declared with `var`.\n", - "\n", - "In Mojo, the structure and contents of a struct are set at compile time and\n", - "can’t be changed while the program is running. Unlike in Python, where you can\n", - "add, remove, or change attributes of an object on the fly, Mojo doesn’t allow\n", - "that for structs.\n", - "\n", - "However, the static nature of structs helps Mojo run your code faster. The\n", - "program knows exactly where to find the struct’s information and how to use it\n", - "without any extra steps or delays at runtime.\n", - "\n", - "Mojo’s structs also work really well with features you might already know from\n", - "Python, like operator overloading (which lets you change how math symbols like\n", - "`+` and `-` work with your own data, using [special\n", - "methods](#special-methods)).\n", - "\n", - "As mentioned above, all Mojo's standard types\n", - "(`Int`, `String`, etc.) are made using structs, rather than being hardwired\n", - "into the language itself. This gives you more flexibility and control when\n", - "writing your code, and it means you can define your own types with all the same\n", - "capabilities (there's no special treatment for the standard library types)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Special methods\n", - "\n", - "Special methods (or \"dunder methods\") such as `__init__()` are pre-determined\n", - "method names that you can define in a struct to perform a special task.\n", - "\n", - "Although it's possible to call special methods with their method names, the\n", - "point is that you never should, because Mojo automatically invokes them in\n", - "circumstances where they're needed (which is why they're also called \"magic\n", - "methods\"). For example, Mojo calls the `__init__()` method when you create\n", - "an instance of the struct; and when Mojo destroys the instance, it calls the\n", - "`__del__()` method (if it exists).\n", - "\n", - "Even operator behaviors that appear built-in (`+`, `<`, `==`, `|`, and so on)\n", - "are implemented as special methods that Mojo implicitly calls upon to perform\n", - "operations or comparisons on the type that the operator is applied to.\n", - "\n", - "Mojo supports a long list of special methods; far too many to discuss here, but\n", - "they generally match all of [Python's special\n", - "methods](https://docs.python.org/3/reference/datamodel#special-method-names)\n", - "and they usually accomplish one of two types of tasks:\n", - "\n", - "- Operator overloading: A lot of special methods are designed to overload\n", - " operators such as `<` (less-than), `+` (add), and `|` (or) so they work\n", - " appropriately with each type. For example, look at the methods listed for Mojo's\n", - " [`Int` type](/mojo/stdlib/builtin/int/Int). One such method is `__lt__()`, which\n", - " Mojo calls to perform a less-than comparison between two integers (for example,\n", - " `num1 < num2`).\n", - "\n", - "- Lifecycle event handling: These special methods deal with the lifecycle and\n", - " value ownership of an instance. For example, `__init__()` and `__del__()`\n", - " demarcate the beginning and end of an instance lifetime, and other special\n", - " methods define the behavior for other lifecycle events such as how to copy or\n", - " move a value.\n", - "\n", - "You can learn all about the lifecycle special methods in the [Value\n", - "lifecycle](/mojo/manual/lifecycle/) section. However, most structs are simple\n", - "aggregations of other types, so unless your type requires custom behaviors when\n", - "an instance is created, copied, moved, or destroyed, you can synthesize the\n", - "essential lifecycle methods you need (and save yourself some time) by adding\n", - "the `@value` decorator." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `@value` decorator\n", - "\n", - "When you add the [`@value` decorator](/mojo/manual/decorators/value) to a\n", - "struct, Mojo will synthesize the essential lifecycle methods so your object\n", - "provides full value semantics. Specifically, it generates the `__init__()`,\n", - "`__copyinit__()`, and `__moveinit__()` methods, which allow you to construct,\n", - "copy, and move your struct type in a manner that's value semantic and\n", - "compatible with Mojo's ownership model.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo will notice that you don't have a member-wise initializer, a move\n", - "constructor, or a copy constructor, and it will synthesize these for you as if\n", - "you had written:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without the copy and move constructors, the following code would not work\n", - "because Mojo would not know how to copy an instance of `MyPet`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Charlie\n" - ] - } - ], - "source": [ - "var dog = MyPet(\"Charlie\", 5)\n", - "var poodle = dog\n", - "print(poodle.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you add the `@value` decorator, Mojo synthesizes each special method above\n", - "only if it doesn't exist already. That is, you can still implement a custom\n", - "version of each method.\n", - "\n", - "In addition to the `inout` argument convention you already saw with\n", - "`__init__()`, this code also introduces `owned`, which is another argument\n", - "convention that ensures the argument has unique ownership of the value.\n", - "For more detail, see the section about [value\n", - "ownership](/mojo/manual/values/ownership).\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx new file mode 100644 index 0000000000..92f0fdc1c0 --- /dev/null +++ b/docs/manual/structs.mdx @@ -0,0 +1,317 @@ +--- +title: Structs +sidebar_position: 4 +description: Introduction to Mojo structures (structs). +--- + +A Mojo struct is a data structure that allows you to encapsulate fields and +methods that operate on an abstraction, such as a data type or an object. +**Fields** are variables that hold data relevant to the struct, and **methods** +are functions inside a struct that generally act upon the field data. + +For example, if you're building a graphics program, you can use a struct to +define an `Image` that has fields to store information about each image +(such as the pixels) and methods that perform actions on it (such as rotate +it). + +For the most part, Mojo's struct format is designed to provide a static, +memory-safe data structure for high-level data types used in programs. For +example, all the data types in Mojo's standard library (such as `Int`, +`Bool`, `String`, and `Tuple`) are defined as structs. + +If you understand how [functions](/mojo/manual/functions) and +[variables](/mojo/manual/variables) work in Mojo, you probably +noticed that Mojo is designed to provide dynamic programming features in a +`def` function while enforcing stronger code safety in `fn` functions. When it +comes to structs, Mojo leans toward the safe side: You can still choose whether +to use either `def` or `fn` declarations for methods, but all fields must be +declared with `var`. + +## Struct definition + +You can define a simple struct called `MyPair` with two fields like this: + +```mojo +struct MyPair: + var first: Int + var second: Int +``` + +However, you can't instantiate this struct because it has no constructor +method. So here it is with a constructor to initialize the two fields: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second +``` + +Notice that the first argument in the `__init__()` method is `out self`. For +now, ignore `out` (it's an [argument +convention](/mojo/manual/values/ownership#argument-conventions) that +declares `self` as a mutable reference); all you need to know right now is that +`self` must be the first argument. It references the current struct instance +(it allows code in the method to refer to "itself"). *When you call the +constructor, you never pass a value for `self`—Mojo passes it in +automatically.* + +The `__init__()` method is one of many [special methods](#special-methods) +(also known as "dunder methods" because they have *d*ouble *under*scores) with +pre-determined names. + +:::note + +You can't assign values when you declare fields. You must initialize +all of the struct's fields in the constructor. (If you try to leave a field +uninitialized, the code won't compile.) + +::: + +Once you have a constructor, you can create an instance of `MyPair` and set the +fields: + +```mojo +var mine = MyPair(2,4) +print(mine.first) +``` + +```output +2 +``` + +## Methods + +In addition to special methods like `__init__()`, you can add any other method +you want to your struct. For example: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second + + fn get_sum(self) -> Int: + return self.first + self.second +``` + +```mojo +var mine = MyPair(6, 8) +print(mine.get_sum()) +``` + +```output +14 +``` + +Notice that `get_sum()` also uses the `self` argument, because this is +the only way you can access the struct's fields in a method. The name `self` is +just a convention, and you can use any name you want to refer to the struct +instance that is always passed as the first argument. + +Methods that take the implicit `self` argument are called *instance methods* +because they act on an instance of the struct. + +:::note + +The `self` argument in a struct method is the only argument in an +`fn` function that does not require a type. You can include it if you want, but +you can elide it because Mojo already knows its type (`MyPair` in this case). + +::: + +### Static methods + +A struct can also have *static methods*. A static method can be called without +creating an instance of the struct. Unlike instance methods, a static method +doesn't receive the implicit `self` argument, so it can't access any fields on +the struct. + +To declare a static method, use the `@staticmethod` decorator and don't include +a `self` argument: + +```mojo +struct Logger: + + fn __init__(out self): + pass + + @staticmethod + fn log_info(message: String): + print("Info: ", message) +``` + +You can invoke a static method by calling it on the type (in this case, +`Logger`). You can also call it on an instance of the type. Both forms are +shown below: + +```mojo +Logger.log_info("Static method called.") +var l = Logger() +l.log_info("Static method called from instance.") +``` + +```output +Info: Static method called. +Info: Static method called from instance. +``` + +## Structs compared to classes + +If you're familiar with other object-oriented languages, then structs might +sound a lot like classes, and there are some similarities, but also some +important differences. Eventually, Mojo will also support classes to match the +behavior of Python classes. + +So, let's compare Mojo structs to Python classes. They both support methods, +fields, operator overloading, decorators for metaprogramming, and more, but +their key differences are as follows: + +* Python classes are dynamic: they allow for dynamic dispatch, monkey-patching + (or “swizzling”), and dynamically binding instance fields at runtime. + +* Mojo structs are static: they are bound at compile-time (you cannot add + methods at runtime). Structs allow you to trade flexibility for performance + while being safe and easy to use. + +* Mojo structs do not support inheritance ("sub-classing"), but a struct can + implement [traits](/mojo/manual/traits). + +* Python classes support class attributes—values that are shared by all + instances of the class, equivalent to class variables or static data members + in other languages. + +* Mojo structs don't support static data members. + +Syntactically, the biggest difference compared to a Python class is that all +fields in a struct must be explicitly declared with `var`. + +In Mojo, the structure and contents of a struct are set at compile time and +can’t be changed while the program is running. Unlike in Python, where you can +add, remove, or change attributes of an object on the fly, Mojo doesn’t allow +that for structs. + +However, the static nature of structs helps Mojo run your code faster. The +program knows exactly where to find the struct’s information and how to use it +without any extra steps or delays at runtime. + +Mojo’s structs also work really well with features you might already know from +Python, like operator overloading (which lets you change how math symbols like +`+` and `-` work with your own data, using [special +methods](#special-methods)). + +As mentioned above, all Mojo's standard types +(`Int`, `String`, etc.) are made using structs, rather than being hardwired +into the language itself. This gives you more flexibility and control when +writing your code, and it means you can define your own types with all the same +capabilities (there's no special treatment for the standard library types). + +## Special methods + +Special methods (or "dunder methods") such as `__init__()` are pre-determined +method names that you can define in a struct to perform a special task. + +Although it's possible to call special methods with their method names, the +point is that you never should, because Mojo automatically invokes them in +circumstances where they're needed (which is why they're also called "magic +methods"). For example, Mojo calls the `__init__()` method when you create +an instance of the struct; and when Mojo destroys the instance, it calls the +`__del__()` method (if it exists). + +Even operator behaviors that appear built-in (`+`, `<`, `==`, `|`, and so on) +are implemented as special methods that Mojo implicitly calls upon to perform +operations or comparisons on the type that the operator is applied to. + +Mojo supports a long list of special methods; far too many to discuss here, but +they generally match all of [Python's special +methods](https://docs.python.org/3/reference/datamodel#special-method-names) +and they usually accomplish one of two types of tasks: + +* Operator overloading: A lot of special methods are designed to overload + operators such as `<` (less-than), `+` (add), and `|` (or) so they work + appropriately with each type. For example, look at the methods listed for Mojo's + [`Int` type](/mojo/stdlib/builtin/int/Int). One such method is `__lt__()`, which + Mojo calls to perform a less-than comparison between two integers (for example, + `num1 < num2`). + +* Lifecycle event handling: These special methods deal with the lifecycle and + value ownership of an instance. For example, `__init__()` and `__del__()` + demarcate the beginning and end of an instance lifetime, and other special + methods define the behavior for other lifecycle events such as how to copy or + move a value. + +You can learn all about the lifecycle special methods in the [Value +lifecycle](/mojo/manual/lifecycle/) section. However, most structs are simple +aggregations of other types, so unless your type requires custom behaviors when +an instance is created, copied, moved, or destroyed, you can synthesize the +essential lifecycle methods you need (and save yourself some time) by adding +the `@value` decorator. + +### `@value` decorator + +When you add the [`@value` decorator](/mojo/manual/decorators/value) to a +struct, Mojo will synthesize the essential lifecycle methods so your object +provides full value semantics. Specifically, it generates the `__init__()`, +`__copyinit__()`, and `__moveinit__()` methods, which allow you to construct, +copy, and move your struct type in a manner that's value semantic and +compatible with Mojo's ownership model. + +For example: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo will notice that you don't have a member-wise initializer, a move +constructor, or a copy constructor, and it will synthesize these for you as if +you had written: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Without the copy and move constructors, the following code would not work +because Mojo would not know how to copy an instance of `MyPet`: + +```mojo +var dog = MyPet("Charlie", 5) +var poodle = dog +print(poodle.name) +``` + +```output +Charlie +``` + +When you add the `@value` decorator, Mojo synthesizes each special method above +only if it doesn't exist already. That is, you can still implement a custom +version of each method. + +In addition to the `out` argument convention you already saw with +`__init__()`, this code also introduces `owned`, which is another argument +convention that ensures the argument has unique ownership of the value. +For more detail, see the section about [value +ownership](/mojo/manual/values/ownership). diff --git a/docs/manual/traits.ipynb b/docs/manual/traits.ipynb deleted file mode 100755 index ef9fbd824e..0000000000 --- a/docs/manual/traits.ipynb +++ /dev/null @@ -1,750 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Traits\n", - "description: Define shared behavior for types.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A _trait_ is a set of requirements that a type must implement. You can think of\n", - "it as a contract: a type that _conforms_ to a trait guarantees that it \n", - "implements all of the features of the trait.\n", - "\n", - "Traits are similar to Java _interfaces_, C++ _concepts_, Swift _protocols_, and\n", - "Rust _traits_. If you're familiar with any of those features, Mojo traits solve\n", - "the same basic problem.\n", - "\n", - "## Background\n", - "\n", - "In dynamically-typed languages like Python, you don't need to explicitly declare\n", - "that two classes are similar. This is easiest to show by example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "class Duck:\n", - " def quack(self):\n", - " print(\"Quack.\")\n", - "\n", - "class StealthCow:\n", - " def quack(self):\n", - " print(\"Moo!\")\n", - "\n", - "def make_it_quack_python(maybe_a_duck):\n", - " try:\n", - " maybe_a_duck.quack()\n", - " except:\n", - " print(\"Not a duck.\")\n", - "\n", - "make_it_quack_python(Duck())\n", - "make_it_quack_python(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `Duck` and `StealthCow` classes aren't related in any way, but they both \n", - "define a `quack()` method, so they work the same in the `make_it_quack()`\n", - "function. This works because Python uses dynamic dispatch—it identifies the\n", - "methods to call at runtime. So `make_it_quack_python()` doesn't care what types\n", - "you're passing it, only the fact that they implement the `quack()` method.\n", - "\n", - "In a statically-typed environment, this approach doesn't work:\n", - "[`fn` functions](/mojo/manual/functions#fn-functions) require you to\n", - "specify the type of each argument. If you wanted to write this example in Mojo \n", - "_without_ traits, you'd need to write a function overload for each input type.\n", - "All of the examples from here on are in Mojo, so we'll just call the function\n", - "`make_it_quack()` going forward." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Quack\n", - "Moo!\n" - ] - } - ], - "source": [ - "@value\n", - "struct Duck:\n", - " fn quack(self):\n", - " print(\"Quack\")\n", - "\n", - "@value\n", - "struct StealthCow:\n", - " fn quack(self):\n", - " print(\"Moo!\")\n", - "\n", - "fn make_it_quack(definitely_a_duck: Duck):\n", - " definitely_a_duck.quack()\n", - "\n", - "fn make_it_quack(not_a_duck: StealthCow):\n", - " not_a_duck.quack()\n", - "\n", - "make_it_quack(Duck())\n", - "make_it_quack(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This isn't too bad with only two classes. But the more classes you want to\n", - "support, the less practical this approach is.\n", - "\n", - "You might notice that the Mojo versions of `make_it_quack()` don't include the\n", - "`try/except` statement. We don't need it because Mojo's static type checking\n", - "ensures that you can only pass instances of `Duck` or `StealthCow` into the \n", - "`make_it_quack()`function.\n", - "\n", - "## Using traits\n", - "\n", - "Traits solve this problem by letting you define a shared set of _behaviors_ that\n", - "types can implement. Then you can write a function that depends on the trait,\n", - "rather than individual types. As an example, let's update the `make_it_quack()`\n", - "example using traits. The first step is defining a trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "trait Quackable:\n", - " fn quack(self):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A trait looks a lot like a struct, except it's introduced by the `trait` \n", - "keyword. Right now, a trait can only contain method signatures, and cannot\n", - "include method implementations. Each method signature must be followed by\n", - "three dots (`...`) to indicate that the method is unimplemented.\n", - "\n", - ":::note TODO\n", - "\n", - "In the future, we plan to support defining fields and default method\n", - "implementations inside a trait. Right now, though, a trait can only declare\n", - "method signatures.\n", - "\n", - ":::\n", - "\n", - "Next we create some structs that conform to the `Quackable` trait. To indicate\n", - "that a struct conforms to a trait, include the trait name in parenthesis after\n", - "the struct name. You can also include multiple traits, separated by commas. \n", - "(If you're familiar with Python, this looks just like Python's inheritance\n", - "syntax.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Duck(Quackable):\n", - " fn quack(self):\n", - " print(\"Quack\")\n", - "\n", - "@value\n", - "struct StealthCow(Quackable):\n", - " fn quack(self):\n", - " print(\"Moo!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The struct needs to implement any methods that are declared in the trait. The \n", - "compiler enforces conformance: if a struct says it conforms to a trait, it must\n", - "implement everything required by the trait or the code won't compile.\n", - "\n", - "Finally, you can define a function that takes a `Quackable` like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "fn make_it_quack[T: Quackable](maybe_a_duck: T):\n", - " maybe_a_duck.quack()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This syntax may look a little unfamiliar if you haven't dealt with Mojo\n", - "[parameters](/mojo/manual/parameters/) before. What this signature\n", - "means is that `maybe_a_duck` is an argument of type `T`, where `T` is a type\n", - "that must conform to the `Quackable` trait. TODO: This syntax is a little \n", - "verbose, and we hope to make it more ergonomic in a future release.\n", - "\n", - "Using the method is simple enough:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Quack\n", - "Moo!\n" - ] - } - ], - "source": [ - "make_it_quack(Duck())\n", - "make_it_quack(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that you don't need the square brackets when you call `make_it_quack()`: \n", - "the compiler infers the type of the argument, and ensures the type has the\n", - "required trait.\n", - "\n", - "One limitation of traits is that you can't add traits to existing types. For\n", - "example, if you define a new `Numeric` trait, you can't add it to the standard\n", - "library `Float64` and `Int` types. However, the standard library already\n", - "includes a few traits, and we'll be adding more over time.\n", - "\n", - "### Traits can require static methods\n", - "\n", - "In addition to regular instance methods, traits can specify required static \n", - "methods. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "trait HasStaticMethod:\n", - " @staticmethod\n", - " fn do_stuff(): ...\n", - "\n", - "fn fun_with_traits[T: HasStaticMethod]():\n", - " T.do_stuff()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implicit trait conformance\n", - "\n", - "Mojo also supports _implicit_ trait conformance. That is, if a type implements\n", - "all of the methods required for a trait, it's treated as conforming to the\n", - "trait, even if it doesn't explicitly include the trait in its declaration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "struct RubberDucky:\n", - " fn quack(self):\n", - " print(\"Squeak!\")\n", - "\n", - "make_it_quack(RubberDucky())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implicit conformance can be handy if you're defining a trait and you want it to\n", - "work with types that you don't control—such as types from the standard library,\n", - "or a third-party library.\n", - "\n", - "However, we still strongly recommend explicit trait conformance wherever\n", - "possible. This has two advantages:\n", - "\n", - "- Documentation. It makes it clear that the type conforms to the trait, without\n", - " having to scan all of its methods.\n", - "\n", - "- Future feature support. When default method implementations are added to\n", - " traits, they'll only work for types that explicitly conform to traits." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Trait inheritance\n", - "\n", - "Traits can inherit from other traits. A trait that inherits from another trait\n", - "includes all of the requirements declared by the parent trait. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "trait Animal:\n", - " fn make_sound(self):\n", - " ...\n", - "\n", - "# Bird inherits from Animal\n", - "trait Bird(Animal):\n", - " fn fly(self):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since `Bird` inherits from `Animal`, a struct that conforms to the `Bird` trait\n", - "needs to implement **both** `make_sound()` and `fly()`. And since every `Bird`\n", - "conforms to `Animal`, a struct that conforms to `Bird` can be passed to any\n", - "function that requires an `Animal`.\n", - "\n", - "To inherit from multiple traits, add a comma-separated list of traits inside the \n", - "parenthesis. For example, you could define a `NamedAnimal` trait that combines the\n", - "requirements of the `Animal` trait and a new `Named` trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "trait Named:\n", - " fn get_name(self) -> String:\n", - " ...\n", - "\n", - "trait NamedAnimal(Animal, Named):\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Traits and lifecycle methods\n", - "\n", - "Traits can specify required \n", - "[lifecycle methods](/mojo/manual/lifecycle/#lifecycles-and-lifetimes), including\n", - "constructors, copy constructors and move constructors.\n", - "\n", - "For example, the following code creates a `MassProducible` trait. A \n", - "`MassProducible` type has a default (no-argument) constructor and can be moved.\n", - "It uses the built-in [`Movable`](/mojo/stdlib/builtin/value/Movable) trait,\n", - "which requires the type to have a [move \n", - "constructor](/mojo/manual/lifecycle/life#move-constructor).\n", - "\n", - "The `factory[]()` function returns a newly-constructed instance of a \n", - "`MassProducible` type." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "trait DefaultConstructible:\n", - " fn __init__(out self): ...\n", - "\n", - "trait MassProducible(DefaultConstructible, Movable):\n", - " pass\n", - "\n", - "fn factory[T: MassProducible]() -> T:\n", - " return T()\n", - "\n", - "struct Thing(MassProducible):\n", - " var id: Int\n", - "\n", - " fn __init__(out self):\n", - " self.id = 0\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.id = existing.id\n", - "\n", - "var thing = factory[Thing]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that [`@register_passable(\"trivial\")`](/mojo/manual/decorators/register-passable#register_passabletrivial) \n", - "types have restrictions on their lifecycle methods: they can't define copy or\n", - "move constructors, because they don't require any custom logic.\n", - "\n", - "For the purpose of trait conformance, the compiler treats trivial types as\n", - "copyable and movable." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "## Built-in traits\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo standard library currently includes a few traits. They're implemented\n", - "by a number of standard library types, and you can also implement these on your\n", - "own types:\n", - "\n", - " - [`Absable`](/mojo/stdlib/builtin/math/Absable)\n", - " - [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType)\n", - " - [`Boolable`](/mojo/stdlib/builtin/bool/Boolable)\n", - " - [`BoolableCollectionElement`](/mojo/stdlib/builtin/value/BoolableCollectionElement)\n", - " - [`BoolableKeyElement`](/mojo/stdlib/builtin/value/BoolableKeyElement)\n", - " - [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement)\n", - " - [`Comparable`](/mojo/stdlib/builtin/comparable/Comparable)\n", - " - [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement)\n", - " - [`Copyable`](/mojo/stdlib/builtin/value/Copyable)\n", - " - [`Defaultable`](/mojo/stdlib/builtin/value/Defaultable)\n", - " - [`Writable`](/mojo/stdlib/utils/write/Writable)\n", - " - [`Hashable`](/mojo/stdlib/builtin/hash/Hashable)\n", - " - [`Indexer`](/mojo/stdlib/builtin/int/Indexer)\n", - " - [`Intable`](/mojo/stdlib/builtin/int/Intable)\n", - " - [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising)\n", - " - [`KeyElement`](/mojo/stdlib/collections/dict/KeyElement)\n", - " - [`Movable`](/mojo/stdlib/builtin/value/Movable)\n", - " - [`PathLike`](/mojo/stdlib/os/pathlike/PathLike)\n", - " - [`Powable`](/mojo/stdlib/builtin/math/Powable)\n", - " - [`Representable`](/mojo/stdlib/builtin/repr/Representable)\n", - " - [`RepresentableCollectionElement`](/mojo/stdlib/builtin/value/RepresentableCollectionElement)\n", - " - [`RepresentableKeyElement`](/mojo/stdlib/collections/dict/RepresentableKeyElement)\n", - " - [`Sized`](/mojo/stdlib/builtin/len/Sized)\n", - " - [`Stringable`](/mojo/stdlib/builtin/str/Stringable)\n", - " - [`StringableCollectionElement`](/mojo/stdlib/builtin/value/StringableCollectionElement)\n", - " - [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising)\n", - " - [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable)\n", - " - [`Roundable`](/mojo/stdlib/builtin/math/Roundable)\n", - " - [`Writer`](/mojo/stdlib/utils/write/Writer)\n", - " - [`Truncable`](/mojo/stdlib/builtin/_math/Truncable)\n", - "\n", - "The API reference docs linked above include usage examples for each trait. The\n", - "following sections discuss a few of these traits.\n", - "\n", - "### The `Sized` trait\n", - "\n", - "The [`Sized`](/mojo/stdlib/builtin/len/Sized) trait identifies types that\n", - "have a measurable length, like strings and arrays. \n", - "\n", - "Specifically, `Sized` requires a type to implement the `__len__()` method. \n", - "This trait is used by the built-in [`len()`](/mojo/stdlib/builtin/len/len) \n", - "function. For example, if you're writing a custom list type, you could \n", - "implement this trait so your type works with `len()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n" - ] - } - ], - "source": [ - "struct MyList(Sized):\n", - " var size: Int\n", - " # ...\n", - "\n", - " fn __init__(out self):\n", - " self.size = 0\n", - "\n", - " fn __len__(self) -> Int:\n", - " return self.size\n", - "\n", - "print(len(MyList()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `Intable` and `IntableRaising` traits\n", - "\n", - "The [`Intable`](/mojo/stdlib/builtin/int/Intable) trait identifies a type that\n", - "can be implicitly converted to `Int`. The\n", - "[`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) trait describes a\n", - "type can be converted to an `Int`, but the conversion might raise an error.\n", - "\n", - "Both of these traits require the type to implement the `__int__()` method. For\n", - "example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], - "source": [ - "@value\n", - "struct Foo(Intable):\n", - " var i: Int\n", - "\n", - " fn __int__(self) -> Int:\n", - " return self.i\n", - "\n", - "var foo = Foo(42)\n", - "print(int(foo) == 42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `Stringable`, `Representable`, and `Writable` traits\n", - "\n", - "The [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait identifies a type\n", - "that can be implicitly converted to\n", - "[`String`](/mojo/stdlib/collections/string/String). The\n", - "[`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) trait\n", - "describes a type that can be converted to a `String`, but the conversion might\n", - "raise an error. Any type that conforms to `Stringable` or `StringableRaising`\n", - "also works with the built-in [`str()`](/mojo/stdlib/builtin/str/str) function to\n", - "explicitly return a `String`. These traits also mean that the type can support\n", - "both the `{!s}` and `{}` format specifiers of the `String` class's\n", - "[`format()`](/mojo/stdlib/collections/string/String#format) method. These traits\n", - "require the type to define the\n", - "[`__str__()`](/mojo/stdlib/builtin/str/Stringable#__str__) method.\n", - "\n", - "In contrast, the [`Representable`](/mojo/stdlib/builtin/repr/Representable)\n", - "trait defines a type that can be used with the built-in\n", - "[`repr()`](/mojo/stdlib/builtin/repr/repr) function, as well as the `{!r}`\n", - "format specifier of the `format()` method. This trait requires the type to\n", - "define the [`__repr__()`](/mojo/stdlib/builtin/repr/Representable#__repr__)\n", - "method, which should compute the \"official\" string representation of a type. If\n", - "at all possible, this should look like a valid Mojo expression that could be\n", - "used to recreate a struct instance with the same value.\n", - "\n", - "The [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable)\n", - "trait denotes a trait composition of the `Stringable` and `Representable`\n", - "traits. It requires a type to implement both a `__str__()` and a `__repr__()`\n", - "method.\n", - "\n", - "The [`Writable`](/mojo/stdlib/utils/write/Writable) trait describes a\n", - "type that can be converted to a stream of UTF-8 encoded data by writing to a\n", - "`Writer` object. The [`print()`](/mojo/stdlib/builtin/io/print) function\n", - "requires that its arguments conform to the `Writable` trait. This enables\n", - "efficient stream-based writing by default, avoiding unnecessary intermediate\n", - "String heap allocations.\n", - "\n", - "The `Writable` trait requires a type to implement a\n", - "[`write_to()`](/mojo/stdlib/utils/write/Writable#write_to) method, which\n", - "is provided with an object that conforms to the\n", - "[`Writer`](/mojo/stdlib/utils/write/Writer) as an argument. You then\n", - "invoke the `Writer` instance's\n", - "[`write()`](/mojo/stdlib/utils/write/Writer#write) method to write a\n", - "sequence of `Writable` arguments constituting the `String` representation of\n", - "your type.\n", - "\n", - "While this might sound complex at first, in practice you can minimize\n", - "boilerplate and duplicated code by using the [`String.write()`](/mojo/stdlib/collections/string/String#write) static function to\n", - "implement the type's `Stringable` implementation in terms of its `Writable`\n", - "implementation. Here is a simple example of a type that implements all of the\n", - "`Stringable`, `Representable`, and `Writable` traits:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dog(name='Rex', age=5)\n", - "Dog(Rex, 5)\n", - "String: Dog(Rex, 5)\n", - "Representation: Dog(name='Rex', age=5)\n" - ] - } - ], - "source": [ - "@value\n", - "struct Dog(Stringable, Representable, Writable):\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __repr__(self) -> String:\n", - " return \"Dog(name=\" + repr(self.name) + \", age=\" + repr(self.age) + \")\"\n", - "\n", - " fn __str__(self) -> String:\n", - " return String.write(self)\n", - "\n", - " fn write_to[W: Writer](self, inout writer: W) -> None:\n", - " writer.write(\"Dog(\", self.name, \", \", self.age, \")\")\n", - "\n", - "var dog = Dog(\"Rex\", 5)\n", - "print(repr(dog))\n", - "print(dog)\n", - "\n", - "var dog_info = String(\"String: {!s}\\nRepresentation: {!r}\").format(dog, dog)\n", - "print(dog_info)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "### The `AnyType` trait\n", - "\n", - "When building a generic container type, one challenge is knowing how to dispose\n", - "of the contained items when the container is destroyed. Any type that \n", - "dynamically allocates memory needs to supply a \n", - "[destructor](/mojo/manual/lifecycle/death#destructor) (`__del__()` method)\n", - "that must be called to free the allocated memory. But not all types have a \n", - "destructor, and your Mojo code has no way to determine which is which.\n", - "\n", - "The [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) trait solves this\n", - "issue: every trait implicitly inherits from `AnyType`, and all structs conform\n", - "to `AnyType`, which guarantees that the type has a destructor. For types that \n", - "don't have one, Mojo adds a no-op destructor. This means you can call the \n", - "destructor on any type.\n", - "\n", - "This makes it possible to build generic collections without leaking memory. When\n", - "the collection's destructor is called, it can safely call the destructors on\n", - "every item it contains." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generic structs with traits\n", - "\n", - "You can also use traits when defining a generic container. A generic container\n", - "is a container (for example, an array or hashmap) that can hold different data\n", - "types. In a dynamic language like Python it's easy to add different types of\n", - "items to a container. But in a statically-typed environment the compiler needs\n", - "to be able to identify the types at compile time. For example, if the container\n", - "needs to copy a value, the compiler needs to verify that the type can be copied.\n", - "\n", - "The [`List`](/mojo/stdlib/collections/list) type is an example of a\n", - "generic container. A single `List` can only hold a single type of data.\n", - "For example, you can create a list of integer values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2 3 " - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "var list = List[Int](1, 2, 3)\n", - "for i in range(len(list)):\n", - " print(list[i], sep=\" \", end=\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use traits to define requirements for elements that are stored in a\n", - "container. For example, `List` requires elements that can be moved and\n", - "copied. To store a struct in a `List`, the struct needs to conform to\n", - "the `CollectionElement` trait, which requires a \n", - "[copy constructor](/mojo/manual/lifecycle/life#copy-constructor) and a \n", - "[move constructor](/mojo/manual/lifecycle/life#move-constructor).\n", - "\n", - "Building generic containers is an advanced topic. For an introduction, see the\n", - "section on \n", - "[parameterized structs](/mojo/manual/parameters/#parameterized-structs)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx new file mode 100644 index 0000000000..99da582c4b --- /dev/null +++ b/docs/manual/traits.mdx @@ -0,0 +1,515 @@ +--- +title: Traits +description: Define shared behavior for types. +--- + +A *trait* is a set of requirements that a type must implement. You can think of +it as a contract: a type that *conforms* to a trait guarantees that it +implements all of the features of the trait. + +Traits are similar to Java *interfaces*, C++ *concepts*, Swift *protocols*, and +Rust *traits*. If you're familiar with any of those features, Mojo traits solve +the same basic problem. + +## Background + +In dynamically-typed languages like Python, you don't need to explicitly declare +that two classes are similar. This is easiest to show by example: + +```mojo +%%python +class Duck: + def quack(self): + print("Quack.") + +class StealthCow: + def quack(self): + print("Moo!") + +def make_it_quack_python(maybe_a_duck): + try: + maybe_a_duck.quack() + except: + print("Not a duck.") + +make_it_quack_python(Duck()) +make_it_quack_python(StealthCow()) +``` + +The `Duck` and `StealthCow` classes aren't related in any way, but they both +define a `quack()` method, so they work the same in the `make_it_quack()` +function. This works because Python uses dynamic dispatch—it identifies the +methods to call at runtime. So `make_it_quack_python()` doesn't care what types +you're passing it, only the fact that they implement the `quack()` method. + +In a statically-typed environment, this approach doesn't work: +[`fn` functions](/mojo/manual/functions#fn-functions) require you to +specify the type of each argument. If you wanted to write this example in Mojo +*without* traits, you'd need to write a function overload for each input type. +All of the examples from here on are in Mojo, so we'll just call the function +`make_it_quack()` going forward. + +```mojo +@value +struct Duck: + fn quack(self): + print("Quack") + +@value +struct StealthCow: + fn quack(self): + print("Moo!") + +fn make_it_quack(definitely_a_duck: Duck): + definitely_a_duck.quack() + +fn make_it_quack(not_a_duck: StealthCow): + not_a_duck.quack() + +make_it_quack(Duck()) +make_it_quack(StealthCow()) +``` + +```output +Quack +Moo! +``` + +This isn't too bad with only two classes. But the more classes you want to +support, the less practical this approach is. + +You might notice that the Mojo versions of `make_it_quack()` don't include the +`try/except` statement. We don't need it because Mojo's static type checking +ensures that you can only pass instances of `Duck` or `StealthCow` into the +`make_it_quack()`function. + +## Using traits + +Traits solve this problem by letting you define a shared set of *behaviors* that +types can implement. Then you can write a function that depends on the trait, +rather than individual types. As an example, let's update the `make_it_quack()` +example using traits. The first step is defining a trait: + +```mojo +trait Quackable: + fn quack(self): + ... +``` + +A trait looks a lot like a struct, except it's introduced by the `trait` +keyword. Right now, a trait can only contain method signatures, and cannot +include method implementations. Each method signature must be followed by +three dots (`...`) to indicate that the method is unimplemented. + +:::note TODO + +In the future, we plan to support defining fields and default method +implementations inside a trait. Right now, though, a trait can only declare +method signatures. + +::: + +Next we create some structs that conform to the `Quackable` trait. To indicate +that a struct conforms to a trait, include the trait name in parenthesis after +the struct name. You can also include multiple traits, separated by commas. +(If you're familiar with Python, this looks just like Python's inheritance +syntax.) + +```mojo +@value +struct Duck(Quackable): + fn quack(self): + print("Quack") + +@value +struct StealthCow(Quackable): + fn quack(self): + print("Moo!") +``` + +The struct needs to implement any methods that are declared in the trait. The +compiler enforces conformance: if a struct says it conforms to a trait, it must +implement everything required by the trait or the code won't compile. + +Finally, you can define a function that takes a `Quackable` like this: + +```mojo +fn make_it_quack[T: Quackable](maybe_a_duck: T): + maybe_a_duck.quack() +``` + +This syntax may look a little unfamiliar if you haven't dealt with Mojo +[parameters](/mojo/manual/parameters/) before. What this signature +means is that `maybe_a_duck` is an argument of type `T`, where `T` is a type +that must conform to the `Quackable` trait. TODO: This syntax is a little +verbose, and we hope to make it more ergonomic in a future release. + +Using the method is simple enough: + +```mojo +make_it_quack(Duck()) +make_it_quack(StealthCow()) +``` + +```output +Quack +Moo! +``` + +Note that you don't need the square brackets when you call `make_it_quack()`: +the compiler infers the type of the argument, and ensures the type has the +required trait. + +One limitation of traits is that you can't add traits to existing types. For +example, if you define a new `Numeric` trait, you can't add it to the standard +library `Float64` and `Int` types. However, the standard library already +includes a few traits, and we'll be adding more over time. + +### Traits can require static methods + +In addition to regular instance methods, traits can specify required static +methods. + +```mojo +trait HasStaticMethod: + @staticmethod + fn do_stuff(): ... + +fn fun_with_traits[T: HasStaticMethod](): + T.do_stuff() +``` + +## Implicit trait conformance + +Mojo also supports *implicit* trait conformance. That is, if a type implements +all of the methods required for a trait, it's treated as conforming to the +trait, even if it doesn't explicitly include the trait in its declaration: + +```mojo +struct RubberDucky: + fn quack(self): + print("Squeak!") + +make_it_quack(RubberDucky()) +``` + +Implicit conformance can be handy if you're defining a trait and you want it to +work with types that you don't control—such as types from the standard library, +or a third-party library. + +However, we still strongly recommend explicit trait conformance wherever +possible. This has two advantages: + +* Documentation. It makes it clear that the type conforms to the trait, without + having to scan all of its methods. + +* Future feature support. When default method implementations are added to + traits, they'll only work for types that explicitly conform to traits. + +## Trait inheritance + +Traits can inherit from other traits. A trait that inherits from another trait +includes all of the requirements declared by the parent trait. For example: + +```mojo +trait Animal: + fn make_sound(self): + ... + +# Bird inherits from Animal +trait Bird(Animal): + fn fly(self): + ... +``` + +Since `Bird` inherits from `Animal`, a struct that conforms to the `Bird` trait +needs to implement **both** `make_sound()` and `fly()`. And since every `Bird` +conforms to `Animal`, a struct that conforms to `Bird` can be passed to any +function that requires an `Animal`. + +To inherit from multiple traits, add a comma-separated list of traits inside the +parenthesis. For example, you could define a `NamedAnimal` trait that combines the +requirements of the `Animal` trait and a new `Named` trait: + +```mojo +trait Named: + fn get_name(self) -> String: + ... + +trait NamedAnimal(Animal, Named): + pass +``` + +## Traits and lifecycle methods + +Traits can specify required +[lifecycle methods](/mojo/manual/lifecycle/#lifecycles-and-lifetimes), including +constructors, copy constructors and move constructors. + +For example, the following code creates a `MassProducible` trait. A +`MassProducible` type has a default (no-argument) constructor and can be moved. +It uses the built-in [`Movable`](/mojo/stdlib/builtin/value/Movable) trait, +which requires the type to have a [move +constructor](/mojo/manual/lifecycle/life#move-constructor). + +The `factory[]()` function returns a newly-constructed instance of a +`MassProducible` type. + +```mojo +trait DefaultConstructible: + fn __init__(out self): ... + +trait MassProducible(DefaultConstructible, Movable): + pass + +fn factory[T: MassProducible]() -> T: + return T() + +struct Thing(MassProducible): + var id: Int + + fn __init__(out self): + self.id = 0 + + fn __moveinit__(out self, owned existing: Self): + self.id = existing.id + +var thing = factory[Thing]() +``` + +Note that [`@register_passable("trivial")`](/mojo/manual/decorators/register-passable#register_passabletrivial) +types have restrictions on their lifecycle methods: they can't define copy or +move constructors, because they don't require any custom logic. + +For the purpose of trait conformance, the compiler treats trivial types as +copyable and movable. + +## Built-in traits + +The Mojo standard library currently includes a few traits. They're implemented +by a number of standard library types, and you can also implement these on your +own types: + +* [`Absable`](/mojo/stdlib/builtin/math/Absable) +* [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) +* [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) +* [`BoolableCollectionElement`](/mojo/stdlib/builtin/value/BoolableCollectionElement) +* [`BoolableKeyElement`](/mojo/stdlib/builtin/value/BoolableKeyElement) +* [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) +* [`Comparable`](/mojo/stdlib/builtin/comparable/Comparable) +* [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) +* [`Copyable`](/mojo/stdlib/builtin/value/Copyable) +* [`Defaultable`](/mojo/stdlib/builtin/value/Defaultable) +* [`Writable`](/mojo/stdlib/utils/write/Writable) +* [`Hashable`](/mojo/stdlib/builtin/hash/Hashable) +* [`Indexer`](/mojo/stdlib/builtin/int/Indexer) +* [`Intable`](/mojo/stdlib/builtin/int/Intable) +* [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) +* [`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) +* [`Movable`](/mojo/stdlib/builtin/value/Movable) +* [`PathLike`](/mojo/stdlib/os/pathlike/PathLike) +* [`Powable`](/mojo/stdlib/builtin/math/Powable) +* [`Representable`](/mojo/stdlib/builtin/repr/Representable) +* [`RepresentableCollectionElement`](/mojo/stdlib/builtin/value/RepresentableCollectionElement) +* [`RepresentableKeyElement`](/mojo/stdlib/collections/dict/RepresentableKeyElement) +* [`Sized`](/mojo/stdlib/builtin/len/Sized) +* [`Stringable`](/mojo/stdlib/builtin/str/Stringable) +* [`StringableCollectionElement`](/mojo/stdlib/builtin/value/StringableCollectionElement) +* [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) +* [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable) +* [`Roundable`](/mojo/stdlib/builtin/math/Roundable) +* [`Writer`](/mojo/stdlib/utils/write/Writer) +* [`Truncable`](/mojo/stdlib/builtin/_math/Truncable) + +The API reference docs linked above include usage examples for each trait. The +following sections discuss a few of these traits. + +### The `Sized` trait + +The [`Sized`](/mojo/stdlib/builtin/len/Sized) trait identifies types that +have a measurable length, like strings and arrays. + +Specifically, `Sized` requires a type to implement the `__len__()` method. +This trait is used by the built-in [`len()`](/mojo/stdlib/builtin/len/len) +function. For example, if you're writing a custom list type, you could +implement this trait so your type works with `len()`: + +```mojo +struct MyList(Sized): + var size: Int + # ... + + fn __init__(out self): + self.size = 0 + + fn __len__(self) -> Int: + return self.size + +print(len(MyList())) +``` + +```output +0 +``` + +### The `Intable` and `IntableRaising` traits + +The [`Intable`](/mojo/stdlib/builtin/int/Intable) trait identifies a type that +can be implicitly converted to `Int`. The +[`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) trait describes a +type can be converted to an `Int`, but the conversion might raise an error. + +Both of these traits require the type to implement the `__int__()` method. For +example: + +```mojo +@value +struct Foo(Intable): + var i: Int + + fn __int__(self) -> Int: + return self.i + +var foo = Foo(42) +print(int(foo) == 42) +``` + +```output +True +``` + +### The `Stringable`, `Representable`, and `Writable` traits + +The [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait identifies a type +that can be implicitly converted to +[`String`](/mojo/stdlib/collections/string/String). The +[`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) trait +describes a type that can be converted to a `String`, but the conversion might +raise an error. Any type that conforms to `Stringable` or `StringableRaising` +also works with the built-in [`str()`](/mojo/stdlib/builtin/str/str) function to +explicitly return a `String`. These traits also mean that the type can support +both the `{!s}` and `{}` format specifiers of the `String` class's +[`format()`](/mojo/stdlib/collections/string/String#format) method. These traits +require the type to define the +[`__str__()`](/mojo/stdlib/builtin/str/Stringable#__str__) method. + +In contrast, the [`Representable`](/mojo/stdlib/builtin/repr/Representable) +trait defines a type that can be used with the built-in +[`repr()`](/mojo/stdlib/builtin/repr/repr) function, as well as the `{!r}` +format specifier of the `format()` method. This trait requires the type to +define the [`__repr__()`](/mojo/stdlib/builtin/repr/Representable#__repr__) +method, which should compute the "official" string representation of a type. If +at all possible, this should look like a valid Mojo expression that could be +used to recreate a struct instance with the same value. + +The [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable) +trait denotes a trait composition of the `Stringable` and `Representable` +traits. It requires a type to implement both a `__str__()` and a `__repr__()` +method. + +The [`Writable`](/mojo/stdlib/utils/write/Writable) trait describes a +type that can be converted to a stream of UTF-8 encoded data by writing to a +`Writer` object. The [`print()`](/mojo/stdlib/builtin/io/print) function +requires that its arguments conform to the `Writable` trait. This enables +efficient stream-based writing by default, avoiding unnecessary intermediate +String heap allocations. + +The `Writable` trait requires a type to implement a +[`write_to()`](/mojo/stdlib/utils/write/Writable#write_to) method, which +is provided with an object that conforms to the +[`Writer`](/mojo/stdlib/utils/write/Writer) as an argument. You then +invoke the `Writer` instance's +[`write()`](/mojo/stdlib/utils/write/Writer#write) method to write a +sequence of `Writable` arguments constituting the `String` representation of +your type. + +While this might sound complex at first, in practice you can minimize +boilerplate and duplicated code by using the [`String.write()`](/mojo/stdlib/collections/string/String#write) static function to +implement the type's `Stringable` implementation in terms of its `Writable` +implementation. Here is a simple example of a type that implements all of the +`Stringable`, `Representable`, and `Writable` traits: + +```mojo +@value +struct Dog(Stringable, Representable, Writable): + var name: String + var age: Int + + fn __repr__(self) -> String: + return "Dog(name=" + repr(self.name) + ", age=" + repr(self.age) + ")" + + fn __str__(self) -> String: + return String.write(self) + + fn write_to[W: Writer](self, mut writer: W) -> None: + writer.write("Dog(", self.name, ", ", self.age, ")") + +var dog = Dog("Rex", 5) +print(repr(dog)) +print(dog) + +var dog_info = String("String: {!s}\nRepresentation: {!r}").format(dog, dog) +print(dog_info) +``` + +```output +Dog(name='Rex', age=5) +Dog(Rex, 5) +String: Dog(Rex, 5) +Representation: Dog(name='Rex', age=5) +``` + +### The `AnyType` trait + +When building a generic container type, one challenge is knowing how to dispose +of the contained items when the container is destroyed. Any type that +dynamically allocates memory needs to supply a +[destructor](/mojo/manual/lifecycle/death#destructor) (`__del__()` method) +that must be called to free the allocated memory. But not all types have a +destructor, and your Mojo code has no way to determine which is which. + +The [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) trait solves this +issue: every trait implicitly inherits from `AnyType`, and all structs conform +to `AnyType`, which guarantees that the type has a destructor. For types that +don't have one, Mojo adds a no-op destructor. This means you can call the +destructor on any type. + +This makes it possible to build generic collections without leaking memory. When +the collection's destructor is called, it can safely call the destructors on +every item it contains. + +## Generic structs with traits + +You can also use traits when defining a generic container. A generic container +is a container (for example, an array or hashmap) that can hold different data +types. In a dynamic language like Python it's easy to add different types of +items to a container. But in a statically-typed environment the compiler needs +to be able to identify the types at compile time. For example, if the container +needs to copy a value, the compiler needs to verify that the type can be copied. + +The [`List`](/mojo/stdlib/collections/list) type is an example of a +generic container. A single `List` can only hold a single type of data. +For example, you can create a list of integer values like this: + +```mojo +from collections import List + +var list = List[Int](1, 2, 3) +for i in range(len(list)): + print(list[i], sep=" ", end="") +``` + +```output +1 2 3 +``` + +You can use traits to define requirements for elements that are stored in a +container. For example, `List` requires elements that can be moved and +copied. To store a struct in a `List`, the struct needs to conform to +the `CollectionElement` trait, which requires a +[copy constructor](/mojo/manual/lifecycle/life#copy-constructor) and a +[move constructor](/mojo/manual/lifecycle/life#move-constructor). + +Building generic containers is an advanced topic. For an introduction, see the +section on +[parameterized structs](/mojo/manual/parameters/#parameterized-structs). diff --git a/docs/manual/types.ipynb b/docs/manual/types.ipynb deleted file mode 100644 index 1cd9762b51..0000000000 --- a/docs/manual/types.ipynb +++ /dev/null @@ -1,1124 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Types\n", - "sidebar_position: 1\n", - "description: Standard Mojo data types.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All values in Mojo have an associated data type. Most of the types are\n", - "_nominal_ types, defined by a [`struct`](/mojo/manual/structs). These types are\n", - "nominal (or \"named\") because type equality is determined by the type's _name_,\n", - "not its _structure_.\n", - "\n", - "There are a some types that aren't defined as structs:\n", - "\n", - "* Functions are typed based on their signatures.\n", - "* `NoneType` is a type with one instance, the `None` object, which is used to\n", - " signal \"no value.\"\n", - "\n", - "Mojo comes with a standard library that provides a number of useful types and\n", - "utility functions. These standard types aren’t privileged. Each of the standard\n", - "library types is defined just like user-defined types—even basic types like\n", - "[`Int`](/mojo/stdlib/builtin/int/Int) and\n", - "[`String`](/mojo/stdlib/collections/string/String). But these standard library\n", - "types are the building blocks you'll use for most Mojo programs.\n", - "\n", - "The most common types are _built-in types_, which are always available and\n", - "don't need to be imported. These include types for numeric values, strings,\n", - "boolean values, and others.\n", - "\n", - "The standard library also includes many more types that you can import as\n", - "needed, including collection types, utilities for interacting with the\n", - "filesystem and getting system information, and so on.\n", - "\n", - "## Numeric types\n", - "\n", - "Mojo's most basic numeric type is `Int`, which represents a signed integer of\n", - "the largest size supported by the system—typically 64 bits or 32 bits.\n", - "\n", - "Mojo also has built-in types for integer, unsigned integer, and floating-point \n", - "values of various precisions:\n", - "\n", - "
\n", - "\n", - "| Type name | Description |\n", - "|---------------|--------------|\n", - "| `Int8` | 8-bit signed integer |\n", - "| `UInt8` | 8-bit unsigned integer |\n", - "| `Int16` | 16-bit signed integer |\n", - "| `UInt16` | 16-bit unsigned integer |\n", - "| `Int32` | 32-bit signed integer |\n", - "| `UInt32` | 32-bit unsigned integer |\n", - "| `Int64` | 64-bit signed integer |\n", - "| `UInt64` | 64-bit unsigned integer |\n", - "| `Float16` | 16-bit floating point number (IEEE 754-2008 binary16) |\n", - "| `Float32` | 32-bit floating point number (IEEE 754-2008 binary32) |\n", - "| `Float64` | 64-bit floating point number (IEEE 754-2008 binary64) |\n", - "
Table 1. Numeric types with specific precision
\n", - "
\n", - "\n", - "The types in Table 1 are actually all aliases to a single type, \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD), which is discussed later.\n", - "\n", - "All of the numeric types support the usual numeric and bitwise operators. The \n", - "[`math`](/mojo/stdlib/math/) module provides a number of additional math\n", - "functions.\n", - "\n", - "You may wonder when to use `Int` and when to use the other integer \n", - "types. In general, `Int` is a good safe default when you need an integer type \n", - "and you don't require a specific bit width. Using `Int` as the default integer \n", - "type for APIs makes APIs more consistent and predictable.\n", - "\n", - "### Signed and unsigned integers\n", - "\n", - "Mojo supports both signed (`Int`) and unsigned (`UInt`) integers. You can use \n", - "the general `Int` or `UInt` types when you do not require a specific bit width.\n", - "Note that any alias to a fixed-precision type will be of type \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD).\n", - "\n", - "You might prefer to use unsigned integers over signed integers in conditions \n", - "where you don't need negative numbers, are not writing for a public API, or need \n", - "additional range.\n", - "\n", - "Mojo's `UInt` type represents an unsigned integer of the \n", - "[word size](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the \n", - "CPU, which is 64 bits on 64-bit CPUs and 32 bits on 32-bit CPUs. If you wish to \n", - "use a fixed size unsigned integer, you can use `UInt8`, `UInt16`, `UInt32`, or \n", - "`UInt64`, which are aliases to the [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) \n", - "type. \n", - "\n", - "Signed and unsigned integers of the same bit width can represent the same number \n", - "of values, but have different ranges. For example, an `Int8` can represent 256 \n", - "values ranging from -128 to 127. A `UInt8` can also represent 256 values, but \n", - "represents a range of 0 to 255. \n", - "\n", - "Signed and unsigned integers also have different overflow behavior. When a \n", - "signed integer overflows outside the range of values that its type can \n", - "represent, the value overflows to negative numbers. For example, adding `1` to \n", - "`var si: Int8 = 127` results in `-128`. \n", - "\n", - "When an unsigned integer overflows outside the range of values that its type can \n", - "represent, the value overflows to zero. So, adding `1` to `var ui: UInt8 = 255` \n", - "is equal to `0`.\n", - "\n", - "### Floating-point numbers\n", - "\n", - "Floating-point types represent real numbers. Because not all real numbers can be\n", - "expressed in a finite number of bits, floating-point numbers can't represent\n", - "every value exactly.\n", - "\n", - "The floating-point types listed in Table 1—`Float64`, `Float32`, and \n", - "`Float16`—follow the IEEE 754-2008 standard for representing floating-point \n", - "values. Each type includes a sign bit, one set of bits representing an exponent,\n", - "and another set representing the fraction or mantissa. Table 2 shows how each of \n", - "these types are represented in memory.\n", - "\n", - "
\n", - "\n", - "| Type name | Sign | Exponent | Mantissa |\n", - "|------------|-------|-----------|----------|\n", - "| `Float64` | 1 bit | 11 bits | 52 bits |\n", - "| `Float32` | 1 bit | 8 bits | 23 bits |\n", - "| `Float16` | 1 bit | 5 bits | 10 bits |\n", - "
Table 2. Details of floating-point types
\n", - "
\n", - "\n", - "Numbers with exponent values of all ones or all zeros represent special values,\n", - "allowing floating-point numbers to represent infinity, negative infinity,\n", - "signed zeros, and not-a-number (NaN). For more details on how numbers are\n", - "represented, see [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754) on\n", - "Wikipedia.\n", - "\n", - "A few things to note with floating-point values:\n", - "\n", - "- Rounding errors. Rounding may produce unexpected results. For example, 1/3\n", - " can't be represented exactly in these floating-point formats. The more\n", - " operations you perform with floating-point numbers, the more the rounding\n", - " errors accumulate. \n", - "\n", - "- Space between consecutive numbers. The space between consecutive numbers is\n", - " variable across the range of a floating-point number format. For numbers close\n", - " to zero, the distance between consecutive numbers is very small. For large\n", - " positive and negative numbers, the space between consecutive numbers is\n", - " greater than 1, so it may not be possible to represent consecutive integers.\n", - "\n", - "Because the values are approximate, it is rarely useful to compare them with\n", - "the equality operator (`==`). Consider the following example:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], - "source": [ - "var big_num = 1.0e16\n", - "var bigger_num = big_num+1.0\n", - "print(big_num == bigger_num)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comparison operators (`<` `>=` and so on) work with floating point numbers. You\n", - "can also use the [`math.isclose()`](/mojo/stdlib/math/math/isclose) function to\n", - "compare whether two floating-point numbers are equal within a specified\n", - "tolerance." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Numeric literals\n", - "\n", - "In addition to these numeric types, the standard libraries provides integer and\n", - "floating-point literal types, \n", - "[`IntLiteral`](/mojo/stdlib/builtin/int_literal/IntLiteral) and \n", - "[`FloatLiteral`](/mojo/stdlib/builtin/float_literal/FloatLiteral).\n", - "\n", - "These literal types are used at compile time to represent literal numbers that\n", - "appear in the code. In general, you should never instantiate these types\n", - "yourself.\n", - "\n", - "Table 3 summarizes the literal formats you can use to represent numbers.\n", - "\n", - "
\n", - "\n", - "| Format | Examples | Notes |\n", - "|--------|---------|-------|\n", - "| Integer literal | `1760` | Integer literal, in decimal format. |\n", - "| Hexadecimal literal | `0xaa`, `0xFF` | Integer literal, in hexadecimal format.
Hex digits are case-insensitive. |\n", - "| Octal literal | `0o77` | Integer literal, in octal format. |\n", - "| Binary literal | `0b0111` | Integer literal, in binary format. |\n", - "| Floating-point literal | `3.14`, `1.2e9` | Floating-point literal.
Must include the decimal point to be interpreted as floating-point. |\n", - "
Table 3. Numeric literal formats
\n", - "
\n", - "\n", - "At compile time, the literal types are arbitrary-precision (also called \n", - "infinite-precision) values, so the compiler can perform compile-time \n", - "calculations without overflow or rounding errors.\n", - "\n", - "At runtime the values are converted to finite-precision types—`Int` for\n", - "integer values, and `Float64` for floating-point values. (This process of \n", - "converting a value that can only exist at compile time into a runtime value is\n", - "called _materialization_.) \n", - "\n", - "The following code sample shows the difference between an arbitrary-precision \n", - "calculation and the same calculation done using `Float64` values at runtime,\n", - "which suffers from rounding errors." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.0 0.99999999999999978\n" - ] - } - ], - "source": [ - "var arbitrary_precision = 3.0 * (4.0 / 3.0 - 1.0)\n", - "# use a variable to force the following calculation to occur at runtime\n", - "var three = 3.0\n", - "var finite_precision = three * (4.0 / three - 1.0)\n", - "print(arbitrary_precision, finite_precision)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### `SIMD` and `DType`\n", - "\n", - "To support high-performance numeric processing, Mojo uses the\n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type as the basis for its numeric\n", - "types. SIMD (single instruction, multiple data) is a processor technology that\n", - "allows you to perform an operation on an entire set of operands at once. Mojo's\n", - "`SIMD` type abstracts SIMD operations. A `SIMD` value represents a SIMD\n", - "_vector_—that is, a fixed-size array of values that can fit into a processor's\n", - "register. SIMD vectors are defined by two\n", - "[_parameters_](/mojo/manual/parameters/):\n", - "\n", - "- A `DType` value, defining the data type in the vector (for example, \n", - " 32-bit floating-point numbers).\n", - "- The number of elements in the vector, which must be a power of two.\n", - "\n", - "For example, you can define a vector of four `Float32` values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var vec = SIMD[DType.float32, 4](3.0, 2.0, 2.0, 1.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Math operations on SIMD values are \n", - "applied _elementwise_, on each individual element in the vector. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2, 6, 15, 28]\n" - ] - } - ], - "source": [ - "var vec1 = SIMD[DType.int8, 4](2, 3, 5, 7)\n", - "var vec2 = SIMD[DType.int8, 4](1, 2, 3, 4)\n", - "var product = vec1 * vec2\n", - "print(product)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "### Scalar values\n", - "\n", - "The `SIMD` module defines several _type aliases_ that are shorthand for\n", - "different types of `SIMD` vectors. In particular, the `Scalar` type is just a\n", - "`SIMD` vector with a single element. The numeric types listed in \n", - "[Table 1](#table-1), like `Int8` and `Float32` are actually type aliases for\n", - "different types of scalar values:\n", - "\n", - "```mojo\n", - "alias Scalar = SIMD[size=1]\n", - "alias Int8 = Scalar[DType.int8]\n", - "alias Float32 = Scalar[DType.float32]\n", - "```\n", - "\n", - "This may seem a little confusing at first, but it means that whether you're \n", - "working with a single `Float32` value or a vector of float32 values,\n", - "the math operations go through exactly the same code path." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### The `DType` type\n", - "\n", - "The `DType` struct describes the different data types that a `SIMD` vector can\n", - "hold, and defines a number of utility functions for operating on those data\n", - "types. The `DType` struct defines a set of aliases that act as identifiers for\n", - "the different data types, like `DType.int8` and `DType.float32`. You use\n", - "these aliases when declaring a `SIMD` vector:\n", - "\n", - "```mojo\n", - "var v: SIMD[DType.float64, 16]\n", - "```\n", - "\n", - "Note that `DType.float64` isn't a _type_, it's a value that describes a data\n", - "type. You can't create a variable with the type `DType.float64`. You can create\n", - "a variable with the type `SIMD[DType.float64, 1]` (or `Float64`, which is the\n", - "same thing).\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "float32 is floating point: True\n", - "float32 is integral: False\n", - "Min/max finite values for float32\n", - "-3.4028234663852886e+38 3.4028234663852886e+38\n" - ] - } - ], - "source": [ - "from utils.numerics import max_finite, min_finite\n", - "\n", - "def describeDType[dtype: DType]():\n", - " print(dtype, \"is floating point:\", dtype.is_floating_point())\n", - " print(dtype, \"is integral:\", dtype.is_integral())\n", - " print(\"Min/max finite values for\", dtype)\n", - " print(min_finite[dtype](), max_finite[dtype]())\n", - "\n", - "describeDType[DType.float32]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "There are several other data types in the standard library that also use\n", - "the `DType` abstraction. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Strings\n", - "\n", - "Mojo's `String` type represents a mutable string. (For Python programmers, note\n", - "that this is different from Python's standard string, which is immutable.)\n", - "Strings support a variety of operators and common methods.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing Mojo strings\n" - ] - } - ], - "source": [ - "var s: String = \"Testing\"\n", - "s += \" Mojo strings\"\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most standard library types conform to the \n", - "[`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, which represents\n", - "a type that can be converted to a string. Use `str(value)` to\n", - "explicitly convert a value to a string:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Items in list: 5\n" - ] - } - ], - "source": [ - "var s = str(\"Items in list: \") + str(5)\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### String literals\n", - "\n", - "As with numeric types, the standard library includes a string literal type used\n", - "to represent literal strings in the program source. String literals are\n", - "enclosed in either single or double quotes.\n", - "\n", - "Adjacent literals are concatenated together, so you can define a long string\n", - "using a series of literals broken up over several lines:\n", - "\n", - "```\n", - "var s = \"A very long string which is \"\n", - " \"broken into two literals for legibility.\"\n", - "```\n", - "\n", - "To define a multi-line string, enclose the literal in three single or double\n", - "quotes:\n", - "\n", - "```\n", - "var s = \"\"\"\n", - "Multi-line string literals let you \n", - "enter long blocks of text, including \n", - "newlines.\"\"\"\n", - "```\n", - "\n", - "Note that the triple double quote form is also used for API documentation\n", - "strings.\n", - "\n", - "Unlike `IntLiteral` and `FloatLiteral`, `StringLiteral` doesn't automatically\n", - "materialize to a runtime type. In some cases, you may need to manually convert\n", - "`StringLiteral` values to `String` using the built-in \n", - "[`str()`](/mojo/stdlib/builtin/str/str) method. " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Variable is type `StringLiteral`\n", - "var s1 = \"Example\"\n", - "\n", - "# Variable is type `String`\n", - "var s2: String = \"Example\"\n", - "\n", - "# Variable is type `String`\n", - "var s3 = str(\"Example\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "\n", - "## Booleans\n", - "\n", - "Mojo's `Bool` type represents a boolean value. It can take one of two values, \n", - "`True` or `False`. You can negate a boolean value using the `not` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "False True\n" - ] - } - ], - "source": [ - "var conditionA = False\n", - "var conditionB: Bool\n", - "conditionB = not conditionA\n", - "print(conditionA, conditionB)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Many types have a boolean representation. Any type that implements the \n", - "[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) trait has a boolean \n", - "representation. As a general principle, collections evaluate as True if they \n", - "contain any elements, False if they are empty; strings evaluate as True if they\n", - "have a non-zero length." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tuples\n", - "\n", - "Mojo's `Tuple` type represents an immutable tuple consisting of zero or more \n", - "values, separated by commas. Tuples can consist of multiple types and you can \n", - "index into tuples in multiple ways. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 Example\n", - "Example\n" - ] - } - ], - "source": [ - "# Tuples are immutable and can hold multiple types\n", - "example_tuple = Tuple[Int, String](1, \"Example\")\n", - "\n", - "# Assign multiple variables at once\n", - "x, y = example_tuple\n", - "print(x, y)\n", - "\n", - "# Get individual values with an index\n", - "s = example_tuple.get[1, String]()\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also create a tuple without explicit typing. Note that if we declare the \n", - "same tuple from the previous example with implicit typing instead of explicit, \n", - "we must also convert `\"Example\"` from type `StringLiteral` to type `String`. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Example\n" - ] - } - ], - "source": [ - "example_tuple = (1, str(\"Example\"))\n", - "s = example_tuple.get[1, String]()\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When defining a function, you can explicitly declare the type of tuple elements \n", - "in one of two ways: " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def return_tuple_1() -> Tuple[Int, Int]:\n", - " return Tuple[Int, Int](1, 1)\n", - "\n", - "def return_tuple_2() -> (Int, Int):\n", - " return (2, 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collection types\n", - "\n", - "The Mojo standard library also includes a set of basic collection types that\n", - "can be used to build more complex data structures:\n", - "\n", - "- [`List`](/mojo/stdlib/collections/list/List), a dynamically-sized array of \n", - " items.\n", - "- [`Dict`](/mojo/stdlib/collections/dict/Dict), an associative array of \n", - " key-value pairs.\n", - "- [`Set`](/mojo/stdlib/collections/set/Set), an unordered collection of unique\n", - " items.\n", - "- [`Optional`](/mojo/stdlib/collections/optional/Optional)\n", - " represents a value that may or may not be present. \n", - "\n", - "The collection types are _generic types_: while a given collection can only\n", - "hold a specific type of value (such as `Int` or `Float64`), you specify the\n", - "type at compile time using a [parameter](/mojo/manual/parameters/). For\n", - "example, you can create a `List` of `Int` values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "var l = List[Int](1, 2, 3, 4)\n", - "# l.append(3.14) # error: FloatLiteral cannot be converted to Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You don't always need to specify the type explicitly. If Mojo can _infer_ the\n", - "type, you can omit it. For example, when you construct a list from a set of \n", - "integer literals, Mojo creates a `List[Int]`." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "# Inferred type == Int\n", - "var l1 = List(1, 2, 3, 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Where you need a more flexible collection, the \n", - "[`Variant`](/mojo/stdlib/utils/variant/Variant) type can hold different types \n", - "of values. For example, a `Variant[Int32, Float64]` can hold either an `Int32`\n", - "_or_ a `Float64` value at any given time. (Using `Variant` is not covered in\n", - "this section, see the [API docs](/mojo/stdlib/utils/variant/Variant) for more\n", - "information.)\n", - "\n", - "The following sections give brief introduction to the main collection types. \n", - "\n", - "### List\n", - "\n", - "[`List`](/mojo/stdlib/collections/list/List) is a dynamically-sized array of \n", - "elements. List elements need to conform to the \n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait, which\n", - "just means that the items must be copyable and movable. Most of the common\n", - "standard library primitives, like `Int`, `String`, and `SIMD` conform to this\n", - "trait. You can create a `List` by passing the element type as a parameter, like\n", - "this:\n", - "\n", - "\n", - "```mojo\n", - "var l = List[String]()\n", - "```\n", - "\n", - "The `List` type supports a subset of the Python `list` API, including the\n", - "ability to append to the list, pop items out of the list, and access list items\n", - "using subscript notation." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Popping last item from list: 11\n", - "2, 3, 5, 7, " - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "var list = List(2, 3, 5)\n", - "list.append(7)\n", - "list.append(11)\n", - "print(\"Popping last item from list: \", list.pop())\n", - "for idx in range(len(list)):\n", - " print(list[idx], end=\", \")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the previous code sample leaves out the type parameter when creating \n", - "the list. Because the list is being created with a set of `Int` values, Mojo can\n", - "_infer_ the type from the arguments. \n", - "\n", - "There are some notable limitations when using `List`:\n", - "\n", - "- You can't currently initialize a list from a list literal, like this:\n", - "\n", - " ```mojo\n", - " # Doesn't work!\n", - " var list: List[Int] = [2, 3, 5]\n", - " ```\n", - "\n", - " But you can use variadic arguments to achieve the same thing:\n", - "\n", - " ```mojo\n", - " var list = List(2, 3, 5)\n", - " ```\n", - "\n", - "- You can't `print()` a list, or convert it directly into a string.\n", - "\n", - " ```mojo\n", - " # Does not work\n", - " print(list)\n", - " ```\n", - "\n", - " As shown above, you can print the individual elements in a list as long as\n", - " they're a [`Stringable`](/mojo/stdlib/builtin/str/Stringable) type.\n", - "\n", - "- Iterating a `List` currently returns a \n", - " [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the\n", - " item itself. You can access the item using the dereference operator, `[]`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2, 3, 4, " - ] - } - ], - "source": [ - "#: from collections import List\n", - "var list = List(2, 3, 4)\n", - "for item in list:\n", - " print(item[], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " Subscripting in to a list, however, returns the item directly—no need to \n", - " dereference:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2, 3, 4, " - ] - } - ], - "source": [ - "#: from collections import List\n", - "#: var list = List[Int](2, 3, 4)\n", - "for i in range(len(list)):\n", - " print(list[i], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Dict\n", - "\n", - "The [`Dict`](/mojo/stdlib/collections/dict/Dict) type is an associative array\n", - "that holds key-value pairs. You can create a `Dict` by specifying the key type\n", - "and value type as parameters, like this:\n", - "\n", - "```mojo\n", - "var values = Dict[String, Float64]()\n", - "```\n", - "\n", - "The dictionary's key type must conform to the \n", - "[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait, and value \n", - "elements must conform to the \n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait.\n", - "\n", - "You can insert and remove key-value pairs, update the value assigned to a key,\n", - "and iterate through keys, values, or items in the dictionary. \n", - "\n", - "The `Dict` iterators all yield references, so you need to use the dereference\n", - "operator `[]` as shown in the following example:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plasticity 3.1000000000000001\n", - "elasticity 1.3\n", - "electricity 9.6999999999999993\n" - ] - } - ], - "source": [ - "from collections import Dict\n", - "\n", - "var d = Dict[String, Float64]()\n", - "d[\"plasticity\"] = 3.1\n", - "d[\"elasticity\"] = 1.3\n", - "d[\"electricity\"] = 9.7\n", - "for item in d.items():\n", - " print(item[].key, item[].value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Set\n", - "\n", - "The [`Set`](/mojo/stdlib/collections/set/Set) type represents a set of unique\n", - "values. You can add and remove elements from the set, test whether a value \n", - "exists in the set, and perform set algebra operations, like unions and \n", - "intersections between two sets. \n", - "\n", - "Sets are generic and the element type must conform to the\n", - "[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "We both like:\n", - "- ice cream\n", - "- tacos\n" - ] - } - ], - "source": [ - "from collections import Set\n", - "\n", - "i_like = Set(\"sushi\", \"ice cream\", \"tacos\", \"pho\")\n", - "you_like = Set(\"burgers\", \"tacos\", \"salad\", \"ice cream\")\n", - "we_like = i_like.intersection(you_like)\n", - "\n", - "print(\"We both like:\")\n", - "for item in we_like:\n", - " print(\"-\", item[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Optional\n", - "\n", - "An [`Optional`](/mojo/stdlib/collections/optional/Optional) represents a \n", - "value that may or may not be present. Like the other collection types, it is\n", - "generic, and can hold any type that conforms to the\n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "# Two ways to initialize an Optional with a value\n", - "var opt1 = Optional(5)\n", - "var opt2: Optional[Int] = 5\n", - "# Two ways to initialize an Optional with no value\n", - "var opt3 = Optional[Int]()\n", - "var opt4: Optional[Int] = None" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "An `Optional` evaluates as `True` when it holds a value, `False` otherwise. If\n", - "the `Optional` holds a value, you can retrieve a reference to the value using \n", - "the `value()` method. But calling `value()` on an `Optional` with no value\n", - "results in undefined behavior, so you should always guard a call to `value()`\n", - "inside a conditional that checks whether a value exists." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing\n" - ] - } - ], - "source": [ - "var opt: Optional[String] = str(\"Testing\")\n", - "if opt:\n", - " var value_ref = opt.value()\n", - " print(value_ref)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Alternately, you can use the `or_else()` method, which returns the stored\n", - "value if there is one, or a user-specified default value otherwise:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n", - "Hi\n" - ] - } - ], - "source": [ - "var custom_greeting: Optional[String] = None\n", - "print(custom_greeting.or_else(\"Hello\"))\n", - "\n", - "custom_greeting = str(\"Hi\")\n", - "print(custom_greeting.or_else(\"Hello\"))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register-passable, memory-only, and trivial types\n", - "\n", - "In various places in the documentation you'll see references to \n", - "register-passable, memory-only, and trivial types. Register-passable and \n", - "memory-only types are distinguished based on how they hold data:\n", - "\n", - "- Register-passable types are composed exclusively of fixed-size data types,\n", - " which can (theoretically) be stored in a machine register. A register-passable\n", - " type can include other types, as long as they are also register-passable.\n", - " `Int`, `Bool`, and `SIMD`, for example, are all register-passable types. So \n", - " a register-passable `struct` could include `Int` and `Bool` fields, but not a\n", - " `String` field. Register-passable types are declared with the \n", - " [`@register_passable`](/mojo/manual/decorators/register-passable) decorator.\n", - "\n", - " Register-passable types are always passed by value (that is, the values are\n", - " copied).\n", - "\n", - "- Memory-only types consist of any types that _don't_ fit the description of\n", - " register-passable types. In particular, these types usually have pointers or \n", - " references to dynamically-allocated memory. `String`, `List`, and `Dict` are\n", - " all examples of memory-only types.\n", - "\n", - "Our long-term goal is to make this distinction transparent to the user, and\n", - "ensure all APIs work with both register-passable and memory-only types.\n", - "But right now you will see some standard library types that only work with \n", - "register-passable types or only work with memory-only types.\n", - "\n", - "In addition to these two categories, Mojo also has \"trivial\" types. Conceptually\n", - "a trivial type is simply a type that doesn't require any custom logic in its\n", - "lifecycle methods. The bits that make up an instance of a trivial type can be\n", - "copied or moved without any knowledge of what they do. Currently, trivial types\n", - "are declared using the\n", - "[`@register_passable(trivial)`](/mojo/manual/decorators/register-passable#register_passabletrivial)\n", - "decorator. Trivial types shouldn't be limited to only register-passable types,\n", - "so in the future we intend to separate trivial types from the \n", - "`@register_passable` decorator." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `AnyType` and `AnyTrivialRegType`\n", - "\n", - "Two other things you'll see in Mojo APIs are references to `AnyType` and\n", - "`AnyTrivialRegType`. These are effectively _metatypes_, that is, types of types.\n", - "\n", - "- `AnyType` represents any Mojo type. Mojo treats `AnyType` as a special kind of\n", - " trait, and you'll find more discussion of it on the\n", - " [Traits page](/mojo/manual/traits#the-anytype-trait).\n", - "- `AnyTrivialRegType` is a metatype representing any Mojo type that's marked \n", - " register passable.\n", - "\n", - "You'll see them in signatures like this:\n", - "\n", - "```mojo\n", - "fn any_type_function[ValueType: AnyTrivialRegType](value: ValueType):\n", - " ...\n", - "```\n", - "\n", - "You can read this as `any_type_function` has an argument, `value` of type\n", - "`ValueType`, where `ValueType` is a register-passable type, determined at\n", - "compile time. \n", - "\n", - "There is still some code like this in the standard library, but it's gradually\n", - "being migrated to more generic code that doesn't distinguish between \n", - "register-passable and memory-only types.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx new file mode 100644 index 0000000000..4f276c82f9 --- /dev/null +++ b/docs/manual/types.mdx @@ -0,0 +1,763 @@ +--- +title: Types +sidebar_position: 1 +description: Standard Mojo data types. +--- + +All values in Mojo have an associated data type. Most of the types are +*nominal* types, defined by a [`struct`](/mojo/manual/structs). These types are +nominal (or "named") because type equality is determined by the type's *name*, +not its *structure*. + +There are a some types that aren't defined as structs: + +* Functions are typed based on their signatures. +* `NoneType` is a type with one instance, the `None` object, which is used to + signal "no value." + +Mojo comes with a standard library that provides a number of useful types and +utility functions. These standard types aren’t privileged. Each of the standard +library types is defined just like user-defined types—even basic types like +[`Int`](/mojo/stdlib/builtin/int/Int) and +[`String`](/mojo/stdlib/collections/string/String). But these standard library +types are the building blocks you'll use for most Mojo programs. + +The most common types are *built-in types*, which are always available and +don't need to be imported. These include types for numeric values, strings, +boolean values, and others. + +The standard library also includes many more types that you can import as +needed, including collection types, utilities for interacting with the +filesystem and getting system information, and so on. + +## Numeric types + +Mojo's most basic numeric type is `Int`, which represents a signed integer of +the largest size supported by the system—typically 64 bits or 32 bits. + +Mojo also has built-in types for integer, unsigned integer, and floating-point +values of various precisions: + +
+ +| Type name | Description | +| --------- | ----------------------------------------------------- | +| `Int8` | 8-bit signed integer | +| `UInt8` | 8-bit unsigned integer | +| `Int16` | 16-bit signed integer | +| `UInt16` | 16-bit unsigned integer | +| `Int32` | 32-bit signed integer | +| `UInt32` | 32-bit unsigned integer | +| `Int64` | 64-bit signed integer | +| `UInt64` | 64-bit unsigned integer | +| `Float16` | 16-bit floating point number (IEEE 754-2008 binary16) | +| `Float32` | 32-bit floating point number (IEEE 754-2008 binary32) | +| `Float64` | 64-bit floating point number (IEEE 754-2008 binary64) | + +
Table 1. Numeric types with specific precision
+
+ +The types in Table 1 are actually all aliases to a single type, +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD), which is discussed later. + +All of the numeric types support the usual numeric and bitwise operators. The +[`math`](/mojo/stdlib/math/) module provides a number of additional math +functions. + +You may wonder when to use `Int` and when to use the other integer +types. In general, `Int` is a good safe default when you need an integer type +and you don't require a specific bit width. Using `Int` as the default integer +type for APIs makes APIs more consistent and predictable. + +### Signed and unsigned integers + +Mojo supports both signed (`Int`) and unsigned (`UInt`) integers. You can use +the general `Int` or `UInt` types when you do not require a specific bit width. +Note that any alias to a fixed-precision type will be of type +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD). + +You might prefer to use unsigned integers over signed integers in conditions +where you don't need negative numbers, are not writing for a public API, or need +additional range. + +Mojo's `UInt` type represents an unsigned integer of the +[word size](https://en.wikipedia.org/wiki/Word_\(computer_architecture\)) of the +CPU, which is 64 bits on 64-bit CPUs and 32 bits on 32-bit CPUs. If you wish to +use a fixed size unsigned integer, you can use `UInt8`, `UInt16`, `UInt32`, or +`UInt64`, which are aliases to the [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) +type. + +Signed and unsigned integers of the same bit width can represent the same number +of values, but have different ranges. For example, an `Int8` can represent 256 +values ranging from -128 to 127. A `UInt8` can also represent 256 values, but +represents a range of 0 to 255. + +Signed and unsigned integers also have different overflow behavior. When a +signed integer overflows outside the range of values that its type can +represent, the value overflows to negative numbers. For example, adding `1` to +`var si: Int8 = 127` results in `-128`. + +When an unsigned integer overflows outside the range of values that its type can +represent, the value overflows to zero. So, adding `1` to `var ui: UInt8 = 255` +is equal to `0`. + +### Floating-point numbers + +Floating-point types represent real numbers. Because not all real numbers can be +expressed in a finite number of bits, floating-point numbers can't represent +every value exactly. + +The floating-point types listed in Table 1—`Float64`, `Float32`, and +`Float16`—follow the IEEE 754-2008 standard for representing floating-point +values. Each type includes a sign bit, one set of bits representing an exponent, +and another set representing the fraction or mantissa. Table 2 shows how each of +these types are represented in memory. + +
+ +| Type name | Sign | Exponent | Mantissa | +| --------- | ----- | -------- | -------- | +| `Float64` | 1 bit | 11 bits | 52 bits | +| `Float32` | 1 bit | 8 bits | 23 bits | +| `Float16` | 1 bit | 5 bits | 10 bits | + +
Table 2. Details of floating-point types
+
+ +Numbers with exponent values of all ones or all zeros represent special values, +allowing floating-point numbers to represent infinity, negative infinity, +signed zeros, and not-a-number (NaN). For more details on how numbers are +represented, see [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754) on +Wikipedia. + +A few things to note with floating-point values: + +* Rounding errors. Rounding may produce unexpected results. For example, 1/3 + can't be represented exactly in these floating-point formats. The more + operations you perform with floating-point numbers, the more the rounding + errors accumulate. + +* Space between consecutive numbers. The space between consecutive numbers is + variable across the range of a floating-point number format. For numbers close + to zero, the distance between consecutive numbers is very small. For large + positive and negative numbers, the space between consecutive numbers is + greater than 1, so it may not be possible to represent consecutive integers. + +Because the values are approximate, it is rarely useful to compare them with +the equality operator (`==`). Consider the following example: + +```mojo +var big_num = 1.0e16 +var bigger_num = big_num+1.0 +print(big_num == bigger_num) +``` + +```output +True +``` + +Comparison operators (`<` `>=` and so on) work with floating point numbers. You +can also use the [`math.isclose()`](/mojo/stdlib/math/math/isclose) function to +compare whether two floating-point numbers are equal within a specified +tolerance. + +### Numeric literals + +In addition to these numeric types, the standard libraries provides integer and +floating-point literal types, +[`IntLiteral`](/mojo/stdlib/builtin/int_literal/IntLiteral) and +[`FloatLiteral`](/mojo/stdlib/builtin/float_literal/FloatLiteral). + +These literal types are used at compile time to represent literal numbers that +appear in the code. In general, you should never instantiate these types +yourself. + +Table 3 summarizes the literal formats you can use to represent numbers. + +
+ +| Format | Examples | Notes | +| ---------------------- | --------------- | ------------------------------------------------------------------------------------------------ | +| Integer literal | `1760` | Integer literal, in decimal format. | +| Hexadecimal literal | `0xaa`, `0xFF` | Integer literal, in hexadecimal format.
Hex digits are case-insensitive. | +| Octal literal | `0o77` | Integer literal, in octal format. | +| Binary literal | `0b0111` | Integer literal, in binary format. | +| Floating-point literal | `3.14`, `1.2e9` | Floating-point literal.
Must include the decimal point to be interpreted as floating-point. | + +
Table 3. Numeric literal formats
+
+ +At compile time, the literal types are arbitrary-precision (also called +infinite-precision) values, so the compiler can perform compile-time +calculations without overflow or rounding errors. + +At runtime the values are converted to finite-precision types—`Int` for +integer values, and `Float64` for floating-point values. (This process of +converting a value that can only exist at compile time into a runtime value is +called *materialization*.) + +The following code sample shows the difference between an arbitrary-precision +calculation and the same calculation done using `Float64` values at runtime, +which suffers from rounding errors. + +```mojo +var arbitrary_precision = 3.0 * (4.0 / 3.0 - 1.0) +# use a variable to force the following calculation to occur at runtime +var three = 3.0 +var finite_precision = three * (4.0 / three - 1.0) +print(arbitrary_precision, finite_precision) +``` + +```output +1.0 0.99999999999999978 +``` + +### `SIMD` and `DType` + +To support high-performance numeric processing, Mojo uses the +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type as the basis for its numeric +types. SIMD (single instruction, multiple data) is a processor technology that +allows you to perform an operation on an entire set of operands at once. Mojo's +`SIMD` type abstracts SIMD operations. A `SIMD` value represents a SIMD +*vector*—that is, a fixed-size array of values that can fit into a processor's +register. SIMD vectors are defined by two +[*parameters*](/mojo/manual/parameters/): + +* A `DType` value, defining the data type in the vector (for example, + 32-bit floating-point numbers). +* The number of elements in the vector, which must be a power of two. + +For example, you can define a vector of four `Float32` values like this: + +```mojo +var vec = SIMD[DType.float32, 4](3.0, 2.0, 2.0, 1.0) +``` + +Math operations on SIMD values are +applied *elementwise*, on each individual element in the vector. For example: + +```mojo +var vec1 = SIMD[DType.int8, 4](2, 3, 5, 7) +var vec2 = SIMD[DType.int8, 4](1, 2, 3, 4) +var product = vec1 * vec2 +print(product) +``` + +```output +[2, 6, 15, 28] +``` + +### Scalar values + +The `SIMD` module defines several *type aliases* that are shorthand for +different types of `SIMD` vectors. In particular, the `Scalar` type is just a +`SIMD` vector with a single element. The numeric types listed in +[Table 1](#table-1), like `Int8` and `Float32` are actually type aliases for +different types of scalar values: + +```mojo +alias Scalar = SIMD[size=1] +alias Int8 = Scalar[DType.int8] +alias Float32 = Scalar[DType.float32] +``` + +This may seem a little confusing at first, but it means that whether you're +working with a single `Float32` value or a vector of float32 values, +the math operations go through exactly the same code path. + +#### The `DType` type + +The `DType` struct describes the different data types that a `SIMD` vector can +hold, and defines a number of utility functions for operating on those data +types. The `DType` struct defines a set of aliases that act as identifiers for +the different data types, like `DType.int8` and `DType.float32`. You use +these aliases when declaring a `SIMD` vector: + +```mojo +var v: SIMD[DType.float64, 16] +``` + +Note that `DType.float64` isn't a *type*, it's a value that describes a data +type. You can't create a variable with the type `DType.float64`. You can create +a variable with the type `SIMD[DType.float64, 1]` (or `Float64`, which is the +same thing). + +```mojo +from utils.numerics import max_finite, min_finite + +def describeDType[dtype: DType](): + print(dtype, "is floating point:", dtype.is_floating_point()) + print(dtype, "is integral:", dtype.is_integral()) + print("Min/max finite values for", dtype) + print(min_finite[dtype](), max_finite[dtype]()) + +describeDType[DType.float32]() +``` + +```output +float32 is floating point: True +float32 is integral: False +Min/max finite values for float32 +-3.4028234663852886e+38 3.4028234663852886e+38 +``` + +There are several other data types in the standard library that also use +the `DType` abstraction. + +## Strings + +Mojo's `String` type represents a mutable string. (For Python programmers, note +that this is different from Python's standard string, which is immutable.) +Strings support a variety of operators and common methods. + +```mojo +var s: String = "Testing" +s += " Mojo strings" +print(s) +``` + +```output +Testing Mojo strings +``` + +Most standard library types conform to the +[`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, which represents +a type that can be converted to a string. Use `str(value)` to +explicitly convert a value to a string: + +```mojo +var s = str("Items in list: ") + str(5) +print(s) +``` + +```output +Items in list: 5 +``` + +### String literals + +As with numeric types, the standard library includes a string literal type used +to represent literal strings in the program source. String literals are +enclosed in either single or double quotes. + +Adjacent literals are concatenated together, so you can define a long string +using a series of literals broken up over several lines: + +``` +var s = "A very long string which is " + "broken into two literals for legibility." +``` + +To define a multi-line string, enclose the literal in three single or double +quotes: + +``` +var s = """ +Multi-line string literals let you +enter long blocks of text, including +newlines.""" +``` + +Note that the triple double quote form is also used for API documentation +strings. + +Unlike `IntLiteral` and `FloatLiteral`, `StringLiteral` doesn't automatically +materialize to a runtime type. In some cases, you may need to manually convert +`StringLiteral` values to `String` using the built-in +[`str()`](/mojo/stdlib/builtin/str/str) method. + +```mojo +# Variable is type `StringLiteral` +var s1 = "Example" + +# Variable is type `String` +var s2: String = "Example" + +# Variable is type `String` +var s3 = str("Example") +``` + +## Booleans + +Mojo's `Bool` type represents a boolean value. It can take one of two values, +`True` or `False`. You can negate a boolean value using the `not` operator. + +```mojo +var conditionA = False +var conditionB: Bool +conditionB = not conditionA +print(conditionA, conditionB) +``` + +```output +False True +``` + +Many types have a boolean representation. Any type that implements the +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) trait has a boolean +representation. As a general principle, collections evaluate as True if they +contain any elements, False if they are empty; strings evaluate as True if they +have a non-zero length. + +## Tuples + +Mojo's `Tuple` type represents an immutable tuple consisting of zero or more +values, separated by commas. Tuples can consist of multiple types and you can +index into tuples in multiple ways. + +```mojo +# Tuples are immutable and can hold multiple types +example_tuple = Tuple[Int, String](1, "Example") + +# Assign multiple variables at once +x, y = example_tuple +print(x, y) + +# Get individual values with an index +s = example_tuple.get[1, String]() +print(s) +``` + +```output +1 Example +Example +``` + +You can also create a tuple without explicit typing. Note that if we declare the +same tuple from the previous example with implicit typing instead of explicit, +we must also convert `"Example"` from type `StringLiteral` to type `String`. + +```mojo +example_tuple = (1, str("Example")) +s = example_tuple.get[1, String]() +print(s) +``` + +```output +Example +``` + +When defining a function, you can explicitly declare the type of tuple elements +in one of two ways: + +```mojo +def return_tuple_1() -> Tuple[Int, Int]: + return Tuple[Int, Int](1, 1) + +def return_tuple_2() -> (Int, Int): + return (2, 2) +``` + +## Collection types + +The Mojo standard library also includes a set of basic collection types that +can be used to build more complex data structures: + +* [`List`](/mojo/stdlib/collections/list/List), a dynamically-sized array of + items. +* [`Dict`](/mojo/stdlib/collections/dict/Dict), an associative array of + key-value pairs. +* [`Set`](/mojo/stdlib/collections/set/Set), an unordered collection of unique + items. +* [`Optional`](/mojo/stdlib/collections/optional/Optional) + represents a value that may or may not be present. + +The collection types are *generic types*: while a given collection can only +hold a specific type of value (such as `Int` or `Float64`), you specify the +type at compile time using a [parameter](/mojo/manual/parameters/). For +example, you can create a `List` of `Int` values like this: + +```mojo +var l = List[Int](1, 2, 3, 4) +# l.append(3.14) # error: FloatLiteral cannot be converted to Int +``` + +You don't always need to specify the type explicitly. If Mojo can *infer* the +type, you can omit it. For example, when you construct a list from a set of +integer literals, Mojo creates a `List[Int]`. + +```mojo +# Inferred type == Int +var l1 = List(1, 2, 3, 4) +``` + +Where you need a more flexible collection, the +[`Variant`](/mojo/stdlib/utils/variant/Variant) type can hold different types +of values. For example, a `Variant[Int32, Float64]` can hold either an `Int32` +*or* a `Float64` value at any given time. (Using `Variant` is not covered in +this section, see the [API docs](/mojo/stdlib/utils/variant/Variant) for more +information.) + +The following sections give brief introduction to the main collection types. + +### List + +[`List`](/mojo/stdlib/collections/list/List) is a dynamically-sized array of +elements. List elements need to conform to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait, which +just means that the items must be copyable and movable. Most of the common +standard library primitives, like `Int`, `String`, and `SIMD` conform to this +trait. You can create a `List` by passing the element type as a parameter, like +this: + +```mojo +var l = List[String]() +``` + +The `List` type supports a subset of the Python `list` API, including the +ability to append to the list, pop items out of the list, and access list items +using subscript notation. + +```mojo +from collections import List + +var list = List(2, 3, 5) +list.append(7) +list.append(11) +print("Popping last item from list: ", list.pop()) +for idx in range(len(list)): + print(list[idx], end=", ") + +``` + +```output +Popping last item from list: 11 +2, 3, 5, 7, +``` + +Note that the previous code sample leaves out the type parameter when creating +the list. Because the list is being created with a set of `Int` values, Mojo can +*infer* the type from the arguments. + +There are some notable limitations when using `List`: + +* You can't currently initialize a list from a list literal, like this: + + ```mojo + # Doesn't work! + var list: List[Int] = [2, 3, 5] + ``` + + But you can use variadic arguments to achieve the same thing: + + ```mojo + var list = List(2, 3, 5) + ``` + +* You can't `print()` a list, or convert it directly into a string. + + ```mojo + # Does not work + print(list) + ``` + + As shown above, you can print the individual elements in a list as long as + they're a [`Stringable`](/mojo/stdlib/builtin/str/Stringable) type. + +* Iterating a `List` currently returns a + [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the + item itself. You can access the item using the dereference operator, `[]`: + +```mojo +#: from collections import List +var list = List(2, 3, 4) +for item in list: + print(item[], end=", ") +``` + +```output +2, 3, 4, +``` + +Subscripting in to a list, however, returns the item directly—no need to +dereference: + +```mojo +#: from collections import List +#: var list = List[Int](2, 3, 4) +for i in range(len(list)): + print(list[i], end=", ") +``` + +```output +2, 3, 4, +``` + +### Dict + +The [`Dict`](/mojo/stdlib/collections/dict/Dict) type is an associative array +that holds key-value pairs. You can create a `Dict` by specifying the key type +and value type as parameters, like this: + +```mojo +var values = Dict[String, Float64]() +``` + +The dictionary's key type must conform to the +[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait, and value +elements must conform to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + +You can insert and remove key-value pairs, update the value assigned to a key, +and iterate through keys, values, or items in the dictionary. + +The `Dict` iterators all yield references, so you need to use the dereference +operator `[]` as shown in the following example: + +```mojo +from collections import Dict + +var d = Dict[String, Float64]() +d["plasticity"] = 3.1 +d["elasticity"] = 1.3 +d["electricity"] = 9.7 +for item in d.items(): + print(item[].key, item[].value) +``` + +```output +plasticity 3.1000000000000001 +elasticity 1.3 +electricity 9.6999999999999993 +``` + +### Set + +The [`Set`](/mojo/stdlib/collections/set/Set) type represents a set of unique +values. You can add and remove elements from the set, test whether a value +exists in the set, and perform set algebra operations, like unions and +intersections between two sets. + +Sets are generic and the element type must conform to the +[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait. + +```mojo +from collections import Set + +i_like = Set("sushi", "ice cream", "tacos", "pho") +you_like = Set("burgers", "tacos", "salad", "ice cream") +we_like = i_like.intersection(you_like) + +print("We both like:") +for item in we_like: + print("-", item[]) +``` + +```output +We both like: +- ice cream +- tacos +``` + +### Optional + +An [`Optional`](/mojo/stdlib/collections/optional/Optional) represents a +value that may or may not be present. Like the other collection types, it is +generic, and can hold any type that conforms to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + +```mojo +# Two ways to initialize an Optional with a value +var opt1 = Optional(5) +var opt2: Optional[Int] = 5 +# Two ways to initialize an Optional with no value +var opt3 = Optional[Int]() +var opt4: Optional[Int] = None +``` + +An `Optional` evaluates as `True` when it holds a value, `False` otherwise. If +the `Optional` holds a value, you can retrieve a reference to the value using +the `value()` method. But calling `value()` on an `Optional` with no value +results in undefined behavior, so you should always guard a call to `value()` +inside a conditional that checks whether a value exists. + +```mojo +var opt: Optional[String] = str("Testing") +if opt: + var value_ref = opt.value() + print(value_ref) +``` + +```output +Testing +``` + +Alternately, you can use the `or_else()` method, which returns the stored +value if there is one, or a user-specified default value otherwise: + +```mojo +var custom_greeting: Optional[String] = None +print(custom_greeting.or_else("Hello")) + +custom_greeting = str("Hi") +print(custom_greeting.or_else("Hello")) + +``` + +```output +Hello +Hi +``` + +## Register-passable, memory-only, and trivial types + +In various places in the documentation you'll see references to +register-passable, memory-only, and trivial types. Register-passable and +memory-only types are distinguished based on how they hold data: + +* Register-passable types are composed exclusively of fixed-size data types, + which can (theoretically) be stored in a machine register. A register-passable + type can include other types, as long as they are also register-passable. + `Int`, `Bool`, and `SIMD`, for example, are all register-passable types. So + a register-passable `struct` could include `Int` and `Bool` fields, but not a + `String` field. Register-passable types are declared with the + [`@register_passable`](/mojo/manual/decorators/register-passable) decorator. + + Register-passable types are always passed by value (that is, the values are + copied). + +* Memory-only types consist of any types that *don't* fit the description of + register-passable types. In particular, these types usually have pointers or + references to dynamically-allocated memory. `String`, `List`, and `Dict` are + all examples of memory-only types. + +Our long-term goal is to make this distinction transparent to the user, and +ensure all APIs work with both register-passable and memory-only types. +But right now you will see some standard library types that only work with +register-passable types or only work with memory-only types. + +In addition to these two categories, Mojo also has "trivial" types. Conceptually +a trivial type is simply a type that doesn't require any custom logic in its +lifecycle methods. The bits that make up an instance of a trivial type can be +copied or moved without any knowledge of what they do. Currently, trivial types +are declared using the +[`@register_passable(trivial)`](/mojo/manual/decorators/register-passable#register_passabletrivial) +decorator. Trivial types shouldn't be limited to only register-passable types, +so in the future we intend to separate trivial types from the +`@register_passable` decorator. + +## `AnyType` and `AnyTrivialRegType` + +Two other things you'll see in Mojo APIs are references to `AnyType` and +`AnyTrivialRegType`. These are effectively *metatypes*, that is, types of types. + +* `AnyType` represents any Mojo type. Mojo treats `AnyType` as a special kind of + trait, and you'll find more discussion of it on the + [Traits page](/mojo/manual/traits#the-anytype-trait). +* `AnyTrivialRegType` is a metatype representing any Mojo type that's marked + register passable. + +You'll see them in signatures like this: + +```mojo +fn any_type_function[ValueType: AnyTrivialRegType](value: ValueType): + ... +``` + +You can read this as `any_type_function` has an argument, `value` of type +`ValueType`, where `ValueType` is a register-passable type, determined at +compile time. + +There is still some code like this in the standard library, but it's gradually +being migrated to more generic code that doesn't distinguish between +register-passable and memory-only types. diff --git a/docs/manual/values/index.ipynb b/docs/manual/values/index.ipynb deleted file mode 100644 index 0c6e34c116..0000000000 --- a/docs/manual/values/index.ipynb +++ /dev/null @@ -1,158 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Intro to value ownership\n", - "sidebar_position: 1\n", - "description: Introduction to Mojo value ownership.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A program is nothing without data, and all modern programming languages store\n", - "data in one of two places: the call stack and the heap (also sometimes in CPU\n", - "registers, but we won't get into that here). However, each language reads and\n", - "writes data a bit differently—sometimes very differently. So in the following\n", - "sections, we'll explain how Mojo manages memory in your programs and how this\n", - "affects the way you write Mojo code.\n", - "\n", - ":::note\n", - "\n", - "For an alternate introduction to ownership in Mojo, check out our two-part blog\n", - "post: \n", - "[What ownership is really about: a mental model approach](https://www.modular.com/blog/what-ownership-is-really-about-a-mental-model-approach), and [Deep dive into\n", - "ownership in Mojo](https://www.modular.com/blog/deep-dive-into-ownership-in-mojo).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stack and heap overview\n", - "\n", - "In general, all modern programming languages divide a running program's memory\n", - "into four segments:\n", - "\n", - "- Text. The compiled program.\n", - "- Data. Global data, either initialized or uninitialized.\n", - "- Stack. Local data, automatically managed during the program's runtime.\n", - "- Heap. Dynamically-allocated data, managed by the programmer.\n", - "\n", - "The text and data segments are statically sized, but the stack and heap change\n", - "size as the program runs.\n", - "\n", - "The _stack_ stores data local to the current function. When a function is\n", - "called, the program allocates a block of memory—a _stack frame_—that is exactly\n", - "the size required to store the function's data, including any _fixed-size_\n", - "local variables. When another function is called, a new stack frame is pushed\n", - "onto the top of the stack. When a function is done, its stack frame is popped\n", - "off the stack. \n", - "\n", - "Notice that we said only \"_fixed-size_ local values\" are stored in the stack.\n", - "Dynamically-sized values that can change in size at runtime are instead\n", - "stored in the heap, which is a much larger region of memory that allows for\n", - "dynamic memory allocation. Technically, a local variable for such a value\n", - "is still stored in the call stack, but its value is a fixed-size pointer to the\n", - "real value on the heap. Consider a Mojo string: it can be any length, and \n", - "its length can change at runtime. So the Mojo `String` struct includes some statically-sized fields, plus a pointer to a dynamically-allocated buffer\n", - "holding the actual string data.\n", - "\n", - "Another important difference between the heap and the stack is that the stack is \n", - "managed automatically—the code to push and pop stack frames is added by the\n", - "compiler. Heap memory, on the other hand, is managed by the programmer\n", - "explicitly allocating and deallocating memory. You may do this indirectly—by\n", - "using standard library types like `List` and `String`—or directly, using the \n", - "[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) API.\n", - "\n", - "Values that need to outlive the lifetime of a function (such as\n", - "an array that's passed between functions and should not be copied) are stored\n", - "in the heap, because heap memory is accessible from anywhere in the call stack,\n", - "even after the function that created it is removed from the stack. This sort of\n", - "situation—in which a heap-allocated value is used by multiple functions—is where\n", - "most memory errors occur, and it's where memory management strategies vary the\n", - "most between programming languages." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Memory management strategies\n", - "\n", - "Because memory is limited, it's important that programs remove unused data from\n", - "the heap (\"free\" the memory) as quickly as possible. Figuring out when to free\n", - "that memory is pretty complicated.\n", - "\n", - "Some programming languages try to hide the complexities of memory management\n", - "from you by utilizing a \"garbage collector\" process that tracks all memory\n", - "usage and deallocates unused heap memory periodically (also known as automatic\n", - "memory management). A significant benefit of this method is that it relieves\n", - "developers from the burden of manual memory management, generally avoiding more\n", - "errors and making developers more productive. However, it incurs a performance\n", - "cost because the garbage collector interrupts the program's execution, and it\n", - "might not reclaim memory very quickly.\n", - "\n", - "Other languages require that you manually free data that's allocated on the\n", - "heap. When done properly, this makes programs execute quickly, because there's\n", - "no processing time consumed by a garbage collector. However, the challenge with\n", - "this approach is that programmers make mistakes, especially when multiple parts\n", - "of the program need access to the same memory—it becomes difficult to know\n", - "which part of the program \"owns\" the data and must deallocate it. Programmers\n", - "might accidentally deallocate data before the program is done with it (causing\n", - "\"use-after-free\" errors), or they might deallocate it twice (\"double free\"\n", - "errors), or they might never deallocate it (\"leaked memory\" errors). Mistakes\n", - "like these and others can have catastrophic results for the program, and these\n", - "bugs are often hard to track down, making it especially important that they\n", - "don't occur in the first place.\n", - "\n", - "Mojo uses a third approach called \"ownership\" that relies on a collection of\n", - "rules that programmers must follow when passing values. The rules ensure there\n", - "is only one \"owner\" for a given value at a time. When a value's lifetime ends,\n", - "Mojo calls its destructor, which is responsible for deallocating any heap memory\n", - "that needs to be deallocated.\n", - "\n", - "In this way, Mojo helps ensure memory is freed, but it does so in a way that's\n", - "deterministic and safe from errors such as use-after-free, double-free and\n", - "memory leaks. Plus, it does so with a very low performance overhead.\n", - "\n", - "Mojo's value ownership model provides an excellent balance of programming\n", - "productivity and strong memory safety. It only requires that you learn some new\n", - "syntax and a few rules about how to share access to memory within your program.\n", - "\n", - "But before we explain the rules and syntax for Mojo's value ownership model,\n", - "you first need to understand [value\n", - "semantics](/mojo/manual/values/value-semantics)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/index.mdx b/docs/manual/values/index.mdx new file mode 100644 index 0000000000..21f04e22db --- /dev/null +++ b/docs/manual/values/index.mdx @@ -0,0 +1,111 @@ +--- +title: Intro to value ownership +sidebar_position: 1 +description: Introduction to Mojo value ownership. +--- + +A program is nothing without data, and all modern programming languages store +data in one of two places: the call stack and the heap (also sometimes in CPU +registers, but we won't get into that here). However, each language reads and +writes data a bit differently—sometimes very differently. So in the following +sections, we'll explain how Mojo manages memory in your programs and how this +affects the way you write Mojo code. + +:::note + +For an alternate introduction to ownership in Mojo, check out our two-part blog +post: +[What ownership is really about: a mental model approach](https://www.modular.com/blog/what-ownership-is-really-about-a-mental-model-approach), and [Deep dive into +ownership in Mojo](https://www.modular.com/blog/deep-dive-into-ownership-in-mojo). + +::: + +## Stack and heap overview + +In general, all modern programming languages divide a running program's memory +into four segments: + +* Text. The compiled program. +* Data. Global data, either initialized or uninitialized. +* Stack. Local data, automatically managed during the program's runtime. +* Heap. Dynamically-allocated data, managed by the programmer. + +The text and data segments are statically sized, but the stack and heap change +size as the program runs. + +The *stack* stores data local to the current function. When a function is +called, the program allocates a block of memory—a *stack frame*—that is exactly +the size required to store the function's data, including any *fixed-size* +local variables. When another function is called, a new stack frame is pushed +onto the top of the stack. When a function is done, its stack frame is popped +off the stack. + +Notice that we said only "*fixed-size* local values" are stored in the stack. +Dynamically-sized values that can change in size at runtime are instead +stored in the heap, which is a much larger region of memory that allows for +dynamic memory allocation. Technically, a local variable for such a value +is still stored in the call stack, but its value is a fixed-size pointer to the +real value on the heap. Consider a Mojo string: it can be any length, and +its length can change at runtime. So the Mojo `String` struct includes some statically-sized fields, plus a pointer to a dynamically-allocated buffer +holding the actual string data. + +Another important difference between the heap and the stack is that the stack is +managed automatically—the code to push and pop stack frames is added by the +compiler. Heap memory, on the other hand, is managed by the programmer +explicitly allocating and deallocating memory. You may do this indirectly—by +using standard library types like `List` and `String`—or directly, using the +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) API. + +Values that need to outlive the lifetime of a function (such as +an array that's passed between functions and should not be copied) are stored +in the heap, because heap memory is accessible from anywhere in the call stack, +even after the function that created it is removed from the stack. This sort of +situation—in which a heap-allocated value is used by multiple functions—is where +most memory errors occur, and it's where memory management strategies vary the +most between programming languages. + +## Memory management strategies + +Because memory is limited, it's important that programs remove unused data from +the heap ("free" the memory) as quickly as possible. Figuring out when to free +that memory is pretty complicated. + +Some programming languages try to hide the complexities of memory management +from you by utilizing a "garbage collector" process that tracks all memory +usage and deallocates unused heap memory periodically (also known as automatic +memory management). A significant benefit of this method is that it relieves +developers from the burden of manual memory management, generally avoiding more +errors and making developers more productive. However, it incurs a performance +cost because the garbage collector interrupts the program's execution, and it +might not reclaim memory very quickly. + +Other languages require that you manually free data that's allocated on the +heap. When done properly, this makes programs execute quickly, because there's +no processing time consumed by a garbage collector. However, the challenge with +this approach is that programmers make mistakes, especially when multiple parts +of the program need access to the same memory—it becomes difficult to know +which part of the program "owns" the data and must deallocate it. Programmers +might accidentally deallocate data before the program is done with it (causing +"use-after-free" errors), or they might deallocate it twice ("double free" +errors), or they might never deallocate it ("leaked memory" errors). Mistakes +like these and others can have catastrophic results for the program, and these +bugs are often hard to track down, making it especially important that they +don't occur in the first place. + +Mojo uses a third approach called "ownership" that relies on a collection of +rules that programmers must follow when passing values. The rules ensure there +is only one "owner" for a given value at a time. When a value's lifetime ends, +Mojo calls its destructor, which is responsible for deallocating any heap memory +that needs to be deallocated. + +In this way, Mojo helps ensure memory is freed, but it does so in a way that's +deterministic and safe from errors such as use-after-free, double-free and +memory leaks. Plus, it does so with a very low performance overhead. + +Mojo's value ownership model provides an excellent balance of programming +productivity and strong memory safety. It only requires that you learn some new +syntax and a few rules about how to share access to memory within your program. + +But before we explain the rules and syntax for Mojo's value ownership model, +you first need to understand [value +semantics](/mojo/manual/values/value-semantics). diff --git a/docs/manual/values/lifetimes.ipynb b/docs/manual/values/lifetimes.ipynb deleted file mode 100644 index f218538d67..0000000000 --- a/docs/manual/values/lifetimes.ipynb +++ /dev/null @@ -1,595 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Lifetimes, origins, and references\n", - "sidebar_position: 4\n", - "description: Working with origins and references.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo compiler includes a lifetime checker, a compiler pass that analyzes\n", - "dataflow through your program. It identifies when variables are valid and \n", - "inserts destructor calls when a variable's lifetime ends.\n", - "\n", - "The Mojo compiler uses a special value called an _origin_ to track the lifetime\n", - "of variables and the validity of references.\n", - "\n", - "Specifically, an origin answers two questions:\n", - "\n", - "- What variable \"owns\" this value?\n", - "- Can the value be mutated using this reference?\n", - "\n", - "For example, consider the following code:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Joan\n" - ] - } - ], - "source": [ - "fn print_str(s: String):\n", - " print(s)\n", - "\n", - "name = String(\"Joan\")\n", - "print_str(name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line `name = String(\"Joan\")` declares a variable with an identifier (`name`)\n", - "and logical storage space for a `String` value. When you pass `name` into the\n", - "`print_str()` function, the function gets an immutable reference to the value. \n", - "So both `name` and `s` refer to the same logical storage space, and have\n", - "associated origin values that lets the Mojo compiler reason about them. \n", - "\n", - "Most of the time, origins are handled automatically by the compiler. \n", - "However, in some cases you'll need to interact with origins directly:\n", - "\n", - "- When working with references—specifically `ref` arguments and `ref` return\n", - " values. \n", - "\n", - "- When working with types like \n", - " [`Pointer`](/mojo/stdlib/memory/reference/Pointer) or \n", - " [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the \n", - " origin of the data they refer to.\n", - "\n", - "This section also covers [`ref` arguments](#ref-arguments) and \n", - "[`ref` return values](#ref-return-values), which let functions\n", - "take arguments and provide return values as references with parametric\n", - "origins." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with origins\n", - "\n", - "Mojo's origin values are unlike most other values in the language, because\n", - "they're primitive values, not Mojo structs.\n", - "\n", - "Likewise, because these values are mostly created by the \n", - "compiler, you can't just create your own origin value—you usually need to \n", - "derive an origin from an existing value.\n", - "\n", - "### Origin types\n", - "\n", - "Mojo supplies a struct and a set of aliases that you can use to specify \n", - "origin types. As the names suggest, the `ImmutableOrigin` and \n", - "`MutableOrigin` aliases represent immutable and mutable origins, \n", - "respectively:\n", - "\n", - "```mojo\n", - "struct ImmutableRef[origin: ImmutableOrigin]:\n", - " pass\n", - "```\n", - "\n", - "Or you can use the [`Origin`](mojo/stdlib/builtin/type_aliases/Origin)\n", - "struct to specify an origin with parametric mutability:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "struct ParametricRef[\n", - " is_mutable: Bool,\n", - " //,\n", - " origin: Origin[is_mutable].type\n", - "]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that `Origin` _isn't an origin value_, it's a helper for specifying a \n", - "origin **type**. Origin types carry the mutability of a reference as a \n", - "boolean parameter value, indicating whether the origin is mutable, immutable,\n", - "or even with mutability depending on a parameter specified by the enclosing API.\n", - "\n", - "The `is_mutable` parameter here is an [infer-only\n", - "parameter](/mojo/manual/parameters/#infer-only-parameters). It's never\n", - "specified directly by the user, but always inferred from context. The\n", - "`origin` value is often inferred, as well. For example, the following code\n", - "creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing\n", - "value, but doesn't need to specify an origin—the `origin` is inferred from\n", - "the variable passed in to the `address_of()` method." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import Pointer\n", - "\n", - "def use_pointer():\n", - " a = 10\n", - " ptr = Pointer.address_of(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A final type of origin value is an `OriginSet`. As the name suggests, an \n", - "`OriginSet` represents a group of origins. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Origin values\n", - "\n", - "Most origin values are created by the compiler. As a developer, there are a\n", - "few ways to specify origin values:\n", - "\n", - "- Static origin. The `StaticConstantOrigin`\n", - " alias is an origin value representing immutable values that that last for the\n", - " duration of the program. String literal values have a `StaticConstantOrigin`.\n", - "- The `__origin_of()` magic function, which returns the origin associated\n", - " with the value (or values) passed in.\n", - "- Inferred origin. You can use inferred parameters to capture the origin\n", - " of a value passed in to a function.\n", - "- Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases\n", - " are special cases indicating a reference that might access any live value.\n", - "\n", - "#### Static origins\n", - "\n", - "You can use the static origin `StaticConstantOrigin` when you have a \n", - "value that exists for the entire duration of the program.\n", - "\n", - "For example, the `StringLiteral` method\n", - "[`as_string_slice()`](/mojo/stdlib/builtin/string_literal/StringLiteral#as_string_slice)\n", - "returns a [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) pointing\n", - "to the original string literal. String literals are static—they're allocated at\n", - "compile time and never destroyed—so the slice is created with an immutable,\n", - "static origin.\n", - "\n", - "#### Derived origins\n", - "\n", - "Use the `__origin_of(value)` operator to obtain a value's origin. The\n", - "argument to `__origin_of()` can take an arbitrary expression:\n", - "\n", - "```mojo\n", - "__origin_of(self)\n", - "__origin_of(x.y)\n", - "__origin_of(foo())\n", - "```\n", - "\n", - "The `__origin_of()` operator is analyzed statically at compile time;\n", - "The expression passed to `__origin_of()` is never evaluated. (For example, \n", - "when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()`\n", - "function.)\n", - "\n", - "The following struct stores a string value using a \n", - "[`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer): a smart\n", - "pointer that holds an owned value. The `as_ptr()` method returns a `Pointer` to\n", - "the stored string, using the same origin as the original `OwnedPointer`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import OwnedPointer, Pointer\n", - "\n", - "struct BoxedString:\n", - " var box: OwnedPointer[String]\n", - "\n", - " fn __init__(out self, value: String):\n", - " self.box = OwnedPointer(value)\n", - "\n", - " fn as_ptr(self) -> Pointer[String, __origin_of(self.box)]:\n", - " return Pointer.address_of(self.box[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Inferred origins\n", - "\n", - "The other common way to access an origin value is to _infer_ it from the\n", - "the arguments passed to a function or method. For example, the `Span` type\n", - "has an associated `origin`:\n", - "\n", - "```mojo\n", - "struct Span[\n", - " is_mutable: Bool, //,\n", - " T: CollectionElement,\n", - " origin: Origin[is_mutable].type,\n", - "](CollectionElementNew):\n", - " \"\"\"A non owning view of contiguous data.\n", - "```\n", - "\n", - "One of its constructors creates a `Span` from an existing `List`, and infers\n", - "its `origin` value from the list:\n", - "\n", - "```mojo\n", - " fn __init__(out self, ref [origin]list: List[T, *_]):\n", - " \"\"\"Construct a Span from a List.\n", - "\n", - " Args:\n", - " list: The list to which the span refers.\n", - " \"\"\"\n", - " self._data = list.data\n", - " self._len = len(list)\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Working with references\n", - "\n", - "You can use the `ref` keyword with arguments and return values to specify a \n", - "reference with parametric mutability. That is, they can be either mutable or \n", - "immutable.\n", - "\n", - "From inside the called function, a `ref` argument looks like a `borrowed` or\n", - "`inout` argument. \n", - "\n", - "A `ref` return value looks like any other return value to the calling function,\n", - "but it is a _reference_ to an existing value, not a copy.\n", - "\n", - "### `ref` arguments\n", - "\n", - "The `ref` argument convention lets you specify an argument of parametric\n", - "mutability: that is, you don't need to know in advance whether the passed\n", - "argument will be mutable or immutable. There are several reasons you might want\n", - "to use a `ref` argument:\n", - "\n", - "- You want to accept an argument with parametric mutability.\n", - "\n", - "- You want to tie the lifetime of one argument to the lifetime of another\n", - " argument.\n", - "\n", - "- When you want an argument that is guaranteed to be passed in memory: this can\n", - " be important and useful for generic arguments that need an identity,\n", - " irrespective of whether the concrete type is register passable.\n", - "\n", - "The syntax for a `ref` argument is:\n", - "\n", - "ref [origin_specifier] arg_name: arg_type\n", - "\n", - "The origin specifier passed inside the square brackets can be either:\n", - "\n", - "- An origin value.\n", - "- An arbitrary expression, which is treated as shorthand for \n", - " `__origin_of(expression)`. In other words, the following declarations are\n", - " equivalent:\n", - "\n", - " ```mojo\n", - " ref [__origin_of(self)]\n", - " ref [self]\n", - " ```\n", - " \n", - "- An underscore character (`_`) to indicate that the origin is _unbound_. You\n", - " can think of the underscore as a wildcard that will accept any origin:\n", - "\n", - " ```mojo\n", - " def add_ref(ref a: Int, b: Int) -> Int:\n", - " return a+b\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also name the origin explicitly. This is useful if you want to specify\n", - "an `ImmutableOrigin` or `MutableLOrigin`, or if you want to bind to\n", - "the `is_mutable` parameter." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Immutable: Hello\n", - "Mutable: Goodbye\n" - ] - } - ], - "source": [ - "def take_str_ref[\n", - " is_mutable: Bool, //,\n", - " origin: Origin[is_mutable].type\n", - " ](ref [origin] s: String):\n", - " @parameter\n", - " if is_mutable:\n", - " print(\"Mutable: \" + s)\n", - " else:\n", - " print(\"Immutable: \" + s)\n", - "\n", - "def pass_refs(s1: String, owned s2: String):\n", - " take_str_ref(s1)\n", - " take_str_ref(s2)\n", - "\n", - "pass_refs(\"Hello\", \"Goodbye\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `ref` return values\n", - "\n", - "Like `ref` arguments, `ref` return values allow a function to return a mutable\n", - "or immutable reference to a value. Like a `borrowed` or `inout` argument, these\n", - "references don't need to be dereferenced.\n", - "\n", - "`ref` return values can be an efficient way to handle updating items in a \n", - "collection. The standard way to do this is by implementing the `__getitem__()`\n", - "and `__setitem__()` dunder methods. These are invoked to read from and write to \n", - "a subscripted item in a collection:\n", - "\n", - "```mojo\n", - "value = list[a]\n", - "list[b] += 10\n", - "```\n", - "\n", - "With a `ref` argument, `__getitem__()` can return a mutable reference that can\n", - "be modified directly. This has pros and cons compared to using a `__setitem__()`\n", - "method:\n", - "\n", - "- The mutable reference is more efficient—a single update isn't broken up across\n", - " two methods. However, the referenced value must be in memory.\n", - " \n", - "- A `__getitem__()`/`__setitem__()` pair allows for arbitrary code to be run \n", - " when values are retrieved and set. For example, `__setitem__()` can validate\n", - " or constrain input values.\n", - "\n", - "For example, in the following example, `NameList` has a `__getitem__()` method\n", - "that returns a reference: " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dana\n", - "Dana?\n" - ] - } - ], - "source": [ - "struct NameList:\n", - " var names: List[String]\n", - "\n", - " def __init__(out self, *names: String):\n", - " self.names = List[String]()\n", - " for name in names:\n", - " self.names.append(name[])\n", - "\n", - " def __getitem__(ref self, index: Int) ->\n", - " ref [self.names] String:\n", - " if (index >=0 and index < len(self.names)):\n", - " return self.names[index]\n", - " else:\n", - " raise Error(\"index out of bounds\")\n", - "\n", - "def use_name_list():\n", - " list = NameList(\"Thor\", \"Athena\", \"Dana\", \"Vrinda\")\n", - " print(list[2])\n", - " list[2] += \"?\"\n", - " print(list[2])\n", - "\n", - "use_name_list()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this update succeeds, even though `NameList` doesn't define a\n", - "`__setitem__()` method:\n", - "\n", - "```mojo\n", - "list[2] += \"?\"\n", - "```\n", - "\n", - "Also note that the code uses the return value directly each time, rather than\n", - "assigning the return value to a variable, like this:\n", - "\n", - "```mojo\n", - "name = list[2]\n", - "name += \"?\"\n", - "```\n", - "\n", - "Since a variable needs to own its value, `name` would end up with an owned \n", - "_copy_ of the referenced value. Mojo doesn't currently have \n", - "syntax to express that you want to keep the original reference in `name`. This\n", - "will be added in a future release.\n", - "\n", - "If you're working with an API that returns a reference, and you want to avoid\n", - "copying the referenced value, you can use a\n", - "[`Pointer`](/mojo/stdlib/memory/reference/Pointer) to hold an indirect reference.\n", - "You can assign a `Pointer` to a variable, but you need to use the dereference\n", - "operator (`[]`) to access the underlying value.\n", - "\n", - "```mojo\n", - "name_ptr = Pointer.address_of(list[2])\n", - "name_ptr[] += \"?\"\n", - "```\n", - "\n", - "Similarly, when designing an API you might want to return a `Pointer` instead of\n", - "a `ref` to allow users to assign the return value to a variable. For example, \n", - "iterators for the standard library collections return pointers, so they can be\n", - "used in `for..in` loops:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "nums = List(1, 2, 3)\n", - "for item in nums: # List iterator returns a Pointer, which must be dereferenced\n", - " print(item[])\n", - "for i in range(len(nums)):\n", - " print(nums[i]) # List __getitem__() returns a ref" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "(You can find the code for the \n", - "`List` iterator in the [Mojo\n", - "repo](https://github.com/modularml/mojo/blob/main/stdlib/src/collections/list.mojo#L63).)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Parametric mutability of return values\n", - "\n", - "Another advantage of `ref` return arguments is the ability to support parametric\n", - "mutability. For example, recall the signature of the `__getitem__()` method\n", - "above:\n", - "\n", - "```mojo\n", - "def __getitem__(ref self, index: Int) ->\n", - " ref [self] String:\n", - "```\n", - "\n", - "Since the `origin` of the return value is tied to the origin of `self`, the\n", - "returned reference will be mutable if the method was called using a\n", - "mutable reference. The method still works if you have an immutable reference\n", - "to the `NameList`, but it returns an immutable reference:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Diana\n" - ] - } - ], - "source": [ - "fn pass_immutable_list(list: NameList) raises:\n", - " print(list[2])\n", - " # list[2] += \"?\" # Error, this list is immutable\n", - "\n", - "def use_name_list_again():\n", - " list = NameList(\"Sophie\", \"Jack\", \"Diana\")\n", - " pass_immutable_list(list)\n", - "\n", - "use_name_list_again()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without parametric mutability, you'd need to write two versions of \n", - "`__getitem__()`, one that accepts an immutable `self` and another that accepts\n", - "a mutable `self`. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx new file mode 100644 index 0000000000..5dc05d799a --- /dev/null +++ b/docs/manual/values/lifetimes.mdx @@ -0,0 +1,481 @@ +--- +title: Lifetimes, origins, and references +sidebar_position: 4 +description: Working with origins and references. +--- + +The Mojo compiler includes a lifetime checker, a compiler pass that analyzes +dataflow through your program. It identifies when variables are valid and +inserts destructor calls when a variable's lifetime ends. + +The Mojo compiler uses a special value called an *origin* to track the lifetime +of variables and the validity of references. + +Specifically, an origin answers two questions: + +* What variable "owns" this value? +* Can the value be mutated using this reference? + +For example, consider the following code: + +```mojo +fn print_str(s: String): + print(s) + +name = String("Joan") +print_str(name) +``` + +```output +Joan +``` + +The line `name = String("Joan")` declares a variable with an identifier (`name`) +and logical storage space for a `String` value. When you pass `name` into the +`print_str()` function, the function gets an immutable reference to the value. +So both `name` and `s` refer to the same logical storage space, and have +associated origin values that lets the Mojo compiler reason about them. + +Most of the time, origins are handled automatically by the compiler. +However, in some cases you'll need to interact with origins directly: + +* When working with references—specifically `ref` arguments and `ref` return + values. + +* When working with types like + [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) or + [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the + origin of the data they refer to. + +This section also covers [`ref` arguments](#ref-arguments) and +[`ref` return values](#ref-return-values), which let functions +take arguments and provide return values as references with parametric +origins. + +## Working with origins + +Mojo's origin values are unlike most other values in the language, because +they're primitive values, not Mojo structs. + +Likewise, because these values are mostly created by the +compiler, you can't just create your own origin value—you usually need to +derive an origin from an existing value. + +### Origin types + +Mojo supplies a struct and a set of aliases that you can use to specify +origin types. As the names suggest, the `ImmutableOrigin` and +`MutableOrigin` aliases represent immutable and mutable origins, +respectively: + +```mojo +struct ImmutableRef[origin: ImmutableOrigin]: + pass +``` + +Or you can use the [`Origin`](/mojo/stdlib/builtin/type_aliases/Origin) +struct to specify an origin with parametric mutability: + +```mojo +struct ParametricRef[ + is_mutable: Bool, + //, + origin: Origin[is_mutable] +]: + pass +``` + +Note that `Origin` isn't an origin **value**, it's a helper for specifying a +origin **type**. Origin types carry the mutability of a reference as a +boolean parameter value, indicating whether the origin is mutable, immutable, +or even with mutability depending on a parameter specified by the enclosing API. + +The `is_mutable` parameter here is an [infer-only +parameter](/mojo/manual/parameters/#infer-only-parameters). It can't be passed +as a positional parameter—it's either inferred from context or specified by +keyword. The `origin` value is often inferred, as well. For example, the +following code creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an +existing value, but doesn't need to specify an origin—the `origin` is inferred +from the variable passed in to the `address_of()` method. + +```mojo +from memory import Pointer + +def use_pointer(): + a = 10 + ptr = Pointer.address_of(a) +``` + +A final type of origin value is an `OriginSet`. As the name suggests, an +`OriginSet` represents a group of origins. + +### Origin values + +Most origin values are created by the compiler. As a developer, there are a +few ways to specify origin values: + +* Static origin. The `StaticConstantOrigin` alias is an origin value + representing immutable values that that last for the duration of the program. + String literal values have a `StaticConstantOrigin`. +* Derived origin. The `__origin_of()` magic function returns the origin + associated with the value (or values) passed in. +* Inferred origin. You can use inferred parameters to capture the origin of a + value passed in to a function. +* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases are + special cases indicating a reference that might access any live value. + +#### Static origins + +You can use the static origin `StaticConstantOrigin` when you have a +value that exists for the entire duration of the program. + +For example, the `StringLiteral` method +[`as_string_slice()`](/mojo/stdlib/builtin/string_literal/StringLiteral#as_string_slice) +returns a [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) pointing +to the original string literal. String literals are static—they're allocated at +compile time and never destroyed—so the slice is created with an immutable, +static origin. + +#### Derived origins + +Use the `__origin_of(value)` operator to obtain a value's origin. An argument +to `__origin_of()` can take an arbitrary expression that yields one of the +following: + +- An origin value. + +- A value with a memory location. + +For example: + +```mojo +__origin_of(self) +__origin_of(x.y) +__origin_of(foo()) +``` + +The `__origin_of()` operator is analyzed statically at compile time; +The expressions passed to `__origin_of()` are never evaluated. (For example, +when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()` +function.) + +The following struct stores a string value using a +[`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer): a smart +pointer that holds an owned value. The `as_ptr()` method returns a `Pointer` to +the stored string, using the same origin as the original `OwnedPointer`. + +```mojo +from memory import OwnedPointer, Pointer + +struct BoxedString: + var o_ptr: OwnedPointer[String] + + fn __init__(out self, value: String): + self.o_ptr = OwnedPointer(value) + + fn as_ptr(mut self) -> Pointer[String, __origin_of(self.o_ptr)]: + return Pointer.address_of(self.o_ptr[]) +``` + +Note that the `as_ptr()` method takes its `self` argument as `mut self`. If it +used the default `read` argument convention, it would be immutable, and the +derived origin (`__origin_of(self.o_ptr)`) would also be immutable. + +You can also pass multiple expressions to `__origin_of()` to express the union +of two or more origins: + +`__origin_of(a, b)` + +#### Inferred origins + +The other common way to access an origin value is to *infer* it from the +the arguments passed to a function or method. For example, the `Span` type +has an associated `origin`: + +```mojo +struct Span[ + is_mutable: Bool, //, + T: CollectionElement, + origin: Origin[is_mutable], +](CollectionElementNew): + """A non owning view of contiguous data. +``` + +One of its constructors creates a `Span` from an existing `List`, and infers +its `origin` value from the list: + +```mojo + fn __init__(out self, ref [origin]list: List[T, *_]): + """Construct a Span from a List. + + Args: + list: The list to which the span refers. + """ + self._data = list.data + self._len = len(list) +``` + +## Working with references + +You can use the `ref` keyword with arguments and return values to specify a +reference with parametric mutability. That is, they can be either mutable or +immutable. + +From inside the called function, a `ref` argument looks like a `read` or +`mut` argument. + +A `ref` return value looks like any other return value to the calling function, +but it is a *reference* to an existing value, not a copy. + +### `ref` arguments + +The `ref` argument convention lets you specify an argument of parametric +mutability: that is, you don't need to know in advance whether the passed +argument will be mutable or immutable. There are several reasons you might want +to use a `ref` argument: + +* You want to accept an argument with parametric mutability. + +* You want to tie the lifetime of one argument to the lifetime of another + argument. + +* When you want an argument that is guaranteed to be passed in memory: this can + be important and useful for generic arguments that need an identity, + irrespective of whether the concrete type is register passable. + +The syntax for a `ref` argument is: + +ref arg_name: arg_type + +Or: + +ref [origin_specifier(s)] +arg_name: arg_type + +In the first form, the origin and mutability of the `ref` argument is inferred +from the value passed in. The second form includes an origin clause, consisting +of one or more origin specifiers inside square brackets. An origin +specifier can be either: + +* An origin value. + +* An arbitrary expression, which is treated as shorthand for + `__origin_of(expression)`. In other words, the following declarations are + equivalent: + + ```mojo + ref [__origin_of(self)] + ref [self] + ``` + +* An [`AddressSpace`](/nightly/mojo/stdlib/memory/pointer/AddressSpace) value. + +* An underscore character (`_`) to indicate that the origin is *unbound*. This + is equivalent to omitting the origin specifier. + + ```mojo + def add_ref(ref a: Int, b: Int) -> Int: + return a+b + ``` + +You can also name the origin explicitly. This is useful if you want to specify +an `ImmutableOrigin` or `MutableOrigin`, or if you want to bind to +the `is_mutable` parameter. + +```mojo +def take_str_ref[ + is_mutable: Bool, //, + origin: Origin[is_mutable] + ](ref [origin] s: String): + @parameter + if is_mutable: + print("Mutable: " + s) + else: + print("Immutable: " + s) + +def pass_refs(s1: String, owned s2: String): + take_str_ref(s1) + take_str_ref(s2) + +pass_refs("Hello", "Goodbye") +``` + +```output +Immutable: Hello +Mutable: Goodbye +``` + +### `ref` return values + +Like `ref` arguments, `ref` return values allow a function to return a mutable +or immutable reference to a value. The syntax for a `ref` return value is: + +-> ref [origin_specifier(s)] + arg_type + +Note that you **must** specify an origin specifier for a `ref` return value. The +values allowed for origin specifiers are the same as the ones listed for +[`ref` arguments](#ref-arguments). + +`ref` return values can be an efficient way to handle updating items in a +collection. The standard way to do this is by implementing the `__getitem__()` +and `__setitem__()` dunder methods. These are invoked to read from and write to +a subscripted item in a collection: + +```mojo +value = list[a] +list[b] += 10 +``` + +With a `ref` argument, `__getitem__()` can return a mutable reference that can +be modified directly. This has pros and cons compared to using a `__setitem__()` +method: + +* The mutable reference is more efficient—a single update isn't broken up across + two methods. However, the referenced value must be in memory. + +* A `__getitem__()`/`__setitem__()` pair allows for arbitrary code to be run + when values are retrieved and set. For example, `__setitem__()` can validate + or constrain input values. + +For example, in the following example, `NameList` has a `__getitem__()` method +that returns a reference: + +```mojo +struct NameList: + var names: List[String] + + def __init__(out self, *names: String): + self.names = List[String]() + for name in names: + self.names.append(name[]) + + def __getitem__(ref self, index: Int) -> + ref [self.names] String: + if (index >=0 and index < len(self.names)): + return self.names[index] + else: + raise Error("index out of bounds") + +def use_name_list(): + list = NameList("Thor", "Athena", "Dana", "Vrinda") + print(list[2]) + list[2] += "?" + print(list[2]) + +use_name_list() + +``` + +```output +Dana +Dana? +``` + +Note that this update succeeds, even though `NameList` doesn't define a +`__setitem__()` method: + +```mojo +list[2] += "?" +``` + +Also note that the code uses the return value directly each time, rather than +assigning the return value to a variable, like this: + +```mojo +name = list[2] +name += "?" +``` + +Since a variable needs to own its value, `name` would end up with an owned +*copy* of the referenced value. Mojo doesn't currently have +syntax to express that you want to keep the original reference in `name`. This +will be added in a future release. + +If you're working with an API that returns a reference, and you want to avoid +copying the referenced value, you can use a +[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to hold an indirect reference. +You can assign a `Pointer` to a variable, but you need to use the dereference +operator (`[]`) to access the underlying value. + +```mojo +name_ptr = Pointer.address_of(list[2]) +name_ptr[] += "?" +``` + +Similarly, when designing an API you might want to return a `Pointer` instead of +a `ref` to allow users to assign the return value to a variable. For example, +iterators for the standard library collections return pointers, so they can be +used in `for..in` loops: + +```mojo +nums = List(1, 2, 3) +for item in nums: # List iterator returns a Pointer, which must be dereferenced + print(item[]) +for i in range(len(nums)): + print(nums[i]) # List __getitem__() returns a ref +``` + +```output +1 +2 +3 +1 +2 +3 +``` + +(You can find the code for the +`List` iterator in the [Mojo +repo](https://github.com/modularml/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) + +#### Parametric mutability of return values + +Another advantage of `ref` return arguments is the ability to support parametric +mutability. For example, recall the signature of the `__getitem__()` method +above: + +```mojo +def __getitem__(ref self, index: Int) -> + ref [self] String: +``` + +Since the `origin` of the return value is tied to the origin of `self`, the +returned reference will be mutable if the method was called using a +mutable reference. The method still works if you have an immutable reference +to the `NameList`, but it returns an immutable reference: + +```mojo +fn pass_immutable_list(list: NameList) raises: + print(list[2]) + # list[2] += "?" # Error, this list is immutable + +def use_name_list_again(): + list = NameList("Sophie", "Jack", "Diana") + pass_immutable_list(list) + +use_name_list_again() +``` + +```output +Diana +``` + +Without parametric mutability, you'd need to write two versions of +`__getitem__()`, one that accepts an immutable `self` and another that accepts +a mutable `self`. + +#### Return values with union origins + +A `ref` return value can include multiple values in its origin specifier, which +yields the union of the origins. For example, the following `pick_one()` +function returns a reference to one of the two input strings, with an origin +that's a union of both origins. + +```mojo +def pick_one(cond: Bool, ref a: String, ref b: String) -> ref [a, b] String: + if cond: + return a + else: + return b +``` diff --git a/docs/manual/values/ownership.ipynb b/docs/manual/values/ownership.ipynb deleted file mode 100644 index 9601db72d2..0000000000 --- a/docs/manual/values/ownership.ipynb +++ /dev/null @@ -1,653 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Ownership and borrowing\n", - "sidebar_position: 3\n", - "description: How Mojo shares references through function arguments.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A challenge you might face when using some programming languages is that you\n", - "must manually allocate and deallocate memory. When multiple parts of the\n", - "program need access to the same memory, it becomes difficult to keep track of\n", - "who \"owns\" a value and determine when is the right time to deallocate it. If\n", - "you make a mistake, it can result in a \"use-after-free\" error, a \"double free\"\n", - "error, or a \"leaked memory\" error, any one of which can be catastrophic.\n", - "\n", - "Mojo helps avoid these errors by ensuring there is only one variable that owns\n", - "each value at a time, while still allowing you to share references with other\n", - "functions. When the life span of the owner ends, Mojo [destroys the\n", - "value](/mojo/manual/lifecycle/death). Programmers are still responsible for\n", - "making sure any type that allocates resources (including memory) also\n", - "deallocates those resources in its destructor. Mojo's ownership system ensures\n", - "that destructors are called promptly.\n", - "\n", - "On this page, we'll explain the rules that govern this ownership model, and how\n", - "to specify different argument conventions that define how values are passed into\n", - "functions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ownership summary\n", - "\n", - "The fundamental rules that make Mojo's ownership model work are the following:\n", - "\n", - "- Every value has only one owner at a time.\n", - "- When the lifetime of the owner ends, Mojo destroys the value.\n", - "- If there are outstanding references to a value, Mojo extends the lifetime of\n", - " the owner.\n", - "\n", - "### Variables and references \n", - "\n", - "A variable _owns_ its value. A struct owns its fields. \n", - "\n", - "A _reference_ allows you to access a value owned by another variable. A\n", - "reference can have either mutable access or immutable access to that value.\n", - "\n", - "Mojo references are created when you call a function: function arguments can be\n", - "passed as mutable or immutable references. A function can also return a\n", - "reference instead of returning a value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Argument conventions\n", - "\n", - "In all programming languages, code quality and performance is heavily dependent\n", - "upon how functions treat argument values. That is, whether a value received by\n", - "a function is a unique value or a reference, and whether it's mutable or\n", - "immutable, has a series of consequences that define the readability,\n", - "performance, and safety of the language.\n", - "\n", - "In Mojo, we want to provide full [value\n", - "semantics](/mojo/manual/values/value-semantics) by default, which provides\n", - "consistent and predictable behavior. But as a systems programming language, we\n", - "also need to offer full control over memory optimizations, which generally\n", - "requires reference semantics. The trick is to introduce reference semantics in\n", - "a way that ensures all code is memory safe by tracking the lifetime of every\n", - "value and destroying each one at the right time (and only once). All of this is\n", - "made possible in Mojo through the use of argument conventions that ensure every\n", - "value has only one owner at a time.\n", - "\n", - "An argument convention specifies whether an argument is mutable or immutable,\n", - "and whether the function owns the value. Each convention is defined by a\n", - "keyword at the beginning of an argument declaration:\n", - "\n", - "- `borrowed`: The function receives an **immutable reference**. This means the\n", - " function can read the original value (it is *not* a copy), but it cannot\n", - " mutate (modify) it. `def` functions treat this differently, as described below.\n", - " \n", - "- `inout`: The function receives a **mutable reference**. This means the\n", - " function can read and mutate the original value (it is *not* a copy).\n", - " \n", - "- `owned`: The function takes **ownership** of a value. This means the function\n", - " has exclusive ownership of the argument. The caller might choose to transfer\n", - " ownership of an existing value to this function, but that's not always what\n", - " happens. The callee might receive a newly-created value, or a copy of an\n", - " existing value. \n", - "\n", - "- `ref`: The function gets a reference with an parametric mutability: that is,\n", - " the reference can be either mutable or immutable. You can think of `ref` \n", - " arguments as a generalization of the `borrowed` and `inout` conventions. \n", - " `ref` arguments are an advanced topic, and they're described in more detail in\n", - " [Lifetimes and references](/mojo/manual/values/lifetimes).\n", - "\n", - "For example, this function has one argument that's a mutable\n", - "reference and one that's immutable:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "fn add(inout x: Int, borrowed y: Int):\n", - " x += y\n", - "\n", - "fn main():\n", - " var a = 1\n", - " var b = 2\n", - " add(a, b)\n", - " print(a) # Prints 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You've probably already seen some function arguments that don't declare a\n", - "convention. by default, all arguments are `borrowed`. \n", - "In the following sections, we'll explain each of these argument conventions in\n", - "more detail." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Borrowed arguments (`borrowed`)\n", - "\n", - "The `borrowed` convention is the default for all arguments. But `def` and `fn` \n", - "functions treat `borrowed` arguments somewhat differently:\n", - "\n", - "- In a [`def` function](/mojo/manual/functions#def-functions), if you mutate\n", - " the value in the body of the function, the function receives a mutable copy of\n", - " the argument. Otherwise, it receives an immutable reference. This allows you\n", - " to treat arguments as mutable, but avoid the overhead of making extra copies when\n", - " they're not needed.\n", - "\n", - "- In an [`fn` function](/mojo/manual/functions#fn-functions), the function\n", - " always receives an immutable reference. If you want a mutable copy, you can\n", - " assign it to a local variable:\n", - "\n", - " ```mojo\n", - " var my_copy = borrowed_arg\n", - " ```\n", - "\n", - "In both cases, the original value on the caller side can't be changed by the\n", - "callee.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def print_list(list: List[Int]):\n", - " print(list.__str__())\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "print_list(list)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here the `list` argument to `print_list()` is borrowed and not mutated, so the \n", - "`print_list()` function gets an immutable reference to the original `List`, and\n", - "doesn't do any copying. \n", - "\n", - "In general, passing an immutable reference is much more efficient\n", - "when handling large or expensive-to-copy values, because the copy constructor\n", - "and destructor are not invoked for a borrow.\n", - "\n", - "### Compared to C++ and Rust\n", - "\n", - "Mojo's borrowed argument convention is similar in some ways to passing an\n", - "argument by `const&` in C++, which also avoids a copy of the value and disables\n", - "mutability in the callee. However, the borrowed convention differs from\n", - "`const&` in C++ in two important ways:\n", - "\n", - "- The Mojo compiler implements a lifetime checker that ensures that values are\n", - "not destroyed when there are outstanding references to those values.\n", - "\n", - "- Small values like `Int`, `Float`, and `SIMD` are passed directly in machine\n", - "registers instead of through an extra indirection (this is because they are\n", - "declared with the `@register_passable` decorator). This is a [significant\n", - "performance\n", - "enhancement](https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/)\n", - "when compared to languages like C++ and Rust, and moves this optimization from\n", - "every call site to a declaration on the type definition.\n", - "\n", - "The major difference between Rust and Mojo is that Mojo does not require a\n", - "sigil on the caller side to pass by borrow. Also, Mojo is more efficient when\n", - "passing small values, and Rust defaults to moving values instead of passing\n", - "them around by borrow. These policy and syntax decisions allow Mojo to provide\n", - "an easier-to-use programming model." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Mutable arguments (`inout`)\n", - "\n", - "If you'd like your function to receive a **mutable reference**, add the `inout`\n", - "keyword in front of the argument name. You can think of `inout` like this: it\n", - "means any changes to the value *in*side the function are visible *out*side the\n", - "function.\n", - "\n", - "For example, this `mutate()` function updates the original `list` value:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def mutate(inout l: List[Int]):\n", - " l.append(5)\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "\n", - "mutate(list)\n", - "print_list(list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That behaves like an optimized replacement for this:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def mutate_copy(l: List[Int]) -> List[Int]:\n", - " l.append(5)\n", - " return l\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "list = mutate_copy(list)\n", - "print_list(list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although the code using `inout` isn't that much shorter, it's more memory\n", - "efficient because it does not make a copy of the value.\n", - "\n", - "However, remember that the values passed as `inout` must already be mutable.\n", - "For example, if you try to take a `borrowed` value and pass it to another\n", - "function as `inout`, you'll get a compiler error because Mojo can't form a\n", - "mutable reference from an immutable reference.\n", - "\n", - ":::note\n", - "\n", - "You cannot define [default\n", - "values](/mojo/manual/functions#optional-arguments) for `inout`\n", - "arguments.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Argument exclusivity\n", - "\n", - "Mojo enforces _argument exclusivity_ for mutable references. This means that if\n", - "a function receives a mutable reference to a value (such as an `inout` argument),\n", - "it can't receive any other references to the same value—mutable or immutable.\n", - "That is, a mutable reference can't have any other references that _alias_ it.\n", - "\n", - "For example, consider the following code example:\n", - "\n", - "```mojo\n", - "fn append_twice(inout s: String, other: String):\n", - " # Mojo knows 's' and 'other' cannot be the same string.\n", - " s += other\n", - " s += other\n", - "\n", - "fn invalid_access():\n", - " var my_string = str(\"o\")\n", - "\n", - " # error: passing `my_string` inout is invalid since it is also passed\n", - " # borrowed.\n", - " append_twice(my_string, my_string)\n", - " print(my_string)\n", - "```\n", - "\n", - "This code is confusing because the user might expect the output to be `ooo`, \n", - "but since the first addition mutates both `s` and `other`, the actual output\n", - "would be `oooo`. Enforcing exclusivity of mutable references not only prevents\n", - "coding errors, it also allows the Mojo compiler to optimize code in some cases.\n", - "\n", - "One way to avoid this issue when you do need both a mutable and an immutable \n", - "reference (or need to pass the same value to two arguments) is to make a copy:\n", - "\n", - "```mojo\n", - "fn valid_access():\n", - " var my_string = str(\"o\")\n", - " var other_string = str(my_string)\n", - " append_twice(my_string, other_string)\n", - " print(my_string)\n", - "```\n", - "\n", - "Note that argument exclusivity isn't enforced for register-passable trivial\n", - "types (like `Int` and `Bool`), because they are always passed by copy. When\n", - "passing the same value into two `Int` arguments, the callee will receive two\n", - "copies of the value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transfer arguments (`owned` and `^`)\n", - "\n", - "And finally, if you'd like your function to receive value **ownership**, add the\n", - "`owned` keyword in front of the argument name.\n", - "\n", - "This convention is often combined with use of the postfixed `^` \"transfer\"\n", - "sigil on the variable that is passed into the function, which ends the\n", - "lifetime of that variable.\n", - "\n", - "Technically, the `owned` keyword does not guarantee that the received value is\n", - "_the original value_—it guarantees only that the function\n", - "gets unique ownership of a value. This happens in one of\n", - "three ways:\n", - "\n", - "- The caller passes the argument with the `^` transfer sigil, which ends the\n", - "lifetime of that variable (the variable becomes uninitialized) and ownership is\n", - "transferred into the function without making a copy of any heap-allocated data.\n", - "\n", - "- The caller **does not** use the `^` transfer sigil, in which case, the\n", - "value is copied into the function argument and the original variable remains\n", - "valid. (If the original value is not used again, the compiler may optimize away\n", - "the copy and transfer the value).\n", - "\n", - "- The caller passes in a newly-created \"owned\" value, such as a value returned\n", - "from a function. In this case, no variable owns the value and it can be\n", - "transferred directly to the callee. For example:\n", - "\n", - " ```mojo\n", - " def take(owned s: String):\n", - " pass\n", - "\n", - " take(String(\"A brand-new String!\"))\n", - " ```\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For example, the following code works by making a copy of the string,\n", - "because—although `take_text()` uses the `owned` convention—the caller does not\n", - "include the transfer sigil:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello!\n", - "Hello\n" - ] - } - ], - "source": [ - "fn take_text(owned text: String):\n", - " text += \"!\"\n", - " print(text)\n", - "\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message)\n", - " print(message)\n", - "\n", - "my_function()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, if you add the `^` transfer sigil when calling `take_text()`, the\n", - "compiler complains about `print(message)`, because at that point, the `message`\n", - "variable is no longer initialized. That is, this version does not compile:\n", - "\n", - "```mojo\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message^) \n", - " print(message) # ERROR: The `message` variable is uninitialized\n", - "```\n", - "\n", - "This is a critical feature of Mojo's lifetime checker, because it ensures that no\n", - "two variables can have ownership of the same value. To fix the error, you must\n", - "not use the `message` variable after you end its lifetime with the `^` transfer\n", - "operator. So here is the corrected code:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello!\n" - ] - } - ], - "source": [ - "\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message^)\n", - "\n", - "my_function()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Regardless of how it receives the value, when the function declares an argument\n", - "as `owned`, it can be certain that it has unique mutable access to that value. \n", - "Because the value is owned, the value is destroyed when the function \n", - "exits—unless the function transfers the value elsewhere.\n", - "\n", - "For example, in the following example, `add_to_list()` takes a string and\n", - "appends it to the list. Ownership of the string is transferred to the list, so\n", - "it's not destroyed when the function exits. On the other hand, \n", - "`consume_string()` doesn't transfer its `owned` value out, so the value is \n", - "destroyed at the end of the function." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import List\n", - "\n", - "def add_to_list(owned name: String, inout list: List[String]):\n", - " list.append(name^)\n", - " # name is uninitialized, nothing to destroy\n", - "\n", - "def consume_string(owned s: String):\n", - " print(s)\n", - " # s is destroyed here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Value lifetimes are not fully implemented for top-level code in\n", - "Mojo's REPL, so the transfer sigil currently works as intended only when\n", - "used inside a function.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Borrowed versus owned in `def` functions\n", - "\n", - "The difference between `borrowed` and `owned` in a `def` function may be a\n", - "little subtle. In both cases, you can end up with a uniquely-owned value that's\n", - "a copy of the original value.\n", - "\n", - "- The `borrowed` argument always gets an immutable reference or a local copy.\n", - " You can't transfer a value into a `borrowed` argument.\n", - "\n", - "- The `owned` argument always gets a uniquely owned value, which may have been\n", - " copied or transferred from the callee. Using `owned` arguments without the \n", - " transfer sigil (`^`) usually results in values being copied." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Transfer implementation details\n", - "\n", - "In Mojo, you shouldn't conflate \"ownership transfer\" with a \"move\n", - "operation\"—these are not strictly the same thing. \n", - "\n", - "There are multiple ways that Mojo can transfer ownership of a value:\n", - "\n", - "- If a type implements the [move\n", - " constructor](/mojo/manual/lifecycle/life#move-constructor),\n", - " `__moveinit__()`, Mojo may invoke this method _if_ a value of that type is\n", - " transferred into a function as an `owned` argument, _and_ the original\n", - " variable's lifetime ends at the same point (with or without use of the `^`\n", - " transfer sigil).\n", - "\n", - "- If a type implements the [copy \n", - " constructor](/mojo/manual/lifecycle/life#move-constructor), `__copyinit__()`\n", - " and not `__moveinit__()`, Mojo may copy the value and destroy the old value.\n", - "\n", - "- In some cases, Mojo can optimize away the move operation entirely, leaving the \n", - " value in the same memory location but updating its ownership. In these cases,\n", - " a value can be transferred without invoking either the `__copyinit__()` or \n", - " `__moveinit__()` constructors.\n", - "\n", - "In order for the `owned` convention to work _without_ the transfer\n", - "sigil, the value type must be copyable (via `__copyinit__()`)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Comparing `def` and `fn` argument conventions\n", - "\n", - "As mentioned in the section about\n", - "[functions](/mojo/manual/functions), `def` and `fn` functions\n", - "are interchangeable, as far as a caller is concerned, and they can both\n", - "accomplish the same things. It's only the inside that differs, and Mojo's `def`\n", - "function is essentially just sugaring for the `fn` function:\n", - "\n", - "- A `def` argument without a type annotation defaults to\n", - " [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn`\n", - " requires all types be explicitly declared).\n", - "\n", - "- A `def` function can treat a `borrowed` argument as mutable (in which case it\n", - " receives a mutable copy). An `fn` function must make this copy explicitly.\n", - "\n", - "For example, these two functions have the exact same behavior." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "def def_example(a: Int, inout b: Int, owned c):\n", - " pass\n", - "\n", - "fn fn_example(a_in: Int, inout b: Int, owned c: object):\n", - " var a = a_in\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This shadow copy typically adds no overhead, because small types\n", - "like `object` are cheap to copy. However, copying large types that allocate heap\n", - "storage can be expensive. (For example, copying `List` or `Dict` types, or\n", - "copying large numbers of strings.)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx new file mode 100644 index 0000000000..d45ecc7c70 --- /dev/null +++ b/docs/manual/values/ownership.mdx @@ -0,0 +1,462 @@ +--- +title: Ownership and borrowing +sidebar_position: 3 +description: How Mojo shares references through function arguments. +--- + +A challenge you might face when using some programming languages is that you +must manually allocate and deallocate memory. When multiple parts of the +program need access to the same memory, it becomes difficult to keep track of +who "owns" a value and determine when is the right time to deallocate it. If +you make a mistake, it can result in a "use-after-free" error, a "double free" +error, or a "leaked memory" error, any one of which can be catastrophic. + +Mojo helps avoid these errors by ensuring there is only one variable that owns +each value at a time, while still allowing you to share references with other +functions. When the life span of the owner ends, Mojo [destroys the +value](/mojo/manual/lifecycle/death). Programmers are still responsible for +making sure any type that allocates resources (including memory) also +deallocates those resources in its destructor. Mojo's ownership system ensures +that destructors are called promptly. + +On this page, we'll explain the rules that govern this ownership model, and how +to specify different argument conventions that define how values are passed into +functions. + +## Ownership summary + +The fundamental rules that make Mojo's ownership model work are the following: + +* Every value has only one owner at a time. +* When the lifetime of the owner ends, Mojo destroys the value. +* If there are existing references to a value, Mojo extends the lifetime of + the owner. + +### Variables and references + +A variable *owns* its value. A struct owns its fields. + +A *reference* allows you to access a value owned by another variable. A +reference can have either mutable access or immutable access to that value. + +Mojo references are created when you call a function: function arguments can be +passed as mutable or immutable references. A function can also return a +reference instead of returning a value. + +## Argument conventions + +In all programming languages, code quality and performance is heavily dependent +upon how functions treat argument values. That is, whether a value received by +a function is a unique value or a reference, and whether it's mutable or +immutable, has a series of consequences that define the readability, +performance, and safety of the language. + +In Mojo, we want to provide full [value +semantics](/mojo/manual/values/value-semantics) by default, which provides +consistent and predictable behavior. But as a systems programming language, we +also need to offer full control over memory optimizations, which generally +requires reference semantics. The trick is to introduce reference semantics in +a way that ensures all code is memory safe by tracking the lifetime of every +value and destroying each one at the right time (and only once). All of this is +made possible in Mojo through the use of argument conventions that ensure every +value has only one owner at a time. + +An argument convention specifies whether an argument is mutable or immutable, +and whether the function owns the value. Each convention is defined by a +keyword at the beginning of an argument declaration: + +* `read`: The function receives an **immutable reference**. This means the + function can read the original value (it is *not* a copy), but it cannot + mutate (modify) it. `def` functions treat this differently, as described below. + +* `mut`: The function receives a **mutable reference**. This means the + function can read and mutate the original value (it is *not* a copy). + +* `owned`: The function takes **ownership** of a value. This means the function + has exclusive ownership of the argument. The caller might choose to transfer + ownership of an existing value to this function, but that's not always what + happens. The callee might receive a newly-created value, or a copy of an + existing value. + +* `ref`: The function gets a reference with an parametric mutability: that is, + the reference can be either mutable or immutable. You can think of `ref` + arguments as a generalization of the `read` and `mut` conventions. + `ref` arguments are an advanced topic, and they're described in more detail in + [Lifetimes and references](/mojo/manual/values/lifetimes). + +For example, this function has one argument that's a mutable +reference and one that's immutable: + +```mojo +fn add(mut x: Int, read y: Int): + x += y + +fn main(): + var a = 1 + var b = 2 + add(a, b) + print(a) # Prints 3 +``` + +You've probably already seen some function arguments that don't declare a +convention. by default, all arguments are `read`. +In the following sections, we'll explain each of these argument conventions in +more detail. + +## Borrowed arguments (`read`) + +The `read` convention is the default for all arguments. But `def` and `fn` +functions treat `read` arguments somewhat differently: + +* In a [`def` function](/mojo/manual/functions#def-functions), if you mutate + the value in the body of the function, the function receives a mutable copy of + the argument. Otherwise, it receives an immutable reference. This allows you + to treat arguments as mutable, but avoid the overhead of making extra copies when + they're not needed. + +* In an [`fn` function](/mojo/manual/functions#fn-functions), the function + always receives an immutable reference. If you want a mutable copy, you can + assign it to a local variable: + + ```mojo + var my_copy = read_arg + ``` + +In both cases, the original value on the caller side can't be changed by the +callee. + +For example: + +```mojo +from collections import List + +def print_list(list: List[Int]): + print(list.__str__()) + +var list = List(1, 2, 3, 4) +print_list(list) + +``` + +```output +[1, 2, 3, 4] +``` + +Here the `list` argument to `print_list()` is read and not mutated, so the +`print_list()` function gets an immutable reference to the original `List`, and +doesn't do any copying. + +In general, passing an immutable reference is much more efficient +when handling large or expensive-to-copy values, because the copy constructor +and destructor are not invoked for a borrow. + +### Compared to C++ and Rust + +Mojo's read argument convention is similar in some ways to passing an +argument by `const&` in C++, which also avoids a copy of the value and disables +mutability in the callee. However, the read convention differs from +`const&` in C++ in two important ways: + +* The Mojo compiler implements a lifetime checker that ensures that values are + not destroyed when there are outstanding references to those values. + +* Small values like `Int`, `Float`, and `SIMD` are passed directly in machine + registers instead of through an extra indirection (this is because they are + declared with the `@register_passable` decorator). This is a [significant + performance + enhancement](https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/) + when compared to languages like C++ and Rust, and moves this optimization from + every call site to a declaration on the type definition. + +The major difference between Rust and Mojo is that Mojo does not require a +sigil on the caller side to pass by borrow. Also, Mojo is more efficient when +passing small values, and Rust defaults to moving values instead of passing +them around by borrow. These policy and syntax decisions allow Mojo to provide +an easier-to-use programming model. + +## Mutable arguments (`mut`) + +If you'd like your function to receive a **mutable reference**, add the `mut` +keyword in front of the argument name. You can think of `mut` like this: it +means any changes to the value *in*side the function are visible *out*side the +function. + +For example, this `mutate()` function updates the original `list` value: + +```mojo +from collections import List + +def mutate(mut l: List[Int]): + l.append(5) + +var list = List(1, 2, 3, 4) + +mutate(list) +print_list(list) +``` + +```output +[1, 2, 3, 4, 5] +``` + +That behaves like an optimized replacement for this: + +```mojo +from collections import List + +def mutate_copy(l: List[Int]) -> List[Int]: + l.append(5) + return l + +var list = List(1, 2, 3, 4) +list = mutate_copy(list) +print_list(list) +``` + +```output +[1, 2, 3, 4, 5] +``` + +Although the code using `mut` isn't that much shorter, it's more memory +efficient because it does not make a copy of the value. + +However, remember that the values passed as `mut` must already be mutable. +For example, if you try to take a `read` value and pass it to another +function as `mut`, you'll get a compiler error because Mojo can't form a +mutable reference from an immutable reference. + +:::note + +You cannot define [default +values](/mojo/manual/functions#optional-arguments) for `mut` +arguments. + +::: + +### Argument exclusivity + +Mojo enforces *argument exclusivity* for mutable references. This means that if +a function receives a mutable reference to a value (such as an `mut` argument), +it can't receive any other references to the same value—mutable or immutable. +That is, a mutable reference can't have any other references that *alias* it. + +For example, consider the following code example: + +```mojo +fn append_twice(mut s: String, other: String): + # Mojo knows 's' and 'other' cannot be the same string. + s += other + s += other + +fn invalid_access(): + var my_string = str("o") + + # error: passing `my_string` mut is invalid since it is also passed + # read. + append_twice(my_string, my_string) + print(my_string) +``` + +This code is confusing because the user might expect the output to be `ooo`, +but since the first addition mutates both `s` and `other`, the actual output +would be `oooo`. Enforcing exclusivity of mutable references not only prevents +coding errors, it also allows the Mojo compiler to optimize code in some cases. + +One way to avoid this issue when you do need both a mutable and an immutable +reference (or need to pass the same value to two arguments) is to make a copy: + +```mojo +fn valid_access(): + var my_string = str("o") + var other_string = str(my_string) + append_twice(my_string, other_string) + print(my_string) +``` + +Note that argument exclusivity isn't enforced for register-passable trivial +types (like `Int` and `Bool`), because they are always passed by copy. When +passing the same value into two `Int` arguments, the callee will receive two +copies of the value. + +## Transfer arguments (`owned` and `^`) + +And finally, if you'd like your function to receive value **ownership**, add the +`owned` keyword in front of the argument name. + +This convention is often combined with use of the postfixed `^` "transfer" +sigil on the variable that is passed into the function, which ends the +lifetime of that variable. + +Technically, the `owned` keyword does not guarantee that the received value is +*the original value*—it guarantees only that the function +gets unique ownership of a value. This happens in one of +three ways: + +* The caller passes the argument with the `^` transfer sigil, which ends the + lifetime of that variable (the variable becomes uninitialized) and ownership + is transferred into the function. + +* The caller **does not** use the `^` transfer sigil, in which case, Mojo copies + the value. If the type isn't copyable, this is a compile-time error. + +* The caller passes in a newly-created "owned" value, such as a value returned + from a function. In this case, no variable owns the value and it can be + transferred directly to the callee. For example: + + ```mojo + def take(owned s: String): + pass + + take(String("A brand-new String!")) + ``` + +The following code works by making a copy of the string, because `take_text()` +uses the `owned` convention, and the caller does not include the transfer sigil: + +```mojo +fn take_text(owned text: String): + text += "!" + print(text) + +fn my_function(): + var message: String = "Hello" + take_text(message) + print(message) + +my_function() +``` + +```output +Hello! +Hello +``` + +However, if you add the `^` transfer sigil when calling `take_text()`, the +compiler complains about `print(message)`, because at that point, the `message` +variable is no longer initialized. That is, this version does not compile: + +```mojo +fn my_function(): + var message: String = "Hello" + take_text(message^) + print(message) # ERROR: The `message` variable is uninitialized +``` + +This is a critical feature of Mojo's lifetime checker, because it ensures that no +two variables can have ownership of the same value. To fix the error, you must +not use the `message` variable after you end its lifetime with the `^` transfer +operator. So here is the corrected code: + +```mojo + +fn my_function(): + var message: String = "Hello" + take_text(message^) + +my_function() +``` + +```output +Hello! +``` + +Regardless of how it receives the value, when the function declares an argument +as `owned`, it can be certain that it has unique mutable access to that value. +Because the value is owned, the value is destroyed when the function +exits—unless the function transfers the value elsewhere. + +For example, in the following example, `add_to_list()` takes a string and +appends it to the list. Ownership of the string is transferred to the list, so +it's not destroyed when the function exits. On the other hand, +`consume_string()` doesn't transfer its `owned` value out, so the value is +destroyed at the end of the function. + +```mojo +from collections import List + +def add_to_list(owned name: String, mut list: List[String]): + list.append(name^) + # name is uninitialized, nothing to destroy + +def consume_string(owned s: String): + print(s) + # s is destroyed here +``` + +:::note + +Value lifetimes are not fully implemented for top-level code in +Mojo's REPL, so the transfer sigil currently works as intended only when +used inside a function. + +::: + +### Transfer implementation details + +In Mojo, you shouldn't conflate "ownership transfer" with a "move +operation"—these are not strictly the same thing. + +There are multiple ways that Mojo can transfer ownership of a value: + +* If a type implements the [move + constructor](/mojo/manual/lifecycle/life#move-constructor), + `__moveinit__()`, Mojo may invoke this method *if* a value of that type is + transferred into a function as an `owned` argument, *and* the original + variable's lifetime ends at the same point (with or without use of the `^` + transfer sigil). + +* If a type implements the [copy + constructor](/mojo/manual/lifecycle/life#move-constructor), `__copyinit__()` + and not `__moveinit__()`, Mojo may copy the value and destroy the old value. + +* In some cases, Mojo can optimize away the move operation entirely, leaving the + value in the same memory location but updating its ownership. In these cases, + a value can be transferred without invoking either the `__copyinit__()` or + `__moveinit__()` constructors. + +In order for the `owned` convention to work *without* the transfer +sigil, the value type must be copyable (via `__copyinit__()`). + +## Comparing `def` and `fn` argument conventions + +As mentioned in the section about +[functions](/mojo/manual/functions), `def` and `fn` functions +are interchangeable, as far as a caller is concerned, and they can both +accomplish the same things. It's only the inside that differs, and Mojo's `def` +function is essentially just sugaring for the `fn` function: + +* A `def` argument without a type annotation defaults to + [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn` + requires all types be explicitly declared). + +* A `def` function can treat a `read` argument as mutable (in which case it + receives a mutable copy). An `fn` function must make this copy explicitly. + +For example, these two functions have the exact same behavior. + +```mojo +def def_example(a: Int, mut b: Int, owned c): + pass + +fn fn_example(a_in: Int, mut b: Int, owned c: object): + var a = a_in + pass +``` + +This shadow copy typically adds no overhead, because small types +like `object` are cheap to copy. However, copying large types that allocate heap +storage can be expensive. (For example, copying `List` or `Dict` types, or +copying large numbers of strings.) + +### Borrowed versus owned in `def` functions + +The difference between `read` and `owned` in a `def` function may be a +little subtle. In both cases, you can end up with a uniquely-owned value that's +a copy of the original value. + +* The `read` argument always gets an immutable reference or a local copy. + You can't transfer a value into a `read` argument. + +* The `owned` argument always gets a uniquely owned value, which may have been + copied or transferred from the callee. Using `owned` arguments without the + transfer sigil (`^`) usually results in values being copied. diff --git a/docs/manual/values/value-semantics.ipynb b/docs/manual/values/value-semantics.ipynb deleted file mode 100644 index de3c812464..0000000000 --- a/docs/manual/values/value-semantics.ipynb +++ /dev/null @@ -1,431 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Value semantics\n", - "sidebar_position: 2\n", - "description: An explanation of Mojo's value-semantic defaults.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo doesn't enforce value semantics or reference semantics. It supports them\n", - "both and allows each type to define how it is created, copied, and moved (if at\n", - "all). So, if you're building your own type, you can implement it to support\n", - "value semantics, reference semantics, or a bit of both. That said, Mojo is\n", - "designed with argument behaviors that default to value semantics, and it\n", - "provides tight controls for reference semantics that avoid memory errors.\n", - "\n", - "The controls over reference semantics are provided by the [value ownership\n", - "model](/mojo/manual/values/ownership), but before we get into the syntax\n", - "and rules for that, it's important that you understand the principles of value\n", - "semantics. Generally, it means that each variable has unique access to a value,\n", - "and any code outside the scope of that variable cannot modify its value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Intro to value semantics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the most basic situation, sharing a value-semantic type means that you create\n", - "a copy of the value. This is also known as \"pass by value.\" For example,\n", - "consider this code:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], - "source": [ - "x = 1\n", - "y = x\n", - "y += 1\n", - "\n", - "print(x)\n", - "print(y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We assigned the value of `x` to `y`, which creates the value for `y` by making a\n", - "copy of `x`. When we increment `y`, the value of `x` doesn't change. Each\n", - "variable has exclusive ownership of a value.\n", - "\n", - "Whereas, if a type instead uses reference semantics, then `y` would point to\n", - "the same value as `x`, and incrementing either one would affect the value for\n", - "both. Neither `x` nor `y` would \"own\" the value, and any variable would be\n", - "allowed to reference it and mutate it.\n", - "\n", - "Numeric values in Mojo are value semantic because they're trivial types, which\n", - "are cheap to copy. \n", - "\n", - "Here's another example with a function:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n", - "1\n" - ] - } - ], - "source": [ - "def add_one(y: Int):\n", - " y += 1\n", - " print(y)\n", - "\n", - "x = 1\n", - "add_one(x)\n", - "print(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, the `y` value is a copy and the function cannot modify the original `x`\n", - "value.\n", - "\n", - "If you're familiar with Python, this is probably familiar so far, because the\n", - "code above behaves the same in Python. However, Python is not value semantic.\n", - "\n", - "It gets complicated, but let's consider a situation in which you call a Python\n", - "function and pass an object with a pointer to a heap-allocated value. Python\n", - "actually gives that function a reference to your object, which allows the\n", - "function to mutate the heap-allocated value. This can cause nasty bugs if\n", - "you're not careful, because the function might incorrectly assume it has unique\n", - "ownership of that object.\n", - "\n", - "In Mojo, the default behavior for all function arguments is to use value\n", - "semantics. If the function wants to modify the value of an incoming argument,\n", - "then it must explicitly declare so, which avoids accidental mutations of the\n", - "original value.\n", - "\n", - "All Mojo types passed to a `def` function can be treated as mutable,\n", - "which maintains the expected mutability behavior from Python. But by default, it\n", - "is mutating a uniquely-owned value, not the original value.\n", - "\n", - "For example, when you pass an instance of a `SIMD` vector to a `def`\n", - "function it creates a unique copy of all values. Thus, if we modify the\n", - "argument in the function, the original value is unchanged:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[9, 2, 3, 4]\n", - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "def update_simd(t: SIMD[DType.int32, 4]):\n", - " t[0] = 9\n", - " print(t)\n", - "\n", - "v = SIMD[DType.int32, 4](1, 2, 3, 4)\n", - "update_simd(v)\n", - "print(v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If this were Python code, the function would modify the original object, because\n", - "Python shares a reference to the original object.\n", - "\n", - "However, not all types are inexpensive to copy. Copying a `String` or `List`\n", - "requires allocating heap memory, so we want to avoid copying one by accident.\n", - "When designing a type like this, ideally you want to prevent _implicit_ copies,\n", - "and only make a copy when it's explicitly requested. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Value semantics in `def` vs `fn`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The arguments above are mutable because a [`def`\n", - "function](/mojo/manual/functions#def-functions) has special treatment for\n", - "the default\n", - "[`borrowed` argument convention](/mojo/manual/values/ownership#argument-conventions).\n", - "\n", - "Whereas, `fn` functions always receive `borrowed` arguments as immutable\n", - "references. This is a memory optimization to avoid making\n", - "unnecessary copies.\n", - "\n", - "For example, let's create another function with the `fn` declaration. In this\n", - "case, the `y` argument is immutable by default, so if the function wants to\n", - "modify the value in the local scope, it needs to make a local copy:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n", - "1\n" - ] - } - ], - "source": [ - "fn add_two(y: Int):\n", - " # y += 2 # This will cause a compiler error because `y` is immutable\n", - " # We can instead make an explicit copy:\n", - " var z = y\n", - " z += 2\n", - " print(z)\n", - "\n", - "x = 1\n", - "add_two(x)\n", - "print(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is all consistent with value semantics because each variable maintains\n", - "unique ownership of its value.\n", - "\n", - "The way the `fn` function receives the `y` value is a \"look but don't touch\"\n", - "approach to value semantics. This is also a more memory-efficient approach when\n", - "dealing with memory-intensive arguments, because Mojo doesn't make any copies\n", - "unless we explicitly make the copies ourselves.\n", - "\n", - "Thus, the default behavior for `def` and `fn` arguments is fully value\n", - "semantic: arguments are either copies or immutable references, and any living\n", - "variable from the callee is not affected by the function.\n", - "\n", - "But we must also allow reference semantics (mutable references) because it's\n", - "how we build performant and memory-efficient programs (making copies of\n", - "everything gets really expensive). The challenge is to introduce reference\n", - "semantics in a way that does not disturb the predictability and safety of value\n", - "semantics.\n", - "\n", - "The way we do that in Mojo is, instead of enforcing that every variable have\n", - "\"exclusive access\" to a value, we ensure that every value has an \"exclusive\n", - "owner,\" and destroy each value when the lifetime of its owner ends. \n", - "\n", - "On the next page about [value\n", - "ownership](/mojo/manual/values/ownership), you'll learn how to modify\n", - "the default argument conventions, and safely use reference semantics so every\n", - "value has only one owner at a time." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python-style reference semantics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "If you will always use strict type declarations, you\n", - "can skip this section because it only applies to Mojo code using `def`\n", - "functions without type declarations (or values declared as\n", - "[`object`](/mojo/stdlib/builtin/object/object)).\n", - "\n", - ":::\n", - "\n", - "As we said at the top of this page, Mojo doesn't enforce value semantics or\n", - "reference semantics. It's up to each type author to decide how an instance of\n", - "their type should be created, copied, and moved (see [Value\n", - "lifecycle](/mojo/manual/lifecycle/)). Thus, in order to provide compatibility\n", - "with Python, Mojo's `object` type is designed to support Python's style of\n", - "argument passing for functions, which is different from the other types in\n", - "Mojo.\n", - "\n", - "Python's argument-passing convention is called \"pass by object reference.\" This\n", - "means when you pass a variable to a Python function, you actually pass a\n", - "reference to the object, as a value (so it's not strictly reference semantics).\n", - "\n", - "Passing the object reference \"as a value\" means that the argument name is just\n", - "a container that acts like an alias to the original object. If you reassign the\n", - "argument inside the function, it does not affect the caller's original value.\n", - "However, if you modify the object itself (such as call `append()` on a list),\n", - "the change is visible to the original object outside the function.\n", - "\n", - "For example, here's a Python function that receives a list and modifies it:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "func: [1, 2, 3]\n", - "orig: [1, 2, 3]\n" - ] - } - ], - "source": [ - "%%python\n", - "def modify_list(l):\n", - " l.append(3)\n", - " print(\"func:\", l)\n", - "\n", - "ar = [1, 2]\n", - "modify_list(ar)\n", - "print(\"orig:\", ar)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, it looks like the list is \"passed by reference\" because `l`\n", - "modifies the original value.\n", - "\n", - "However, if the Python function instead _assigns_ a value to `l`, it does not\n", - "affect the original value:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "func: [3, 4]\n", - "orig: [1, 2]\n" - ] - } - ], - "source": [ - "%%python\n", - "def change_list(l):\n", - " l = [3, 4]\n", - " print(\"func:\", l)\n", - "\n", - "ar = [1, 2]\n", - "change_list(ar)\n", - "print(\"orig:\", ar)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This demonstrates how a Python argument holds the object reference _as a\n", - "value_: the function can mutate the original value, but it can also assign a\n", - "new object to the argument name." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Pass by object reference in Mojo" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although we haven't finished implementing the\n", - "[`object`](/mojo/stdlib/builtin/object/object) type to represent any Mojo\n", - "type, our intention is to do so, and enable \"pass by object reference\" as\n", - "described above for all dynamic types in a `def` function.\n", - "\n", - "That means you can have dynamic typing and \"pass by object reference\" behavior\n", - "by simply writing your Mojo code like Python:\n", - "\n", - "1. Use `def` function declarations.\n", - "2. Don't declare argument types.\n", - "\n", - ":::note TODO\n", - "\n", - "Mojo does not adopt the full syntax of Python yet, and there is a lot to\n", - "do in this department before Mojo supports all of Python's types and behaviors.\n", - "As such, this is a topic that also still needs a lot of documentation.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/value-semantics.mdx b/docs/manual/values/value-semantics.mdx new file mode 100644 index 0000000000..58b1896f2c --- /dev/null +++ b/docs/manual/values/value-semantics.mdx @@ -0,0 +1,270 @@ +--- +title: Value semantics +sidebar_position: 2 +description: An explanation of Mojo's value-semantic defaults. +--- + +Mojo doesn't enforce value semantics or reference semantics. It supports them +both and allows each type to define how it is created, copied, and moved (if at +all). So, if you're building your own type, you can implement it to support +value semantics, reference semantics, or a bit of both. That said, Mojo is +designed with argument behaviors that default to value semantics, and it +provides tight controls for reference semantics that avoid memory errors. + +The controls over reference semantics are provided by the [value ownership +model](/mojo/manual/values/ownership), but before we get into the syntax +and rules for that, it's important that you understand the principles of value +semantics. Generally, it means that each variable has unique access to a value, +and any code outside the scope of that variable cannot modify its value. + +## Intro to value semantics + +In the most basic situation, sharing a value-semantic type means that you create +a copy of the value. This is also known as "pass by value." For example, +consider this code: + +```mojo +x = 1 +y = x +y += 1 + +print(x) +print(y) +``` + +```output +1 +2 +``` + +We assigned the value of `x` to `y`, which creates the value for `y` by making a +copy of `x`. When we increment `y`, the value of `x` doesn't change. Each +variable has exclusive ownership of a value. + +Whereas, if a type instead uses reference semantics, then `y` would point to +the same value as `x`, and incrementing either one would affect the value for +both. Neither `x` nor `y` would "own" the value, and any variable would be +allowed to reference it and mutate it. + +Numeric values in Mojo are value semantic because they're trivial types, which +are cheap to copy. + +Here's another example with a function: + +```mojo +def add_one(y: Int): + y += 1 + print(y) + +x = 1 +add_one(x) +print(x) +``` + +```output +2 +1 +``` + +Again, the `y` value is a copy and the function cannot modify the original `x` +value. + +If you're familiar with Python, this is probably familiar so far, because the +code above behaves the same in Python. However, Python is not value semantic. + +It gets complicated, but let's consider a situation in which you call a Python +function and pass an object with a pointer to a heap-allocated value. Python +actually gives that function a reference to your object, which allows the +function to mutate the heap-allocated value. This can cause nasty bugs if +you're not careful, because the function might incorrectly assume it has unique +ownership of that object. + +In Mojo, the default behavior for all function arguments is to use value +semantics. If the function wants to modify the value of an incoming argument, +then it must explicitly declare so, which avoids accidental mutations of the +original value. + +All Mojo types passed to a `def` function can be treated as mutable, +which maintains the expected mutability behavior from Python. But by default, it +is mutating a uniquely-owned value, not the original value. + +For example, when you pass an instance of a `SIMD` vector to a `def` +function it creates a unique copy of all values. Thus, if we modify the +argument in the function, the original value is unchanged: + +```mojo +def update_simd(t: SIMD[DType.int32, 4]): + t[0] = 9 + print(t) + +v = SIMD[DType.int32, 4](1, 2, 3, 4) +update_simd(v) +print(v) +``` + +```output +[9, 2, 3, 4] +[1, 2, 3, 4] +``` + +If this were Python code, the function would modify the original object, because +Python shares a reference to the original object. + +However, not all types are inexpensive to copy. Copying a `String` or `List` +requires allocating heap memory, so we want to avoid copying one by accident. +When designing a type like this, ideally you want to prevent *implicit* copies, +and only make a copy when it's explicitly requested. + +### Value semantics in `def` vs `fn` + +The arguments above are mutable because a [`def` +function](/mojo/manual/functions#def-functions) has special treatment for +the default +[`read` argument convention](/mojo/manual/values/ownership#argument-conventions). + +Whereas, `fn` functions always receive `read` arguments as immutable +references. This is a memory optimization to avoid making +unnecessary copies. + +For example, let's create another function with the `fn` declaration. In this +case, the `y` argument is immutable by default, so if the function wants to +modify the value in the local scope, it needs to make a local copy: + +```mojo +fn add_two(y: Int): + # y += 2 # This will cause a compiler error because `y` is immutable + # We can instead make an explicit copy: + var z = y + z += 2 + print(z) + +x = 1 +add_two(x) +print(x) +``` + +```output +3 +1 +``` + +This is all consistent with value semantics because each variable maintains +unique ownership of its value. + +The way the `fn` function receives the `y` value is a "look but don't touch" +approach to value semantics. This is also a more memory-efficient approach when +dealing with memory-intensive arguments, because Mojo doesn't make any copies +unless we explicitly make the copies ourselves. + +Thus, the default behavior for `def` and `fn` arguments is fully value +semantic: arguments are either copies or immutable references, and any living +variable from the callee is not affected by the function. + +But we must also allow reference semantics (mutable references) because it's +how we build performant and memory-efficient programs (making copies of +everything gets really expensive). The challenge is to introduce reference +semantics in a way that does not disturb the predictability and safety of value +semantics. + +The way we do that in Mojo is, instead of enforcing that every variable have +"exclusive access" to a value, we ensure that every value has an "exclusive +owner," and destroy each value when the lifetime of its owner ends. + +On the next page about [value +ownership](/mojo/manual/values/ownership), you'll learn how to modify +the default argument conventions, and safely use reference semantics so every +value has only one owner at a time. + +## Python-style reference semantics + +:::note + +If you will always use strict type declarations, you +can skip this section because it only applies to Mojo code using `def` +functions without type declarations (or values declared as +[`object`](/mojo/stdlib/builtin/object/object)). + +::: + +As we said at the top of this page, Mojo doesn't enforce value semantics or +reference semantics. It's up to each type author to decide how an instance of +their type should be created, copied, and moved (see [Value +lifecycle](/mojo/manual/lifecycle/)). Thus, in order to provide compatibility +with Python, Mojo's `object` type is designed to support Python's style of +argument passing for functions, which is different from the other types in +Mojo. + +Python's argument-passing convention is called "pass by object reference." This +means when you pass a variable to a Python function, you actually pass a +reference to the object, as a value (so it's not strictly reference semantics). + +Passing the object reference "as a value" means that the argument name is just +a container that acts like an alias to the original object. If you reassign the +argument inside the function, it does not affect the caller's original value. +However, if you modify the object itself (such as call `append()` on a list), +the change is visible to the original object outside the function. + +For example, here's a Python function that receives a list and modifies it: + +```mojo +%%python +def modify_list(l): + l.append(3) + print("func:", l) + +ar = [1, 2] +modify_list(ar) +print("orig:", ar) +``` + +```output +func: [1, 2, 3] +orig: [1, 2, 3] +``` + +In this example, it looks like the list is "passed by reference" because `l` +modifies the original value. + +However, if the Python function instead *assigns* a value to `l`, it does not +affect the original value: + +```mojo +%%python +def change_list(l): + l = [3, 4] + print("func:", l) + +ar = [1, 2] +change_list(ar) +print("orig:", ar) +``` + +```output +func: [3, 4] +orig: [1, 2] +``` + +This demonstrates how a Python argument holds the object reference *as a +value*: the function can mutate the original value, but it can also assign a +new object to the argument name. + +### Pass by object reference in Mojo + +Although we haven't finished implementing the +[`object`](/mojo/stdlib/builtin/object/object) type to represent any Mojo +type, our intention is to do so, and enable "pass by object reference" as +described above for all dynamic types in a `def` function. + +That means you can have dynamic typing and "pass by object reference" behavior +by simply writing your Mojo code like Python: + +1. Use `def` function declarations. +2. Don't declare argument types. + +:::note TODO + +Mojo does not adopt the full syntax of Python yet, and there is a lot to +do in this department before Mojo supports all of Python's types and behaviors. +As such, this is a topic that also still needs a lot of documentation. + +::: diff --git a/docs/manual/variables.ipynb b/docs/manual/variables.ipynb deleted file mode 100644 index 68b87ce68e..0000000000 --- a/docs/manual/variables.ipynb +++ /dev/null @@ -1,493 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Variables\n", - "sidebar_position: 3\n", - "description: Introduction to Mojo variables.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A variable is a name that holds a value or object. All variables in Mojo are \n", - "mutable—their value can be changed. (If you want to define a constant value that\n", - "can't change at runtime, see the \n", - "[`alias` keyword](/mojo/manual/parameters/#alias-named-parameter-expressions).)\n", - "\n", - "Mojo has two kinds of variables:\n", - "\n", - "- Explicitly-declared variables are created with the `var` keyword, and may include\n", - " [type annotations](#type-annotations).\n", - "\n", - " ```mojo\n", - " var a = 5\n", - " var b: Float64 = 3.14\n", - " ```\n", - " \n", - "- Implicitly-declared variables are created with an assignment statement:\n", - "\n", - " ```mojo\n", - " a = 5\n", - " b = 3.14\n", - " ```\n", - "\n", - "Both types of variables are strongly-typed: the variable receives a type when\n", - "it's created, and the type never changes. You can't assign a variable a value of\n", - "a different type:\n", - "\n", - "```mojo\n", - "count = 8 # count is type Int\n", - "count = \"Nine?\" # Error: can't implicitly convert 'StringLiteral' to 'Int'\n", - "```\n", - "\n", - "Some types support [_implicit conversions_](#implicit-type-conversion) from\n", - "other types. For example, an integer value can implicitly convert to a\n", - "floating-point value:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99.0\n" - ] - } - ], - "source": [ - "var temperature: Float64 = 99\n", - "print(temperature)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, the `temperature` variable is explicitly typed as `Float64`,\n", - "but assigned an integer value, so the value is implicitly converted to a \n", - "`Float64`. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implicitly-declared variables\n", - "\n", - "You can create a variable with just a name and a value. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "name = String(\"Sam\")\n", - "user_id = 0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implicitly-declared variables are strongly typed: they take the type from the\n", - "first value assigned to them. For example, the `user_id` variable above is type\n", - "`Int`, while the `name` variable is type `String`. You can't assign a string to\n", - "`user_id` or an integer to `name`.\n", - "\n", - "Implicitly-declared variables are scoped at the function level. You create an\n", - "implicitly-declared variable the first time you assign a value to a given name\n", - "inside a function. Any subsequent references to that name inside the function\n", - "refer to the same variable. For more information, see [Variable\n", - "scopes](#variable-scopes), which describes how variable scoping differs between\n", - "explicitly- and implicitly-declared variables." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explicitly-declared variables\n", - "\n", - "You can declare a variable with the `var` keyword. For example:\n", - "\n", - "```mojo\n", - "var name = String(\"Sam\")\n", - "var user_id: Int\n", - "```\n", - "The `name` variable is initialized to the string \"Sam\". The `user_id` variable \n", - "is uninitialized, but it has a declared type, `Int` for an integer value. All\n", - "explicitly-declared variables are typed—either explicitly with a \n", - "[type annotation](#type-annotations) or implicitly when they're initialized with\n", - "a value.\n", - "\n", - "Since variables are strongly typed, you can't assign a variable a\n", - "value of a different type, unless those types can be \n", - "[implicitly converted](#implicit-type-conversion). For example, this code will\n", - "not compile:\n", - "\n", - "```mojo\n", - "var user_id: Int = \"Sam\"\n", - "```\n", - "\n", - "There are several main differences between explicitly-declared variables and\n", - "implicitly-declared variables:\n", - "\n", - "- An explicitly-declared variable can be declared without initializing it:\n", - "\n", - " ```mojo\n", - " var value: Float64\n", - " ```\n", - "\n", - "- Explicitly-declared variables follow [lexical scoping](#variable-scopes),\n", - " unlike implicitly-declared variables." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Type annotations" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although Mojo can infer a variable type from the first value assigned to a \n", - "variable, it also supports static type annotations on variables. Type \n", - "annotations provide a more explicit way of specifying the variable's type.\n", - "\n", - "To specify the type for a variable, add a colon followed by the type name:\n", - "\n", - "```mojo\n", - "var name: String = get_name()\n", - "```\n", - "\n", - "This makes it clear that `name` is type `String`, without knowing what the \n", - "`get_name()` function returns. The `get_name()` function may return a `String`,\n", - "or a value that's implicitly convertible to a `String`.\n", - "\n", - ":::note\n", - "\n", - "You must declare a variable with `var` to use type annotations.\n", - "\n", - ":::\n", - "\n", - "If a type has a constructor with just one argument, you can initialize it in\n", - "two ways:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "var name1: String = \"Sam\"\n", - "var name2 = String(\"Sam\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Both of these lines invoke the same constructor to create a `String` from a\n", - "`StringLiteral`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Late initialization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using type annotations allows for late initialization. For example, notice here\n", - "that the `z` variable is first declared with just a type, and the value is\n", - "assigned later:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_function(x: Int):\n", - " var z: Float32\n", - " if x != 0:\n", - " z = 1.0\n", - " else:\n", - " z = foo()\n", - " print(z)\n", - "\n", - "fn foo() -> Float32:\n", - " return 3.14" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you try to pass an uninitialized variable to a function or use\n", - "it on the right-hand side of an assignment statement, compilation fails.\n", - "\n", - "```mojo\n", - "var z: Float32\n", - "var y = z # Error: use of uninitialized value 'z'\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Late initialization works only if the variable is declared with a\n", - "type.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Implicit type conversion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some types include built-in type conversion (type casting) from one type into\n", - "its own type. For example, if you assign an integer to a variable that has a \n", - "floating-point type, it converts the value instead of giving a compiler error:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "var number: Float64 = 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As shown above, value assignment can be converted into a constructor call if the \n", - "target type has a constructor that takes a single argument that matches the\n", - "value being assigned. So, this code uses the `Float64` constructor that takes an\n", - "integer: `__init__(out self, value: Int)`.\n", - "\n", - "In general, implicit conversions should only be supported where the conversion\n", - "is lossless.\n", - "\n", - "Implicit conversion follows the logic of [overloaded\n", - "functions](/mojo/manual/functions#overloaded-functions). If the destination\n", - "type has a single-argument constructor that takes an argument of the source\n", - "type, it can be invoked for implicit conversion. \n", - "\n", - "So assigning an integer to a `Float64` variable is exactly the same as this:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "var number = Float64(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similarly, if you call a function that requires an argument of a certain type \n", - "(such as `Float64`), you can pass in any value as long as that value type can\n", - "implicitly convert to the required type (using one of the type's overloaded\n", - "constructors).\n", - "\n", - "For example, you can pass an `Int` to a function that expects a `Float64`,\n", - "because `Float64` includes a constructor that takes an `Int`:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn take_float(value: Float64):\n", - " print(value)\n", - "\n", - "fn pass_integer():\n", - " var value: Int = 1\n", - " take_float(value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details on implicit conversion, see \n", - "[Constructors and implicit \n", - "conversion](/mojo/manual/lifecycle/life/#constructors-and-implicit-conversion)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variable scopes\n", - "\n", - "Variables declared with `var` are bound by *lexical scoping*. This\n", - "means that nested code blocks can read and modify variables defined in an\n", - "outer scope. But an outer scope **cannot** read variables defined in an\n", - "inner scope at all.\n", - "\n", - "For example, the `if` code block shown here creates an inner scope where outer\n", - "variables are accessible to read/write, but any new variables do not live\n", - "beyond the scope of the `if` block:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "num: 1\n", - "num: 2\n", - "num: 1\n", - "dig: 2\n" - ] - } - ], - "source": [ - "def lexical_scopes():\n", - " var num = 1\n", - " var dig = 1\n", - " if num == 1:\n", - " print(\"num:\", num) # Reads the outer-scope \"num\"\n", - " var num = 2 # Creates new inner-scope \"num\"\n", - " print(\"num:\", num) # Reads the inner-scope \"num\"\n", - " dig = 2 # Updates the outer-scope \"dig\"\n", - " print(\"num:\", num) # Reads the outer-scope \"num\"\n", - " print(\"dig:\", dig) # Reads the outer-scope \"dig\"\n", - "\n", - "lexical_scopes()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the `var` statement inside the `if` creates a **new** variable with the same name as the outer variable. This prevents the inner loop from accessing the outer `num` variable. (This is called \"variable shadowing,\" where the inner scope variable hides or \"shadows\" a variable from an outer scope.)\n", - "\n", - "The lifetime of the inner `num` ends exactly where the `if` code block ends,\n", - "because that's the scope in which the variable was defined.\n", - "\n", - "This is in contrast to implicitly-declared variables (those without the `var`\n", - "keyword), which use **function-level scoping** (consistent with Python variable\n", - "behavior). That means, when you change the value of an implicitly-declared\n", - "variable inside the `if` block, it actually changes the value for the entire\n", - "function.\n", - "\n", - "For example, here's the same code but *without* the `var` declarations:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "2\n" - ] - } - ], - "source": [ - "def function_scopes():\n", - " num = 1\n", - " if num == 1:\n", - " print(num) # Reads the function-scope \"num\"\n", - " num = 2 # Updates the function-scope variable\n", - " print(num) # Reads the function-scope \"num\"\n", - " print(num) # Reads the function-scope \"num\"\n", - "\n", - "function_scopes()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the last `print()` function sees the updated `num` value from the inner\n", - "scope, because implicitly-declared variables (Python-style variables) use function-level\n", - "scope (instead of lexical scope)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/variables.mdx b/docs/manual/variables.mdx new file mode 100644 index 0000000000..9247ff5c9f --- /dev/null +++ b/docs/manual/variables.mdx @@ -0,0 +1,305 @@ +--- +title: Variables +sidebar_position: 3 +description: Introduction to Mojo variables. +--- + +A variable is a name that holds a value or object. All variables in Mojo are +mutable—their value can be changed. (If you want to define a constant value that +can't change at runtime, see the +[`alias` keyword](/mojo/manual/parameters/#alias-named-parameter-expressions).) + +Mojo has two kinds of variables: + +* Explicitly-declared variables are created with the `var` keyword, and may include + [type annotations](#type-annotations). + + ```mojo + var a = 5 + var b: Float64 = 3.14 + ``` + +* Implicitly-declared variables are created with an assignment statement: + + ```mojo + a = 5 + b = 3.14 + ``` + +Both types of variables are strongly-typed: the variable receives a type when +it's created, and the type never changes. You can't assign a variable a value of +a different type: + +```mojo +count = 8 # count is type Int +count = "Nine?" # Error: can't implicitly convert 'StringLiteral' to 'Int' +``` + +Some types support [*implicit conversions*](#implicit-type-conversion) from +other types. For example, an integer value can implicitly convert to a +floating-point value: + +```mojo +var temperature: Float64 = 99 +print(temperature) +``` + +```output +99.0 +``` + +In this example, the `temperature` variable is explicitly typed as `Float64`, +but assigned an integer value, so the value is implicitly converted to a +`Float64`. + +## Implicitly-declared variables + +You can create a variable with just a name and a value. For example: + +```mojo +name = String("Sam") +user_id = 0 +``` + +Implicitly-declared variables are strongly typed: they take the type from the +first value assigned to them. For example, the `user_id` variable above is type +`Int`, while the `name` variable is type `String`. You can't assign a string to +`user_id` or an integer to `name`. + +Implicitly-declared variables are scoped at the function level. You create an +implicitly-declared variable the first time you assign a value to a given name +inside a function. Any subsequent references to that name inside the function +refer to the same variable. For more information, see [Variable +scopes](#variable-scopes), which describes how variable scoping differs between +explicitly- and implicitly-declared variables. + +## Explicitly-declared variables + +You can declare a variable with the `var` keyword. For example: + +```mojo +var name = String("Sam") +var user_id: Int +``` + +The `name` variable is initialized to the string "Sam". The `user_id` variable +is uninitialized, but it has a declared type, `Int` for an integer value. All +explicitly-declared variables are typed—either explicitly with a +[type annotation](#type-annotations) or implicitly when they're initialized with +a value. + +Since variables are strongly typed, you can't assign a variable a +value of a different type, unless those types can be +[implicitly converted](#implicit-type-conversion). For example, this code will +not compile: + +```mojo +var user_id: Int = "Sam" +``` + +There are several main differences between explicitly-declared variables and +implicitly-declared variables: + +* An explicitly-declared variable can be declared without initializing it: + + ```mojo + var value: Float64 + ``` + +* Explicitly-declared variables follow [lexical scoping](#variable-scopes), + unlike implicitly-declared variables. + +## Type annotations + +Although Mojo can infer a variable type from the first value assigned to a +variable, it also supports static type annotations on variables. Type +annotations provide a more explicit way of specifying the variable's type. + +To specify the type for a variable, add a colon followed by the type name: + +```mojo +var name: String = get_name() +``` + +This makes it clear that `name` is type `String`, without knowing what the +`get_name()` function returns. The `get_name()` function may return a `String`, +or a value that's implicitly convertible to a `String`. + +:::note + +You must declare a variable with `var` to use type annotations. + +::: + +If a type has a constructor with just one argument, you can initialize it in +two ways: + +```mojo +var name1: String = "Sam" +var name2 = String("Sam") +``` + +Both of these lines invoke the same constructor to create a `String` from a +`StringLiteral`. + +### Late initialization + +Using type annotations allows for late initialization. For example, notice here +that the `z` variable is first declared with just a type, and the value is +assigned later: + +```mojo +fn my_function(x: Int): + var z: Float32 + if x != 0: + z = 1.0 + else: + z = foo() + print(z) + +fn foo() -> Float32: + return 3.14 +``` + +If you try to pass an uninitialized variable to a function or use +it on the right-hand side of an assignment statement, compilation fails. + +```mojo +var z: Float32 +var y = z # Error: use of uninitialized value 'z' +``` + +:::note + +Late initialization works only if the variable is declared with a +type. + +::: + +### Implicit type conversion + +Some types include built-in type conversion (type casting) from one type into +its own type. For example, if you assign an integer to a variable that has a +floating-point type, it converts the value instead of giving a compiler error: + +```mojo +var number: Float64 = Int(1) +``` + +```output +1 +``` + +As shown above, value assignment can be converted into a constructor call if the +target type has a constructor that meets the following criteria: + +- It's decorated with the `@implicit` decorator. + +- It takes a single required argument that matches the value being assigned. + +So, this code uses the `Float64` constructor that takes an +integer: `__init__(out self, value: Int)`. + +In general, implicit conversions should only be supported where the conversion +is lossless. + +Implicit conversion follows the logic of [overloaded +functions](/mojo/manual/functions#overloaded-functions). If the destination +type has a viable implicit conversion constructor for the source +type, it can be invoked for implicit conversion. + +So assigning an integer to a `Float64` variable is exactly the same as this: + +```mojo +var number = Float64(1) +``` + +Similarly, if you call a function that requires an argument of a certain type +(such as `Float64`), you can pass in any value as long as that value type can +implicitly convert to the required type (using one of the type's overloaded +constructors). + +For example, you can pass an `Int` to a function that expects a `Float64`, +because `Float64` includes an implicit conversion constructor that takes an +`Int`: + +```mojo +fn take_float(value: Float64): + print(value) + +fn pass_integer(): + var value: Int = 1 + take_float(value) +``` + +For more details on implicit conversion, see +[Constructors and implicit +conversion](/mojo/manual/lifecycle/life/#constructors-and-implicit-conversion). + +## Variable scopes + +Variables declared with `var` are bound by *lexical scoping*. This +means that nested code blocks can read and modify variables defined in an +outer scope. But an outer scope **cannot** read variables defined in an +inner scope at all. + +For example, the `if` code block shown here creates an inner scope where outer +variables are accessible to read/write, but any new variables do not live +beyond the scope of the `if` block: + +```mojo +def lexical_scopes(): + var num = 1 + var dig = 1 + if num == 1: + print("num:", num) # Reads the outer-scope "num" + var num = 2 # Creates new inner-scope "num" + print("num:", num) # Reads the inner-scope "num" + dig = 2 # Updates the outer-scope "dig" + print("num:", num) # Reads the outer-scope "num" + print("dig:", dig) # Reads the outer-scope "dig" + +lexical_scopes() +``` + +```output +num: 1 +num: 2 +num: 1 +dig: 2 +``` + +Note that the `var` statement inside the `if` creates a **new** variable with the same name as the outer variable. This prevents the inner loop from accessing the outer `num` variable. (This is called "variable shadowing," where the inner scope variable hides or "shadows" a variable from an outer scope.) + +The lifetime of the inner `num` ends exactly where the `if` code block ends, +because that's the scope in which the variable was defined. + +This is in contrast to implicitly-declared variables (those without the `var` +keyword), which use **function-level scoping** (consistent with Python variable +behavior). That means, when you change the value of an implicitly-declared +variable inside the `if` block, it actually changes the value for the entire +function. + +For example, here's the same code but *without* the `var` declarations: + +```mojo +def function_scopes(): + num = 1 + if num == 1: + print(num) # Reads the function-scope "num" + num = 2 # Updates the function-scope variable + print(num) # Reads the function-scope "num" + print(num) # Reads the function-scope "num" + +function_scopes() +``` + +```output +1 +2 +2 +``` + +Now, the last `print()` function sees the updated `num` value from the inner +scope, because implicitly-declared variables (Python-style variables) use function-level +scope (instead of lexical scope). diff --git a/docs/tools/debugging.ipynb b/docs/tools/debugging.ipynb deleted file mode 100644 index c84408c1dd..0000000000 --- a/docs/tools/debugging.ipynb +++ /dev/null @@ -1,637 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Debugging\n", - "sidebar_position: 1\n", - "description: Debugging Mojo programs.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo extension for Visual Studio Code enables you to use VS Code's built-in\n", - "debugger with Mojo programs. (The Mojo extension also supports debugging C, C++,\n", - "and Objective-C.)\n", - "\n", - "For complete coverage of VS Code's debugging features, see\n", - "[Debugging in Visual Studio Code](https://code.visualstudio.com/docs/editor/debugging).\n", - "\n", - "This page describes the features available through the Mojo extension, as well\n", - "as current limitations of the Mojo debugger.\n", - "\n", - "The Mojo SDK includes the [LLDB debugger](https://lldb.llvm.org/) and a Mojo\n", - "LLDB plugin. Together these provide the low-level debugging interface for the\n", - "Mojo extension. You can also use the `mojo debug` command to start a \n", - "command-line debugging session using LLDB or to launch a Mojo debugging session\n", - "in VS Code.\n", - "\n", - "## Start debugging\n", - "\n", - "There are several ways to start a debug session in VS Code.\n", - "\n", - "To start debugging, you'll need to have a Mojo project to debug. There are\n", - "a number of examples ranging from simple to complex in the [Mojo repo on\n", - "GitHub](https://github.com/modularml/mojo).\n", - "\n", - ":::note **VS Code veteran?**\n", - "\n", - "If you're already familiar with debugging in VS Code, the\n", - "material in this section will mostly be review. You might want to skip ahead to\n", - "[Launch configurations](#launch-configurations)\n", - "or see [Using the debugger](#using-the-debugger) for notes on the features\n", - "supported in the Mojo debugger. \n", - "\n", - ":::\n", - "\n", - "### Quick run or debug\n", - "\n", - "If your active editor tab contains a Mojo file with an `fn main()` entry point,\n", - "one of the quickest ways to run or debug it is using the **Run or Debug** button\n", - "in the Editor toolbar.\n", - "\n", - "![](images/quick-run-or-debug-button.png)\n", - "\n", - "To start debugging the current file:\n", - "\n", - "- Open the **Run or Debug** dropdown menu and choose **Debug Mojo File** or\n", - "**Debug Mojo File in Dedicated Terminal**.\n", - "\n", - " ![](images/quick-run-or-debug-menu.png)\n", - "\n", - "The two debug configurations differ in how they handle input and output:\n", - "\n", - "* **Debug Mojo File** launches the Mojo program detached from any terminal.\n", - "Standard output and standard error output for the program are displayed in the\n", - "**Debug Console**. You can't write to the program's standard input, but you can\n", - "see the program's output and interact with the debugger in a single location.\n", - "\n", - "* **Debug Mojo File in Dedicated Terminal** creates a new instance of VS Code's\n", - "integrated terminal and attaches the program's input and output to the terminal.\n", - "This lets you interact with the program's standard input, standard output and\n", - "standard error output in the terminal, while the **Debug Console** is used only\n", - "for interactions with the debugger.\n", - "\n", - "The **Run or Debug** button uses predefined launch configurations. There's\n", - "currently no way to modify the `args`, `env`, `cwd` or other settings for\n", - "programs launched with the **Run or Debug** configurations. If you need to\n", - "customize any of these things, see [Edit launch\n", - "configurations](#edit-launch-configurations).\n", - "\n", - "After you choose one of the debug configurations, the button updates to show\n", - "the debug symbol. Click the button to re-run the previous configuration.\n", - "\n", - "![](images/quick-run-or-debug-button-debug.png)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Run and Debug view\n", - "\n", - "The **Run and Debug** view includes a button to launch debug sessions and a\n", - "menu to select debug configurations. It also has areas to display current\n", - "variables, watch expressions, the current call stack, and breakpoints.\n", - "\n", - "
\n", - "\n", - "![](images/run-and-debug-view.png)\n", - "\n", - "
Figure 1. Run and Debug view
\n", - "
\n", - "\n", - "To open **Run and Debug** view, click the **Run and Debug** icon in the\n", - "**Activity Bar** (on the left side of the VS Code window) or press\n", - "Control+Shift+D \n", - "(Command+Shift+D on macOS).\n", - "\n", - "![](images/run-and-debug-icon.png)\n", - "\n", - "If you haven't created any launch configurations in the current project,\n", - "VS Code shows the **Run start view**.\n", - "\n", - "
\n", - "\n", - "![](images/run-start-view.png)\n", - "\n", - "
Figure 2. Run start view
\n", - "
\n", - "\n", - "If you've already launched a debug session or created a `launch.json` file to\n", - "define launch configurations, you'll see the **Launch configurations** menu,\n", - "which lets you choose configurations and start debug sessions:\n", - "\n", - "
\n", - "\n", - "![](images/launch-configuration-menu.png)\n", - "\n", - "
Figure 3. Launch configurations menu
\n", - "
\n", - "\n", - "### Other ways to start a debug session\n", - "\n", - "There are a number of other ways to start a debug session.\n", - "\n", - "#### Launching from the Command Palette\n", - "\n", - "If you have a Mojo file open in your active editor, you can also start a debug\n", - "session from the **Command Palette**.\n", - "\n", - "1. Click **View** > **Command Palette** or press Control+Shift+P\n", - "(Command+Shift+P on macOS). \n", - "\n", - "2. Enter \"Mojo\" at the prompt to bring up the Mojo commands. You should see the\n", - "same debug configurations described in [Quick run or\n", - "debug](#quick-run-or-debug).\n", - "\n", - "#### Launch from the File Explorer\n", - "\n", - "To launch a debug session from the the **File Explorer** view:\n", - "\n", - "1. Right-click on a Mojo file.\n", - "2. Select a Mojo debug configuration.\n", - "\n", - "You should see the same debug configurations described in [Quick run or\n", - "debug](#quick-run-or-debug). \n", - "\n", - "#### Debug with F5\n", - "\n", - "Press F5 to start a debug session using the current debug configuration.\n", - "\n", - "If you don't have any existing debug configurations available to select, and\n", - "your active editor contains a Mojo file with an `fn main()` entry point,\n", - "pressing F5 will launch and debug the current file using the **Debug Mojo\n", - "File** action described in [Quick run or debug](#quick-run-or-debug)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Starting the debugger from the command line\n", - "\n", - "Use the `mojo debug` command to start a debug session from the command line. You\n", - "can choose from two debugging interfaces:\n", - "\n", - "- With the `--vscode` flag, `mojo debug` starts a debug session on VS Code if\n", - " it's running and the Mojo extension is enabled.\n", - "\n", - "- Without the `--vscode` flag, `mojo debug` starts a command-line [LLDB \n", - " debugger](https://lldb.llvm.org/) session.\n", - "\n", - "You can choose to build and debug a Mojo file, run and debug a compiled binary,\n", - "or to attach the debugger to a running process.\n", - "\n", - ":::note Environment variables\n", - "\n", - "When you debug a program from the command line using `--vscode`, the program runs\n", - "with the environment variables set in the terminal. When launching from inside\n", - "VS Code via the GUI, the environment is defined by the VS Code [launch \n", - "configuration](#launch-configurations).\n", - "\n", - ":::\n", - "\n", - "For a full list of command-line options, see the [`mojo debug` reference\n", - "page](/mojo/cli/debug).\n", - "\n", - "### Start a debug session from the command line\n", - "\n", - "With VS Code open, run the following command (either from VS Code's integrated\n", - "terminal or an external shell):\n", - "\n", - "```bash\n", - "mojo debug --vscode myproject.mojo\n", - "```\n", - "\n", - "Or to debug a compiled binary:\n", - "\n", - "```bash\n", - "mojo debug --vscode myproject\n", - "```\n", - "\n", - "\n", - "For best results, build with the `-O0 -g` command-line options when you build a\n", - "binary that you intend to debug—this produces a binary with full debug info.\n", - "(When you call `mojo debug` on a Mojo source file, it includes debug\n", - "information by default.) See the [`mojo build` reference page](/mojo/cli/build)\n", - "for details on compilation options.\n", - "\n", - "### Attach the debugger to a running process from the command line\n", - "\n", - "You can also attach the debugger to a running process by specifying either the\n", - "process ID or process name on the command line:\n", - "\n", - "```bash\n", - "mojo debug --vscode --pid \n", - "```\n", - "\n", - "Or:\n", - "\n", - "```bash\n", - "mojo debug --vscode --process-name \n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Launch configurations\n", - "\n", - "VS Code _launch configurations_ let you define setup information for debugging\n", - "your applications.\n", - "\n", - "The Mojo debugger provides the following launch configuration templates:\n", - "\n", - "* Debug current Mojo file. Launches and debugs the Mojo file in the active\n", - "editor tab. Effectively the same as the **Debug Mojo File** action described in\n", - "[Quick run or debug](#quick-run-or-debug), but with more configuration options.\n", - "\n", - "* Debug Mojo file. Like the previous entry, except that it identifies a\n", - "specific file to launch and debug, no matter what file is displayed in the\n", - "active editor.\n", - "\n", - "* Debug binary. This configuration operates on a prebuilt binary, which could\n", - "be written in any mixture of languages supported by LLDB (Mojo, C, C++, etc.).\n", - "You need to set the `program` field to the path of your binary. \n", - "\n", - "* Attach to process. Launches a debug session attached to a running process. On\n", - "launch, you choose the process you want to debug from a list of running\n", - "processes.\n", - "\n", - "You can edit any of these templates to customize them. All VS Code launch\n", - "configurations must contain the following attributes:\n", - "\n", - "- `name`. The name of the launch configuration, which shows up in the UI (for\n", - " example, \"Run current Mojo file\").\n", - "- `request`. Can be either `launch` (to run a program from VS Code) or `attach` \n", - " (to attach to and debug a running file). \n", - "- `type`. Use `mojo-lldb` for the Mojo debugger.\n", - "\n", - "In addition, Mojo launch configurations can contain the following attributes:\n", - "\n", - "- `args`. Any command-line arguments to be passed to the program.\n", - "- `cwd`. The current working directory to run the program in.\n", - "- `description`. A longer description of the configuration, not shown in the UI.\n", - "- `env`. Environment variables to be set before running the program.\n", - "- `mojoFile`. Path to a Mojo file to launch and debug.\n", - "- `pid`. Process ID of the running process to attach to.\n", - "- `program`. Path to a compiled binary to launch and debug, or the \n", - " program to attach to.\n", - "- `runInTerminal`. True to run the program with a dedicated terminal, which\n", - " allows the program to receive standard input from the terminal. False to run\n", - " the program with its output directed to the **Debug Console**.\n", - "\n", - "If configuration is a `launch` request, the configuration must include either\n", - "the `mojoFile` or `program` attribute.\n", - "\n", - "For `attach` requests, the configuration must include either the `pid` or \n", - "`program` attribute.\n", - "\n", - "VS Code performs variable substitution on the launch configurations. You can\n", - "use `${workspaceFolder}` to substitute the path to the current workspace, and\n", - "`${file}` to represent the file in the active editor tab. For a complete list\n", - "of variables, see the VS Code [Variables\n", - "reference](https://code.visualstudio.com/docs/editor/variables-reference).\n", - "\n", - "For more information, see the VS Code documentation for [Launch \n", - "configurations](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations).\n", - "\n", - ":::note Compilation options\n", - "\n", - "Mojo launch configurations don't allow you to specify compilation options. If\n", - "you need to specify compilation options, you can build the binary using [`mojo\n", - "build`](/mojo/cli/build), then use a launch configuration with the `program`\n", - "option to launch the compiled binary. Or if you [start the debugger from the\n", - "command line](#starting-the-debugger-from-the-command-line), you can pass\n", - "compilation options to the `mojo debug` command.\n", - "\n", - ":::\n", - "\n", - "### Edit launch configurations\n", - "\n", - "To edit launch configurations:\n", - "\n", - "1. If the **Run and Debug** view isn't already open, click the **Run and\n", - "Debug** icon in the **Activity Bar** (on the left side of the VS Code window)\n", - "or press Control+Shift+D (Command+Shift+D on macOS).\n", - "\n", - " ![](images/run-and-debug-icon.png)\n", - " \n", - "1. Create or open the `launch.json` file:\n", - " 1. If you see the **Run start view**, click **create a launch.json file**.\n", - " 1. If you already have launch configurations set up, click the gear icon\n", - " next to the **Launch configurations** menu.\n", - " ![](images/launch-configuration-menu.png)\n", - "1. Select **Mojo** from the list of debuggers.\n", - "\n", - "VS Code opens the new `launch.json` file in an editor tab, with templates for\n", - "some common debug actions. Click **Add configuration** to add a new\n", - "configuration template. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using the debugger\n", - "\n", - "When a debug session is running, use the debug toolbar to pause, continue, and\n", - "step through the program.\n", - "\n", - "![](images/debug-toolbar.png)\n", - "\n", - "The buttons on the toolbar are:\n", - "\n", - "- **Continue/Pause**: If the program is stopped, resume the normal execution of the\n", - "program up to the next breakpoint, signal or crash. Otherwise, pause all the\n", - "threads of the program at once.\n", - "\n", - "- **Step Over**: Execute the next line of code without stopping at function calls.\n", - "\n", - "- **Step Into**: Execute the next line of code and stop at the first function call. If the program is stopped just before a function call, steps into the function so you can step through it line-by-line.\n", - "\n", - "- **Step Out**: Finish the execution of the current function and stop right after\n", - "returning to the parent function. \n", - "\n", - "- **Restart**: If this is a `launch` session, terminate the current program and\n", - "restart the debug session. Otherwise, detach from the target process and\n", - "reattach to it. \n", - "\n", - "- **Stop**: If this is a `launch` session, terminate the current program. Otherwise,\n", - "detach from the target process without killing it.\n", - "\n", - "The debugger currently has the following limitations:\n", - "\n", - "- No support for breaking automatically on Mojo errors.\n", - "\n", - "- When stepping out of a function, the returned value is not displayed.\n", - "\n", - "- LLDB doesn’t support stopping or resuming individual threads." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Breakpoints\n", - "\n", - "The Mojo debugger supports setting [standard \n", - "breakpoints](https://code.visualstudio.com/docs/editor/debugging#_breakpoints),\n", - "[logpoints](https://code.visualstudio.com/docs/editor/debugging#_logpoints),\n", - "[function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints),\n", - "[data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints),\n", - "and [triggered breakpoints](https://code.visualstudio.com/docs/editor/debugging#_triggered-breakpoints), \n", - "as described in the VS Code documentation.\n", - "The Mojo debugger also supports _error breakpoints_ (also known as \"break on\n", - "raise\"), which break whenever a `raise` statement is executed.\n", - "\n", - "When debugging Mojo code, the debugger doesn't support conditional breakpoints\n", - " based on an expression (it does \n", - "support hit counts, which VS Code classifies as a kind of conditional \n", - "breakpoint).\n", - "\n", - "When editing a breakpoint, you're offered four options:\n", - "\n", - "- **Expression**. Set a conditional breakpoint (not currently supported).\n", - "- **Hit Count**. Add a hit count to a breakpoint (supported).\n", - "- **Log Message**. Add a logpoint (supported)\n", - "- **Wait for Breakpoint**. Add a triggered breakpoint (supported).\n", - "\n", - "#### Set a hit count breakpoint\n", - "\n", - "A hit count breakpoint is a breakpoint that only breaks execution after the\n", - "debugger hits it a specified number of times.\n", - "\n", - "To add a hit count breakpoint:\n", - "\n", - "1. Right click in the left gutter of the editor where you want to place the \n", - " breakpoint, and select **Add Conditional Breakpoint.**\n", - "2. Select **Hit Count** from the menu and enter the desired hit count.\n", - "\n", - "To change an existing breakpoint to a hit count breakpoint:\n", - "\n", - "1. Right click on the breakpoint in the left gutter of the editor and select\n", - " **Edit breakpoint**.\n", - "2. Select **Hit Count** from the menu and enter the desired hit count.\n", - "\n", - "You can also edit a breakpoint from the **Breakpoints** section of the **Run and\n", - "Debug** view:\n", - "\n", - "- Right-click on the breakpoint and select **Edit Condition**, or,\n", - "- Click the **Edit Condition** icon next to the breakpoint.\n", - "\n", - "This brings up the same menu, **next to the breakpoint in the editor tab**.\n", - "\n", - "#### Enable error breakpoints\n", - "\n", - "You can enable and disable error breakpoints in VS Code by selecting \"Mojo\n", - "Raise\" in the **Breakpoints** section of the **Run and Debug** view. If enabled\n", - "during debugging, executing a `raise` statement causes the debugger to stop\n", - "execution and highlight the line of code where the error was raised.\n", - "\n", - "![VS Code window showing a program paused in the debugger with the Run and Debug view visible. The program is paused at a raise statement.](images/break-on-raise.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### View local variables\n", - "\n", - "When a program is paused in the debugger, the editor shows local variable values\n", - "inline. You can also find them in the **Variables** section of the **Run and\n", - "Debug** view.\n", - "\n", - "
\n", - "\n", - "![VS Code window showing a program paused in the debugger, with the variables sections of the Run and Debug view visible. The edit shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2.](images/debugger-variables.png)\n", - "\n", - "
Figure 4. Local variable values displayed in the debugger
\n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### View the call stack\n", - "\n", - "When a program is paused in the debugger, the **Run and Debug** view shows the\n", - "current call stack. (You may see multiple call stacks, one for each active\n", - "thread in the program.)\n", - "\n", - "
\n", - "\n", - "![VS Code window showing a program paused in the debugger, with the call stack and variables sections of the Run and Debug view visible. The call stack shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2; the parent function nested1 is selected in the call stack, and editor highlights the current line in nested1 (the call to nested2()).](images/debugger-call-stack-nested1.png)\n", - "\n", - "
Figure 5. Call stack in Run and Debug view
\n", - "
\n", - "\n", - "The **Call Stack** section of the Run and Debug view shows a stack frame for\n", - "each function call in the current call stack. Clicking on the name of the\n", - "function highlights the current line in that function. For example, in Figure\n", - "5, the program is paused at a breakpoint in `nested2()`, but the parent\n", - "function, `nested1()` is selected in the call stack. The editor highlights the\n", - "current line in `nested1()` (that is, the call to `nested2()`) and shows the\n", - "current local variable values for `nested1()`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Use the Debug Console\n", - "\n", - "The **Debug Console** gives you a command-line interface to the debugger. The \n", - "**Debug Console** processes LLDB commands and Mojo expressions.\n", - "\n", - "Anything prefixed with a colon (`:`) is treated as an LLDB command. Any other\n", - "input is treated as an expression.\n", - "\n", - "Currently Mojo expressions are limited to inspecting variables and their fields.\n", - "The console also supports subscript notation (`vector[index]`) for certain data\n", - "structures in the standard library, including `List`, `SIMD`,\n", - "and `ListLiteral`. \n", - "\n", - "In the future, we intend to provide a way for arbitrary data structures to\n", - "support subscript notation in the **Debug Console**.\n", - "\n", - ":::note \n", - "\n", - "The **Debug Console** only accepts input when the program is paused.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tips and tricks\n", - "\n", - " There are several features in the standard library that aren't directly related\n", - " to the debugger, but which can help you debug your programs. These include:\n", - "\n", - " * Programmatic breakpoints.\n", - " * Setting parameters from the Mojo command line.\n", - "\n", - " ### Set a programmatic breakpoint\n", - "\n", - " To break at a specific point in your code, you can use the built-in\n", - " [`breakpoint()`](/mojo/stdlib/builtin/breakpoint/breakpoint) function:\n", - "\n", - " ```mojo\n", - "if some_value.is_valid():\n", - " do_the_right_thing()\n", - "else:\n", - " # We should never get here!\n", - " breakpoint()\n", - "```\n", - "\n", - "If you have VS Code open and run this code in debug mode (either using VS Code\n", - "or `mojo debug`), hitting the `breakpoint()` call causes an error, which\n", - "triggers the debugger.\n", - "\n", - ":::note Assertions\n", - "\n", - "The [`testing`](/mojo/stdlib/testing/testing/) module includes a number of \n", - "ways to specify assertions. Assertions also trigger an error, so can open the \n", - "debugger in the same way that a `breakpoint()` call will.\n", - "\n", - ":::\n", - "\n", - "### Set parameters from the Mojo command line\n", - "\n", - "You can use the [`param_env`](/mojo/stdlib/sys/param_env/) module to retrieve\n", - "parameter values specified on the Mojo command line. Among other things, this\n", - "is an easy way to switch debugging logic on and off. For example:\n", - "\n", - "```mojo\n", - "from param_env import is_defined\n", - "\n", - "def some_function_with_issues():\n", - " # ...\n", - " @parameter\n", - " if is_defined[\"DEBUG_ME\"]():\n", - " breakpoint()\n", - "```\n", - "\n", - "To activate this code, use the [`-D` command-line\n", - "option](/mojo/cli/debug#compilation-options) to define `DEBUG_ME`:\n", - "\n", - "```bash\n", - "mojo debug -D DEBUG_ME main.mojo\n", - "```\n", - "\n", - "The `is_defined()` function returns a compile-time true or false value based on\n", - "whether the specified name is defined. Since the `breakpoint()` call is inside a\n", - "[parametric `if` statement](/mojo/manual/decorators/parameter#parametric-if-statement),\n", - "it is only included in the compiled code when the `DEBUG_ME` name is defined on\n", - "the command line." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Troubleshooting\n", - "\n", - "### `error: can't connect to the RPC debug server socket`\n", - "\n", - "If using `mojo debug --rpc` gives you the message `error: can't connect to the RPC debug server socket: Connection refused`, try the following possible fixes:\n", - "\n", - " * Make sure VS Code is open.\n", - " * If VS Code is already open, try restarting VS Code.\n", - " * If there are other VS Code windows open, try closing them and then restarting. This error can sometimes occur when multiple windows have opened and closed in certain orders.\n", - "\n", - "### `error: couldn't get a valid response from the RPC server`\n", - "\n", - "If using `mojo debug --rpc` gives you the message `error: couldn't get a valid response from the RPC server`, try the following possible fixes:\n", - "\n", - " * Make sure VS Code is open to a valid Mojo codebase. This error can sometimes happen if the VS Code window is open to some other codebase.\n", - " * If there are multiple VS Code windows open, try closing all but the one you wish to debug in.\n", - " * Restart VS Code.\n", - " * Reinstall the SDK and restart VSCode.\n", - " * If you are working on a development version of the SDK, make sure that all SDK tools are properly built with your build system, and then reload VSCode.\n", - " * As a last resort, restarting your entire computer can fix this problem.\n", - "\n", - "If these steps don't help, please file an issue. We'd love your help identifying possible causes and fixes!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/tools/debugging.mdx b/docs/tools/debugging.mdx new file mode 100644 index 0000000000..8631b5cc71 --- /dev/null +++ b/docs/tools/debugging.mdx @@ -0,0 +1,543 @@ +--- +title: Debugging +sidebar_position: 1 +description: Debugging Mojo programs. +--- + +The Mojo extension for Visual Studio Code enables you to use VS Code's built-in +debugger with Mojo programs. (The Mojo extension also supports debugging C, C++, +and Objective-C.) + +For complete coverage of VS Code's debugging features, see +[Debugging in Visual Studio Code](https://code.visualstudio.com/docs/editor/debugging). + +This page describes the features available through the Mojo extension, as well +as current limitations of the Mojo debugger. + +The Mojo SDK includes the [LLDB debugger](https://lldb.llvm.org/) and a Mojo +LLDB plugin. Together these provide the low-level debugging interface for the +Mojo extension. You can also use the `mojo debug` command to start a +command-line debugging session using LLDB or to launch a Mojo debugging session +in VS Code. + +## Start debugging + +There are several ways to start a debug session in VS Code. + +To start debugging, you'll need to have a Mojo project to debug. There are +a number of examples ranging from simple to complex in the [Mojo repo on +GitHub](https://github.com/modularml/mojo). + +:::note **VS Code veteran?** + +If you're already familiar with debugging in VS Code, the +material in this section will mostly be review. You might want to skip ahead to +[Launch configurations](#launch-configurations) +or see [Using the debugger](#using-the-debugger) for notes on the features +supported in the Mojo debugger. + +::: + +### Quick run or debug + +If your active editor tab contains a Mojo file with an `fn main()` entry point, +one of the quickest ways to run or debug it is using the **Run or Debug** button +in the Editor toolbar. + +![](images/quick-run-or-debug-button.png) + +To start debugging the current file: + +* Open the **Run or Debug** dropdown menu and choose **Debug Mojo File** or + **Debug Mojo File in Dedicated Terminal**. + + ![](images/quick-run-or-debug-menu.png) + +The two debug configurations differ in how they handle input and output: + +* **Debug Mojo File** launches the Mojo program detached from any terminal. + Standard output and standard error output for the program are displayed in the + **Debug Console**. You can't write to the program's standard input, but you can + see the program's output and interact with the debugger in a single location. + +* **Debug Mojo File in Dedicated Terminal** creates a new instance of VS Code's + integrated terminal and attaches the program's input and output to the terminal. + This lets you interact with the program's standard input, standard output and + standard error output in the terminal, while the **Debug Console** is used only + for interactions with the debugger. + +The **Run or Debug** button uses predefined launch configurations. There's +currently no way to modify the `args`, `env`, `cwd` or other settings for +programs launched with the **Run or Debug** configurations. If you need to +customize any of these things, see [Edit launch +configurations](#edit-launch-configurations). + +After you choose one of the debug configurations, the button updates to show +the debug symbol. Click the button to re-run the previous configuration. + +![](images/quick-run-or-debug-button-debug.png). + +### Run and Debug view + +The **Run and Debug** view includes a button to launch debug sessions and a +menu to select debug configurations. It also has areas to display current +variables, watch expressions, the current call stack, and breakpoints. + +
+ +![](images/run-and-debug-view.png) + +
Figure 1. Run and Debug view
+
+ +To open **Run and Debug** view, click the **Run and Debug** icon in the +**Activity Bar** (on the left side of the VS Code window) or press Control+Shift+D +(Command+Shift+D on macOS). + +![](images/run-and-debug-icon.png) + +If you haven't created any launch configurations in the current project, +VS Code shows the **Run start view**. + +
+ +![](images/run-start-view.png) + +
Figure 2. Run start view
+
+ +If you've already launched a debug session or created a `launch.json` file to +define launch configurations, you'll see the **Launch configurations** menu, +which lets you choose configurations and start debug sessions: + +
+ +![](images/launch-configuration-menu.png) + +
Figure 3. Launch configurations menu
+
+ +### Other ways to start a debug session + +There are a number of other ways to start a debug session. + +#### Launching from the Command Palette + +If you have a Mojo file open in your active editor, you can also start a debug +session from the **Command Palette**. + +1. Click **View** > **Command Palette** or press Control+Shift+P + (Command+Shift+P on macOS). + +2. Enter "Mojo" at the prompt to bring up the Mojo commands. You should see the + same debug configurations described in [Quick run or + debug](#quick-run-or-debug). + +#### Launch from the File Explorer + +To launch a debug session from the the **File Explorer** view: + +1. Right-click on a Mojo file. +2. Select a Mojo debug configuration. + +You should see the same debug configurations described in [Quick run or +debug](#quick-run-or-debug). + +#### Debug with F5 + +Press F5 to start a debug session using the current debug configuration. + +If you don't have any existing debug configurations available to select, and +your active editor contains a Mojo file with an `fn main()` entry point, +pressing F5 will launch and debug the current file using the **Debug Mojo +File** action described in [Quick run or debug](#quick-run-or-debug). + +## Starting the debugger from the command line + +Use the `mojo debug` command to start a debug session from the command line. You +can choose from two debugging interfaces: + +* With the `--vscode` flag, `mojo debug` starts a debug session on VS Code if + it's running and the Mojo extension is enabled. + +* Without the `--vscode` flag, `mojo debug` starts a command-line [LLDB + debugger](https://lldb.llvm.org/) session. + +You can choose to build and debug a Mojo file, run and debug a compiled binary, +or to attach the debugger to a running process. + +:::note Environment variables + +When you debug a program from the command line using `--vscode`, the program runs +with the environment variables set in the terminal. When launching from inside +VS Code via the GUI, the environment is defined by the VS Code [launch +configuration](#launch-configurations). + +::: + +For a full list of command-line options, see the [`mojo debug` reference +page](/mojo/cli/debug). + +### Start a debug session from the command line + +With VS Code open, run the following command (either from VS Code's integrated +terminal or an external shell): + +```bash +mojo debug --vscode myproject.mojo +``` + +Or to debug a compiled binary: + +```bash +mojo debug --vscode myproject +``` + +For best results, build with the `-O0 -g` command-line options when you build a +binary that you intend to debug—this produces a binary with full debug info. +(When you call `mojo debug` on a Mojo source file, it includes debug +information by default.) See the [`mojo build` reference page](/mojo/cli/build) +for details on compilation options. + +### Attach the debugger to a running process from the command line + +You can also attach the debugger to a running process by specifying either the +process ID or process name on the command line: + +```bash +mojo debug --vscode --pid +``` + +Or: + +```bash +mojo debug --vscode --process-name +``` + +## Launch configurations + +VS Code *launch configurations* let you define setup information for debugging +your applications. + +The Mojo debugger provides the following launch configuration templates: + +* Debug current Mojo file. Launches and debugs the Mojo file in the active + editor tab. Effectively the same as the **Debug Mojo File** action described in + [Quick run or debug](#quick-run-or-debug), but with more configuration options. + +* Debug Mojo file. Like the previous entry, except that it identifies a + specific file to launch and debug, no matter what file is displayed in the + active editor. + +* Debug binary. This configuration operates on a prebuilt binary, which could + be written in any mixture of languages supported by LLDB (Mojo, C, C++, etc.). + You need to set the `program` field to the path of your binary. + +* Attach to process. Launches a debug session attached to a running process. On + launch, you choose the process you want to debug from a list of running + processes. + +You can edit any of these templates to customize them. All VS Code launch +configurations must contain the following attributes: + +* `name`. The name of the launch configuration, which shows up in the UI (for + example, "Run current Mojo file"). +* `request`. Can be either `launch` (to run a program from VS Code) or `attach` + (to attach to and debug a running file). +* `type`. Use `mojo-lldb` for the Mojo debugger. + +In addition, Mojo launch configurations can contain the following attributes: + +* `args`. Any command-line arguments to be passed to the program. +* `cwd`. The current working directory to run the program in. +* `description`. A longer description of the configuration, not shown in the UI. +* `env`. Environment variables to be set before running the program. +* `mojoFile`. Path to a Mojo file to launch and debug. +* `pid`. Process ID of the running process to attach to. +* `program`. Path to a compiled binary to launch and debug, or the + program to attach to. +* `runInTerminal`. True to run the program with a dedicated terminal, which + allows the program to receive standard input from the terminal. False to run + the program with its output directed to the **Debug Console**. + +If configuration is a `launch` request, the configuration must include either +the `mojoFile` or `program` attribute. + +For `attach` requests, the configuration must include either the `pid` or +`program` attribute. + +VS Code performs variable substitution on the launch configurations. You can +use `${workspaceFolder}` to substitute the path to the current workspace, and +`${file}` to represent the file in the active editor tab. For a complete list +of variables, see the VS Code [Variables +reference](https://code.visualstudio.com/docs/editor/variables-reference). + +For more information, see the VS Code documentation for [Launch +configurations](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations). + +:::note Compilation options + +Mojo launch configurations don't allow you to specify compilation options. If +you need to specify compilation options, you can build the binary using [`mojo +build`](/mojo/cli/build), then use a launch configuration with the `program` +option to launch the compiled binary. Or if you [start the debugger from the +command line](#starting-the-debugger-from-the-command-line), you can pass +compilation options to the `mojo debug` command. + +::: + +### Edit launch configurations + +To edit launch configurations: + +1. If the **Run and Debug** view isn't already open, click the **Run and + Debug** icon in the **Activity Bar** (on the left side of the VS Code window) + or press Control+Shift+D (Command+Shift+D on macOS). + + ![](images/run-and-debug-icon.png) + +2. Create or open the `launch.json` file: + 1. If you see the **Run start view**, click **create a launch.json file**. + 2. If you already have launch configurations set up, click the gear icon + next to the **Launch configurations** menu. + ![](images/launch-configuration-menu.png) + +3. Select **Mojo** from the list of debuggers. + +VS Code opens the new `launch.json` file in an editor tab, with templates for +some common debug actions. Click **Add configuration** to add a new +configuration template. + +## Using the debugger + +When a debug session is running, use the debug toolbar to pause, continue, and +step through the program. + +![](images/debug-toolbar.png) + +The buttons on the toolbar are: + +* **Continue/Pause**: If the program is stopped, resume the normal execution of the + program up to the next breakpoint, signal or crash. Otherwise, pause all the + threads of the program at once. + +* **Step Over**: Execute the next line of code without stopping at function calls. + +* **Step Into**: Execute the next line of code and stop at the first function call. If the program is stopped just before a function call, steps into the function so you can step through it line-by-line. + +* **Step Out**: Finish the execution of the current function and stop right after + returning to the parent function. + +* **Restart**: If this is a `launch` session, terminate the current program and + restart the debug session. Otherwise, detach from the target process and + reattach to it. + +* **Stop**: If this is a `launch` session, terminate the current program. Otherwise, + detach from the target process without killing it. + +The debugger currently has the following limitations: + +* No support for breaking automatically on Mojo errors. + +* When stepping out of a function, the returned value is not displayed. + +* LLDB doesn’t support stopping or resuming individual threads. + +### Breakpoints + +The Mojo debugger supports setting [standard +breakpoints](https://code.visualstudio.com/docs/editor/debugging#_breakpoints), +[logpoints](https://code.visualstudio.com/docs/editor/debugging#_logpoints), +[function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints), +[data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints), +and [triggered breakpoints](https://code.visualstudio.com/docs/editor/debugging#_triggered-breakpoints), +as described in the VS Code documentation. +The Mojo debugger also supports *error breakpoints* (also known as "break on +raise"), which break whenever a `raise` statement is executed. + +When debugging Mojo code, the debugger doesn't support conditional breakpoints +based on an expression (it does +support hit counts, which VS Code classifies as a kind of conditional +breakpoint). + +When editing a breakpoint, you're offered four options: + +* **Expression**. Set a conditional breakpoint (not currently supported). +* **Hit Count**. Add a hit count to a breakpoint (supported). +* **Log Message**. Add a logpoint (supported) +* **Wait for Breakpoint**. Add a triggered breakpoint (supported). + +#### Set a hit count breakpoint + +A hit count breakpoint is a breakpoint that only breaks execution after the +debugger hits it a specified number of times. + +To add a hit count breakpoint: + +1. Right click in the left gutter of the editor where you want to place the + breakpoint, and select **Add Conditional Breakpoint.** +2. Select **Hit Count** from the menu and enter the desired hit count. + +To change an existing breakpoint to a hit count breakpoint: + +1. Right click on the breakpoint in the left gutter of the editor and select + **Edit breakpoint**. +2. Select **Hit Count** from the menu and enter the desired hit count. + +You can also edit a breakpoint from the **Breakpoints** section of the **Run and +Debug** view: + +* Right-click on the breakpoint and select **Edit Condition**, or, +* Click the **Edit Condition** icon next to the breakpoint. + +This brings up the same menu, **next to the breakpoint in the editor tab**. + +#### Enable error breakpoints + +You can enable and disable error breakpoints in VS Code by selecting "Mojo +Raise" in the **Breakpoints** section of the **Run and Debug** view. If enabled +during debugging, executing a `raise` statement causes the debugger to stop +execution and highlight the line of code where the error was raised. + +![VS Code window showing a program paused in the debugger with the Run and Debug view visible. The program is paused at a raise statement.](images/break-on-raise.png) + +### View local variables + +When a program is paused in the debugger, the editor shows local variable values +inline. You can also find them in the **Variables** section of the **Run and +Debug** view. + +
+ +![VS Code window showing a program paused in the debugger, with the variables sections of the Run and Debug view visible. The edit shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2.](images/debugger-variables.png) + +
Figure 4. Local variable values displayed in the debugger
+
+ +### View the call stack + +When a program is paused in the debugger, the **Run and Debug** view shows the +current call stack. (You may see multiple call stacks, one for each active +thread in the program.) + +
+ +![VS Code window showing a program paused in the debugger, with the call stack and variables sections of the Run and Debug view visible. The call stack shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2; the parent function nested1 is selected in the call stack, and editor highlights the current line in nested1 (the call to nested2()).](images/debugger-call-stack-nested1.png) + +
Figure 5. Call stack in Run and Debug view
+
+ +The **Call Stack** section of the Run and Debug view shows a stack frame for +each function call in the current call stack. Clicking on the name of the +function highlights the current line in that function. For example, in Figure +5, the program is paused at a breakpoint in `nested2()`, but the parent +function, `nested1()` is selected in the call stack. The editor highlights the +current line in `nested1()` (that is, the call to `nested2()`) and shows the +current local variable values for `nested1()`. + +### Use the Debug Console + +The **Debug Console** gives you a command-line interface to the debugger. The +**Debug Console** processes LLDB commands and Mojo expressions. + +Anything prefixed with a colon (`:`) is treated as an LLDB command. Any other +input is treated as an expression. + +Currently Mojo expressions are limited to inspecting variables and their fields. +The console also supports subscript notation (`vector[index]`) for certain data +structures in the standard library, including `List`, `SIMD`, +and `ListLiteral`. + +In the future, we intend to provide a way for arbitrary data structures to +support subscript notation in the **Debug Console**. + +:::note + +The **Debug Console** only accepts input when the program is paused. + +::: + +## Tips and tricks + +There are several features in the standard library that aren't directly related +to the debugger, but which can help you debug your programs. These include: + +* Programmatic breakpoints. +* Setting parameters from the Mojo command line. + +### Set a programmatic breakpoint + +To break at a specific point in your code, you can use the built-in +[`breakpoint()`](/mojo/stdlib/builtin/breakpoint/breakpoint) function: + +```mojo +if some_value.is_valid(): + do_the_right_thing() +else: + # We should never get here! + breakpoint() +``` + +If you have VS Code open and run this code in debug mode (either using VS Code +or `mojo debug`), hitting the `breakpoint()` call causes an error, which +triggers the debugger. + +:::note Assertions + +The [`testing`](/mojo/stdlib/testing/testing/) module includes a number of +ways to specify assertions. Assertions also trigger an error, so can open the +debugger in the same way that a `breakpoint()` call will. + +::: + +### Set parameters from the Mojo command line + +You can use the [`param_env`](/mojo/stdlib/sys/param_env/) module to retrieve +parameter values specified on the Mojo command line. Among other things, this +is an easy way to switch debugging logic on and off. For example: + +```mojo +from param_env import is_defined + +def some_function_with_issues(): + # ... + @parameter + if is_defined["DEBUG_ME"](): + breakpoint() +``` + +To activate this code, use the [`-D` command-line +option](/mojo/cli/debug#compilation-options) to define `DEBUG_ME`: + +```bash +mojo debug -D DEBUG_ME main.mojo +``` + +The `is_defined()` function returns a compile-time true or false value based on +whether the specified name is defined. Since the `breakpoint()` call is inside a +[parametric `if` statement](/mojo/manual/decorators/parameter#parametric-if-statement), +it is only included in the compiled code when the `DEBUG_ME` name is defined on +the command line. + +## Troubleshooting + +### `error: can't connect to the RPC debug server socket` + +If using `mojo debug --rpc` gives you the message `error: can't connect to the RPC debug server socket: Connection refused`, try the following possible fixes: + +* Make sure VS Code is open. +* If VS Code is already open, try restarting VS Code. +* If there are other VS Code windows open, try closing them and then restarting. This error can sometimes occur when multiple windows have opened and closed in certain orders. + +### `error: couldn't get a valid response from the RPC server` + +If using `mojo debug --rpc` gives you the message `error: couldn't get a valid response from the RPC server`, try the following possible fixes: + +* Make sure VS Code is open to a valid Mojo codebase. This error can sometimes happen if the VS Code window is open to some other codebase. +* If there are multiple VS Code windows open, try closing all but the one you wish to debug in. +* Restart VS Code. +* Reinstall the SDK and restart VSCode. +* If you are working on a development version of the SDK, make sure that all SDK tools are properly built with your build system, and then reload VSCode. +* As a last resort, restarting your entire computer can fix this problem. + +If these steps don't help, please file an issue. We'd love your help identifying possible causes and fixes! diff --git a/docs/tools/testing.ipynb b/docs/tools/testing.ipynb deleted file mode 100644 index be8e4a6c16..0000000000 --- a/docs/tools/testing.ipynb +++ /dev/null @@ -1,792 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Testing\n", - "sidebar_position: 2\n", - "description: Testing Mojo programs.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo includes a framework for developing and executing unit tests. The framework\n", - "also supports testing code examples in the\n", - "[documentation strings](/mojo/manual/basics#code-comments)\n", - "(also known as *docstrings*) of your API references. The Mojo testing framework\n", - "consists of a set of assertions defined as part of the\n", - "[Mojo standard library](/mojo/lib) and the\n", - "[`mojo test`](/mojo/cli/test) command line tool.\n", - "\n", - "## Get started\n", - "\n", - "Let’s start with a simple example of writing and running Mojo tests.\n", - "\n", - "### 1. Write tests\n", - "\n", - "For your first example of using the Mojo testing framework, create a file named\n", - "`test_quickstart.mojo` containing the following code:\n", - "\n", - "```mojo\n", - "# Content of test_quickstart.mojo\n", - "from testing import assert_equal\n", - "\n", - "def inc(n: Int) -> Int:\n", - " return n + 1\n", - "\n", - "def test_inc_zero():\n", - " # This test contains an intentional logical error to show an example of\n", - " # what a test failure looks like at runtime.\n", - " assert_equal(inc(0), 0)\n", - "\n", - "def test_inc_one():\n", - " assert_equal(inc(1), 2)\n", - "```\n", - "\n", - "In this file, the `inc()` function is the test *target*. The functions whose\n", - "names begin with `test_` are the tests. Usually the target should be in a\n", - "separate source file from its tests, but you can define them in the same file\n", - "for this simple example.\n", - "\n", - "A test function *fails* if it raises an error when executed, otherwise it\n", - "*passes*. The two tests in this example use the `assert_equal()` function,\n", - "which raises an error if the two values provided are not equal.\n", - "\n", - ":::note\n", - "\n", - "The implementation of `test_inc_zero()` contains an intentional logical error\n", - "so that you can see an example of a failed test when you execute it in the\n", - "next step of this tutorial. \n", - "\n", - ":::\n", - "\n", - "### 2. Execute tests\n", - "\n", - "Then in the directory containing the file, execute the following command in your\n", - "shell:\n", - "\n", - "```bash\n", - "mojo test test_quickstart.mojo\n", - "```\n", - "\n", - "You should see output similar to this (note that this example elides the full\n", - "filesystem paths from the output shown):\n", - "\n", - "```\n", - "Testing Time: 1.193s\n", - "\n", - "Total Discovered Tests: 2\n", - "\n", - "Passed : 1 (50.00%)\n", - "Failed : 1 (50.00%)\n", - "Skipped: 0 (0.00%)\n", - "\n", - "******************** Failure: 'ROOT_DIR/test_quickstart.mojo::test_inc_zero()' ********************\n", - "\n", - "Unhandled exception caught during execution\n", - "\n", - "Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\n", - " left: 1\n", - " right: 0\n", - "\n", - "********************\n", - "```\n", - "\n", - "The output starts with a summary of the number of tests discovered, passed,\n", - "failed, and skipped. Following that, each failed test is reported along with\n", - "its error message.\n", - "\n", - "### Next steps\n", - "\n", - "- [The `testing` module](#the-testing-module) describes the assertion\n", - "functions available to help implement tests.\n", - "- [Writing unit tests](#writing-unit-tests) shows how to write unit tests and\n", - "organize them into test files.\n", - "- [The `mojo test` command](#the-mojo-test-command) describes how to execute\n", - "and collect lists of tests.\n", - "- [Writing API documentation tests](#writing-api-documentation-tests)\n", - "discusses how to use the Mojo testing framework to test code examples in your\n", - "API documentation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## The `testing` module\n", - "\n", - "The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/)\n", - "module that defines several assertion functions for implementing tests. Each\n", - "assertion returns `None` if its condition is met or raises an error if it isn’t.\n", - "\n", - "- [`assert_true()`](/mojo/stdlib/testing/testing/assert_true):\n", - "Asserts that the input value is `True`.\n", - "- [`assert_false()`](/mojo/stdlib/testing/testing/assert_false):\n", - "Asserts that the input value is `False`.\n", - "- [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal):\n", - "Asserts that the input values are equal.\n", - "- [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal):\n", - "Asserts that the input values are not equal.\n", - "- [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal):\n", - "Asserts that the input values are equal up to a tolerance.\n", - "\n", - "The boolean assertions report a basic error message when they fail." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [1] wrapper:14:16: AssertionError: condition was unexpectedly False\n" - ] - } - ], - "source": [ - "from testing import *\n", - "assert_true(False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each function also accepts an optional `msg` keyword argument for providing a\n", - "custom message to include if the assertion fails." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [2] wrapper:14:16: AssertionError: paradoxes are not allowed\n" - ] - } - ], - "source": [ - "assert_true(False, msg=\"paradoxes are not allowed\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For comparing floating point values you should use `assert_almost_equal()`,\n", - "which allows you to specify either an absolute or relative tolerance." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [3] wrapper:15:24: AssertionError: 3.3333333333333335 is not close to 3.3300000000000001 with a diff of 0.0033333333333334103 (close but no cigar)\n" - ] - } - ], - "source": [ - "result = 10 / 3\n", - "assert_almost_equal(result, 3.33, atol=0.001, msg=\"close but no cigar\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The testing module also defines a [context\n", - "manager](/mojo/manual/errors#use-a-context-manager),\n", - "[`assert_raises()`](/mojo/stdlib/testing/testing/assert_raises), to assert that\n", - "a given code block correctly raises an expected error." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test passes because the error is raised\n", - "Test fails because the error isn't raised\n", - "Error: AssertionError: Didn't raise at Expression [4] wrapper:18:23\n" - ] - } - ], - "source": [ - "def inc(n: Int) -> Int:\n", - " if n == Int.MAX:\n", - " raise Error(\"inc overflow\")\n", - " return n + 1\n", - "\n", - "print(\"Test passes because the error is raised\")\n", - "with assert_raises():\n", - " _ = inc(Int.MAX)\n", - "\n", - "print(\"Test fails because the error isn't raised\")\n", - "with assert_raises():\n", - " _ = inc(Int.MIN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The example above assigns the return value from `inc()` to a\n", - "[*discard pattern*](/mojo/manual/lifecycle/death#explicit-lifetimes).\n", - "Without it, the Mojo compiler detects that the return value is unused and\n", - "optimizes the code to eliminate the function call.\n", - "\n", - ":::\n", - "\n", - "You can also provide an optional `contains` argument to `assert_raises()` to\n", - "indicate that the test passes only if the error message contains the substring\n", - "specified. Other errors are propagated, failing the test." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test passes because the error contains the substring\n", - "Test fails because the error doesn't contain the substring\n", - "Error: invalid value\n" - ] - } - ], - "source": [ - "print(\"Test passes because the error contains the substring\")\n", - "with assert_raises(contains=\"required\"):\n", - " raise Error(\"missing required argument\")\n", - "\n", - "print(\"Test fails because the error doesn't contain the substring\")\n", - "with assert_raises(contains=\"required\"):\n", - " raise Error(\"invalid value\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Writing unit tests\n", - "\n", - "A Mojo unit test is simply a function that fulfills all of these requirements:\n", - "\n", - "- Has a name that starts with `test_`.\n", - "- Accepts no arguments.\n", - "- Returns either `None` or a value of type `object`.\n", - "- Raises an error to indicate test failure.\n", - "- Is defined at the module scope, not as a Mojo struct method.\n", - "\n", - "You can use either `def` or `fn` to define a test function. Because a test\n", - "function always raises an error to indicate failure, any test function defined\n", - "using `fn` must include the `raises` declaration.\n", - "\n", - "Generally, you should use the assertion utilities from the Mojo standard library\n", - "[`testing`](/mojo/stdlib/testing/testing/) module to implement your tests.\n", - "You can include multiple related assertions in the same test function. However,\n", - "if an assertion raises an error during execution then the test function returns\n", - "immediately, skipping any subsequent assertions.\n", - "\n", - "You must define your Mojo unit tests in Mojo source files named with a `test`\n", - "prefix or suffix. You can organize your test files within a directory hierarchy,\n", - "but the test files must not be part of a Mojo package (that is, the test\n", - "directories should not contain `__init__.mojo` files).\n", - "\n", - "Here is an example of a test file containing three tests for functions defined\n", - "in a source module named `my_target_module` (which is not shown here).\n", - "\n", - "```mojo\n", - "# File: test_my_target_module.mojo\n", - "\n", - "from my_target_module import convert_input, validate_input\n", - "from testing import assert_equal, assert_false, assert_raises, assert_true\n", - "\n", - "def test_validate_input():\n", - "\tassert_true(validate_input(\"good\"), msg=\"'good' should be valid input\")\n", - "\tassert_false(validate_input(\"bad\"), msg=\"'bad' should be invalid input\")\n", - "\n", - "def test_convert_input():\n", - "\tassert_equal(convert_input(\"input1\"), \"output1\")\n", - "\tassert_equal(convert_input(\"input2\"), \"output2\")\n", - "\n", - "def test_convert_input_error():\n", - "\twith assert_raises():\n", - "\t\t_ = convert_input(\"garbage\")\n", - "```\n", - "\n", - "The unique identity of a unit test consists of the path of the test file and the\n", - "name of the test function, separated by `::`. So the test IDs from the example\n", - "above are:\n", - "\n", - "- `test_my_target_module.mojo::test_validate_input()`\n", - "- `test_my_target_module.mojo::test_convert_input()`\n", - "- `test_my_target_module.mojo::test_convert_error()`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `mojo test` command\n", - "\n", - "The `mojo` command line interface includes the [`mojo test`](/mojo/cli/test)\n", - "command for running tests or collecting a list of tests.\n", - "\n", - "### Running tests\n", - "\n", - "By default, the `mojo test` command runs the tests that you specify using one of\n", - "the following:\n", - "\n", - "- A single test ID with either an absolute or relative file path, to run only\n", - "that test.\n", - "- A single absolute or relative file path, to run all tests in that file.\n", - "- A single absolute or relative directory path, to recurse through that\n", - "directory hierarchy and run all tests found.\n", - "\n", - "If needed, you can optionally use the `-I` option one or more times to append\n", - "additional paths to the list of directories searched to import Mojo modules and\n", - "packages. For example, consider a project with the following directory\n", - "structure:\n", - "\n", - "```\n", - ".\n", - "├── src\n", - "│   ├── example.mojo\n", - "│   └── my_math\n", - "│   ├── __init__.mojo\n", - "│   └── utils.mojo\n", - "└── test\n", - " └── my_math\n", - " ├── test_dec.mojo\n", - " └── test_inc.mojo\n", - "```\n", - "\n", - "From the project root directory, you could execute all of the tests in the\n", - "`test` directory like this:\n", - "\n", - "```\n", - "$ mojo test -I src test\n", - "Testing Time: 3.433s\n", - "\n", - "Total Discovered Tests: 4\n", - "\n", - "Passed : 4 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "You could run the tests contained in only the `test_dec.mojo` file like this:\n", - "\n", - "```\n", - "$ mojo test -I src test/my_math/test_dec.mojo\n", - "Testing Time: 1.175s\n", - "\n", - "Total Discovered Tests: 2\n", - "\n", - "Passed : 2 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "And you could run a single test from a file by providing its fully qualified\n", - "ID like this:\n", - "\n", - "```\n", - "$ mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()'\n", - "Testing Time: 0.66s\n", - "\n", - "Total Discovered Tests: 1\n", - "\n", - "Passed : 1 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "### Collecting a list of tests\n", - "\n", - "By including the `--collect-only` or `--co` option, you can use `mojo test` to\n", - "discover and print a list of tests. \n", - "\n", - "As an example, consider the project structure shown in the\n", - "[Running tests](#running-tests) section. The following command produces a list\n", - "of all of the tests defined in the `test` directory hierarchy.\n", - "\n", - "```bash\n", - "mojo test --co test\n", - "```\n", - "\n", - "The output shows the hierarchy of directories, test files, and individual tests\n", - "(note that this example elides the full filesystem paths from the output shown):\n", - "\n", - "```\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "```\n", - "\n", - "### Producing JSON formatted output\n", - "\n", - "By default `mojo test` produces concise, human-readable output. Alternatively\n", - "you can produce JSON formatted output more suitable for input to other tools by\n", - "including the `--diagnostic-format json` option.\n", - "\n", - "For example, you could run the tests in the `test_quickstart.mojo` file shown\n", - "in the [Get started](#get-started) section with JSON formatted output using this\n", - "command:\n", - "\n", - "```bash\n", - "mojo test --diagnostic-format json test_quickstart.mojo\n", - "```\n", - "\n", - "The output shows the detailed results for each individual test and summary\n", - "results (note that this example elides the full filesystem paths from the\n", - "output shown):\n", - "\n", - "```\n", - "{\n", - " \"children\": [\n", - " {\n", - " \"duration_ms\": 60,\n", - " \"error\": \"Unhandled exception caught during execution\",\n", - " \"kind\": \"executionError\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\\r\\n left: 1\\r\\n right: 0\\r\\n\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo::test_inc_zero()\"\n", - " },\n", - " {\n", - " \"duration_ms\": 51,\n", - " \"error\": \"\",\n", - " \"kind\": \"success\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo::test_inc_one()\"\n", - " }\n", - " ],\n", - " \"duration_ms\": 1171,\n", - " \"error\": \"\",\n", - " \"kind\": \"executionError\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo\"\n", - "}\n", - "```\n", - "\n", - "You can also produce JSON output for test collection as well. As an example,\n", - "consider the project structure shown in the [Running tests](#running-tests)\n", - "section. The following command collects a list in JSON format of all of the\n", - "tests defined in the `test` directory hierarchy:\n", - "\n", - "```bash\n", - "mojo test --diagnostic-format json --co test\n", - "```\n", - "\n", - "The output would appear as follows (note that this example elides the full\n", - "filesystem paths from the output shown):\n", - "\n", - "```\n", - "{\n", - " \"children\": [\n", - " {\n", - " \"children\": [\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo::test_dec_valid()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 5,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 5\n", - " }\n", - " },\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo::test_dec_min()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 9,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 9\n", - " }\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo\"\n", - " },\n", - " {\n", - " \"children\": [\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo::test_inc_valid()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 5,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 5\n", - " }\n", - " },\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo::test_inc_max()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 9,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 9\n", - " }\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo\"\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math\"\n", - "}\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Writing API documentation tests\n", - "\n", - "The Mojo testing framework also supports testing code examples that you include\n", - "in [docstrings](/mojo/manual/basics#code-comments). This helps to ensure that\n", - "the code examples in your API documentation are correct and up to date.\n", - "\n", - "### Identifying executable code\n", - "\n", - "The Mojo testing framework requires you to explicitly identify the code blocks\n", - "that you want it to execute.\n", - "\n", - "In a Mojo docstring, a fenced code block delimited by standard triple-backquotes\n", - "is a *display-only* code block. It appears in the API documentation, but\n", - "`mojo test` does not identify it as a test or attempt to execute any of the code\n", - "in the block.\n", - "\n", - "~~~\n", - "\"\"\" Non-executable code block example.\n", - "\n", - "The generated API documentation includes all lines of the following code block,\n", - "but `mojo test` does not execute any of the code in it.\n", - "\n", - "```\n", - "# mojo test does NOT execute any of this code block\n", - "a = 1\n", - "print(a)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "In contrast, a fenced code block that starts with the line ```mojo\n", - "not only appears in the API documentation, but `mojo test` treats it as an\n", - "executable test. The test fails if the code raises any error, otherwise it\n", - "passes.\n", - "\n", - "~~~\n", - "\"\"\" Executable code block example.\n", - "\n", - "The generated API documentation includes all lines of the following code block\n", - "*and* `mojo test` executes it as a test.\n", - "\n", - "```mojo\n", - "from testing import assert_equals\n", - "\n", - "b = 2\n", - "assert_equals(b, 2)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "Sometimes you might want to execute a line of code as part of the test but *not*\n", - "display that line in the API documentation. To achieve this, prefix the line of\n", - "code with `%#`. For example, you could use this technique to omit `import`\n", - "statements and assertion functions from the documentation.\n", - "\n", - "~~~\n", - "\"\"\" Executable code block example with some code lines omitted from output.\n", - "\n", - "The generated API documentation includes only the lines of code that do *not*\n", - "start with `%#`. However, `mojo test` executes *all* lines of code.\n", - "\n", - "```mojo\n", - "%# from testing import assert_equal\n", - "c = 3\n", - "print(c)\n", - "%# assert_equal(c, 3)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "### Documentation test suites and scoping\n", - "\n", - "The Mojo testing framework treats each docstring as a separate *test suite*.\n", - "In other words, a single test suite could correspond to the docstring for an\n", - "individual package, module, function, struct, struct method, etc.\n", - "\n", - "Each executable code block within a given docstring is a single test of the same\n", - "test suite. The `mojo test` command executes the tests of a test suite\n", - "sequentially in the order that they appear within the docstring. If a test\n", - "within a particular test suite fails, then all subsequent tests within the same\n", - "test suite are skipped.\n", - "\n", - "All tests within the test suite execute in the same scope, and test execution\n", - "within that scope is stateful. This means, for example, that a variable created\n", - "within one test is then accessible to subsequent tests in the same test suite.\n", - "\n", - "~~~\n", - "\"\"\" Stateful example.\n", - "\n", - "Assign 1 to the variable `a`:\n", - "\n", - "```mojo\n", - "%# from testing import assert_equal\n", - "a = 1\n", - "%# assert_equal(a, 1)\n", - "```\n", - "\n", - "Then increment the value of `a` by 1:\n", - "\n", - "```mojo\n", - "a += 1\n", - "%# assert_equal(a, 2)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - ":::note\n", - "\n", - "Test suite scopes do *not* nest. In other words, the test suite scope of a\n", - "module is completely independent of the test suite scope of a function or struct\n", - "defined within that module. For example, this means that if a module’s test\n", - "suite creates a variable, that variable is *not* accessible to a function’s test\n", - "suite within the same module.\n", - "\n", - ":::\n", - "\n", - "### Documentation test identifiers\n", - "\n", - "The format of a documentation test identifier is `@::`.\n", - "This is best explained by an example. Consider the project structure shown in\n", - "the [Running tests](#running-tests) section. The source files in the `src`\n", - "directory might contain docstrings for the `my_math` package, the `utils.mojo`\n", - "module, and the individual functions within that module. You could collect the\n", - "full list of tests by executing:\n", - "\n", - "```\n", - "mojo test --co src\n", - "```\n", - "\n", - "The output shows the hierarchy of directories, test files, and individual tests\n", - "(note that this example elides the full filesystem paths from the output shown):\n", - "\n", - "```\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "```\n", - "\n", - "Several different test suites appear in this result:\n", - "\n", - "| Test suite scope | File | Test suite name |\n", - "|------------------|------|-----------------|\n", - "| Package | `src/my_math/__init__.mojo` | `__doc__` |\n", - "| Module | `src/my_math/utils.mojo` | `__doc__` |\n", - "| Function | `src/my_math/utils.mojo` | `inc(stdlib\\3A\\3Abuiltin\\3A\\3Aint\\3A\\3AInt).__doc__` |\n", - "\n", - "Then within a specific test suite, tests are numbered sequentially in the order\n", - "they appear in the docstring, starting with 0." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx new file mode 100644 index 0000000000..ef10b459cf --- /dev/null +++ b/docs/tools/testing.mdx @@ -0,0 +1,648 @@ +--- +title: Testing +sidebar_position: 2 +description: Testing Mojo programs. +--- + +Mojo includes a framework for developing and executing unit tests. The framework +also supports testing code examples in the +[documentation strings](/mojo/manual/basics#code-comments) +(also known as *docstrings*) of your API references. The Mojo testing framework +consists of a set of assertions defined as part of the +[Mojo standard library](/mojo/lib) and the +[`mojo test`](/mojo/cli/test) command line tool. + +## Get started + +Let’s start with a simple example of writing and running Mojo tests. + +### 1. Write tests + +For your first example of using the Mojo testing framework, create a file named +`test_quickstart.mojo` containing the following code: + +```mojo +# Content of test_quickstart.mojo +from testing import assert_equal + +def inc(n: Int) -> Int: + return n + 1 + +def test_inc_zero(): + # This test contains an intentional logical error to show an example of + # what a test failure looks like at runtime. + assert_equal(inc(0), 0) + +def test_inc_one(): + assert_equal(inc(1), 2) +``` + +In this file, the `inc()` function is the test *target*. The functions whose +names begin with `test_` are the tests. Usually the target should be in a +separate source file from its tests, but you can define them in the same file +for this simple example. + +A test function *fails* if it raises an error when executed, otherwise it +*passes*. The two tests in this example use the `assert_equal()` function, +which raises an error if the two values provided are not equal. + +:::note + +The implementation of `test_inc_zero()` contains an intentional logical error +so that you can see an example of a failed test when you execute it in the +next step of this tutorial. + +::: + +### 2. Execute tests + +Then in the directory containing the file, execute the following command in your +shell: + +```bash +mojo test test_quickstart.mojo +``` + +You should see output similar to this (note that this example elides the full +filesystem paths from the output shown): + +``` +Testing Time: 1.193s + +Total Discovered Tests: 2 + +Passed : 1 (50.00%) +Failed : 1 (50.00%) +Skipped: 0 (0.00%) + +******************** Failure: 'ROOT_DIR/test_quickstart.mojo::test_inc_zero()' ******************** + +Unhandled exception caught during execution + +Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed: + left: 1 + right: 0 + +******************** +``` + +The output starts with a summary of the number of tests discovered, passed, +failed, and skipped. Following that, each failed test is reported along with +its error message. + +### Next steps + +* [The `testing` module](#the-testing-module) describes the assertion + functions available to help implement tests. +* [Writing unit tests](#writing-unit-tests) shows how to write unit tests and + organize them into test files. +* [The `mojo test` command](#the-mojo-test-command) describes how to execute + and collect lists of tests. +* [Writing API documentation tests](#writing-api-documentation-tests) + discusses how to use the Mojo testing framework to test code examples in your + API documentation. + +## The `testing` module + +The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/) +module that defines several assertion functions for implementing tests. Each +assertion returns `None` if its condition is met or raises an error if it isn’t. + +* [`assert_true()`](/mojo/stdlib/testing/testing/assert_true): + Asserts that the input value is `True`. +* [`assert_false()`](/mojo/stdlib/testing/testing/assert_false): + Asserts that the input value is `False`. +* [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal): + Asserts that the input values are equal. +* [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal): + Asserts that the input values are not equal. +* [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal): + Asserts that the input values are equal up to a tolerance. + +The boolean assertions report a basic error message when they fail. + +```mojo +from testing import * +assert_true(False) +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [1] wrapper:14:16: AssertionError: condition was unexpectedly False +``` + +Each function also accepts an optional `msg` keyword argument for providing a +custom message to include if the assertion fails. + +```mojo +assert_true(False, msg="paradoxes are not allowed") +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [2] wrapper:14:16: AssertionError: paradoxes are not allowed +``` + +For comparing floating point values you should use `assert_almost_equal()`, +which allows you to specify either an absolute or relative tolerance. + +```mojo +result = 10 / 3 +assert_almost_equal(result, 3.33, atol=0.001, msg="close but no cigar") +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [3] wrapper:15:24: AssertionError: 3.3333333333333335 is not close to 3.3300000000000001 with a diff of 0.0033333333333334103 (close but no cigar) +``` + +The testing module also defines a [context +manager](/mojo/manual/errors#use-a-context-manager), +[`assert_raises()`](/mojo/stdlib/testing/testing/assert_raises), to assert that +a given code block correctly raises an expected error. + +```mojo +def inc(n: Int) -> Int: + if n == Int.MAX: + raise Error("inc overflow") + return n + 1 + +print("Test passes because the error is raised") +with assert_raises(): + _ = inc(Int.MAX) + +print("Test fails because the error isn't raised") +with assert_raises(): + _ = inc(Int.MIN) +``` + +```output +Unhandled exception caught during execution + +Test passes because the error is raised +Test fails because the error isn't raised +Error: AssertionError: Didn't raise at Expression [4] wrapper:18:23 +``` + +:::note + +The example above assigns the return value from `inc()` to a +[*discard pattern*](/mojo/manual/lifecycle/death#explicit-lifetimes). +Without it, the Mojo compiler detects that the return value is unused and +optimizes the code to eliminate the function call. + +::: + +You can also provide an optional `contains` argument to `assert_raises()` to +indicate that the test passes only if the error message contains the substring +specified. Other errors are propagated, failing the test. + +```mojo +print("Test passes because the error contains the substring") +with assert_raises(contains="required"): + raise Error("missing required argument") + +print("Test fails because the error doesn't contain the substring") +with assert_raises(contains="required"): + raise Error("invalid value") +``` + +```output +Unhandled exception caught during execution + +Test passes because the error contains the substring +Test fails because the error doesn't contain the substring +Error: invalid value +``` + +## Writing unit tests + +A Mojo unit test is simply a function that fulfills all of these requirements: + +* Has a name that starts with `test_`. +* Accepts no arguments. +* Returns either `None` or a value of type `object`. +* Raises an error to indicate test failure. +* Is defined at the module scope, not as a Mojo struct method. + +You can use either `def` or `fn` to define a test function. Because a test +function always raises an error to indicate failure, any test function defined +using `fn` must include the `raises` declaration. + +Generally, you should use the assertion utilities from the Mojo standard library +[`testing`](/mojo/stdlib/testing/testing/) module to implement your tests. +You can include multiple related assertions in the same test function. However, +if an assertion raises an error during execution then the test function returns +immediately, skipping any subsequent assertions. + +You must define your Mojo unit tests in Mojo source files named with a `test` +prefix or suffix. You can organize your test files within a directory hierarchy, +but the test files must not be part of a Mojo package (that is, the test +directories should not contain `__init__.mojo` files). + +Here is an example of a test file containing three tests for functions defined +in a source module named `my_target_module` (which is not shown here). + +```mojo +# File: test_my_target_module.mojo + +from my_target_module import convert_input, validate_input +from testing import assert_equal, assert_false, assert_raises, assert_true + +def test_validate_input(): + assert_true(validate_input("good"), msg="'good' should be valid input") + assert_false(validate_input("bad"), msg="'bad' should be invalid input") + +def test_convert_input(): + assert_equal(convert_input("input1"), "output1") + assert_equal(convert_input("input2"), "output2") + +def test_convert_input_error(): + with assert_raises(): + _ = convert_input("garbage") +``` + +The unique identity of a unit test consists of the path of the test file and the +name of the test function, separated by `::`. So the test IDs from the example +above are: + +* `test_my_target_module.mojo::test_validate_input()` +* `test_my_target_module.mojo::test_convert_input()` +* `test_my_target_module.mojo::test_convert_error()` + +## The `mojo test` command + +The `mojo` command line interface includes the [`mojo test`](/mojo/cli/test) +command for running tests or collecting a list of tests. + +### Running tests + +By default, the `mojo test` command runs the tests that you specify using one of +the following: + +* A single test ID with either an absolute or relative file path, to run only + that test. +* A single absolute or relative file path, to run all tests in that file. +* A single absolute or relative directory path, to recurse through that + directory hierarchy and run all tests found. + +If needed, you can optionally use the `-I` option one or more times to append +additional paths to the list of directories searched to import Mojo modules and +packages. For example, consider a project with the following directory +structure: + +``` +. +├── src +│   ├── example.mojo +│   └── my_math +│   ├── __init__.mojo +│   └── utils.mojo +└── test + └── my_math + ├── test_dec.mojo + └── test_inc.mojo +``` + +From the project root directory, you could execute all of the tests in the +`test` directory like this: + +``` +$ mojo test -I src test +Testing Time: 3.433s + +Total Discovered Tests: 4 + +Passed : 4 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +You could run the tests contained in only the `test_dec.mojo` file like this: + +``` +$ mojo test -I src test/my_math/test_dec.mojo +Testing Time: 1.175s + +Total Discovered Tests: 2 + +Passed : 2 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +And you could run a single test from a file by providing its fully qualified +ID like this: + +``` +$ mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()' +Testing Time: 0.66s + +Total Discovered Tests: 1 + +Passed : 1 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +### Collecting a list of tests + +By including the `--collect-only` or `--co` option, you can use `mojo test` to +discover and print a list of tests. + +As an example, consider the project structure shown in the +[Running tests](#running-tests) section. The following command produces a list +of all of the tests defined in the `test` directory hierarchy. + +```bash +mojo test --co test +``` + +The output shows the hierarchy of directories, test files, and individual tests +(note that this example elides the full filesystem paths from the output shown): + +``` + + + + + + + +``` + +### Producing JSON formatted output + +By default `mojo test` produces concise, human-readable output. Alternatively +you can produce JSON formatted output more suitable for input to other tools by +including the `--diagnostic-format json` option. + +For example, you could run the tests in the `test_quickstart.mojo` file shown +in the [Get started](#get-started) section with JSON formatted output using this +command: + +```bash +mojo test --diagnostic-format json test_quickstart.mojo +``` + +The output shows the detailed results for each individual test and summary +results (note that this example elides the full filesystem paths from the +output shown): + +``` +{ + "children": [ + { + "duration_ms": 60, + "error": "Unhandled exception caught during execution", + "kind": "executionError", + "stdErr": "", + "stdOut": "Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\r\n left: 1\r\n right: 0\r\n", + "testID": "ROOT_DIR/test_quickstart.mojo::test_inc_zero()" + }, + { + "duration_ms": 51, + "error": "", + "kind": "success", + "stdErr": "", + "stdOut": "", + "testID": "ROOT_DIR/test_quickstart.mojo::test_inc_one()" + } + ], + "duration_ms": 1171, + "error": "", + "kind": "executionError", + "stdErr": "", + "stdOut": "", + "testID": "ROOT_DIR/test_quickstart.mojo" +} +``` + +You can also produce JSON output for test collection as well. As an example, +consider the project structure shown in the [Running tests](#running-tests) +section. The following command collects a list in JSON format of all of the +tests defined in the `test` directory hierarchy: + +```bash +mojo test --diagnostic-format json --co test +``` + +The output would appear as follows (note that this example elides the full +filesystem paths from the output shown): + +``` +{ + "children": [ + { + "children": [ + { + "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_valid()", + "location": { + "endColumn": 5, + "endLine": 5, + "startColumn": 5, + "startLine": 5 + } + }, + { + "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_min()", + "location": { + "endColumn": 5, + "endLine": 9, + "startColumn": 5, + "startLine": 9 + } + } + ], + "id": "ROOT_DIR/test/my_math/test_dec.mojo" + }, + { + "children": [ + { + "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_valid()", + "location": { + "endColumn": 5, + "endLine": 5, + "startColumn": 5, + "startLine": 5 + } + }, + { + "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_max()", + "location": { + "endColumn": 5, + "endLine": 9, + "startColumn": 5, + "startLine": 9 + } + } + ], + "id": "ROOT_DIR/test/my_math/test_inc.mojo" + } + ], + "id": "ROOT_DIR/test/my_math" +} +``` + +## Writing API documentation tests + +The Mojo testing framework also supports testing code examples that you include +in [docstrings](/mojo/manual/basics#code-comments). This helps to ensure that +the code examples in your API documentation are correct and up to date. + +### Identifying executable code + +The Mojo testing framework requires you to explicitly identify the code blocks +that you want it to execute. + +In a Mojo docstring, a fenced code block delimited by standard triple-backquotes +is a *display-only* code block. It appears in the API documentation, but +`mojo test` does not identify it as a test or attempt to execute any of the code +in the block. + +```` +""" Non-executable code block example. + +The generated API documentation includes all lines of the following code block, +but `mojo test` does not execute any of the code in it. + +``` +# mojo test does NOT execute any of this code block +a = 1 +print(a) +``` +""" +```` + +In contrast, a fenced code block that starts with the line \`\`\`mojo +not only appears in the API documentation, but `mojo test` treats it as an +executable test. The test fails if the code raises any error, otherwise it +passes. + +```` +""" Executable code block example. + +The generated API documentation includes all lines of the following code block +*and* `mojo test` executes it as a test. + +```mojo +from testing import assert_equals + +b = 2 +assert_equals(b, 2) +``` +""" +```` + +Sometimes you might want to execute a line of code as part of the test but *not* +display that line in the API documentation. To achieve this, prefix the line of +code with `%#`. For example, you could use this technique to omit `import` +statements and assertion functions from the documentation. + +```` +""" Executable code block example with some code lines omitted from output. + +The generated API documentation includes only the lines of code that do *not* +start with `%#`. However, `mojo test` executes *all* lines of code. + +```mojo +%# from testing import assert_equal +c = 3 +print(c) +%# assert_equal(c, 3) +``` +""" +```` + +### Documentation test suites and scoping + +The Mojo testing framework treats each docstring as a separate *test suite*. +In other words, a single test suite could correspond to the docstring for an +individual package, module, function, struct, struct method, etc. + +Each executable code block within a given docstring is a single test of the same +test suite. The `mojo test` command executes the tests of a test suite +sequentially in the order that they appear within the docstring. If a test +within a particular test suite fails, then all subsequent tests within the same +test suite are skipped. + +All tests within the test suite execute in the same scope, and test execution +within that scope is stateful. This means, for example, that a variable created +within one test is then accessible to subsequent tests in the same test suite. + +```` +""" Stateful example. + +Assign 1 to the variable `a`: + +```mojo +%# from testing import assert_equal +a = 1 +%# assert_equal(a, 1) +``` + +Then increment the value of `a` by 1: + +```mojo +a += 1 +%# assert_equal(a, 2) +``` +""" +```` + +:::note + +Test suite scopes do *not* nest. In other words, the test suite scope of a +module is completely independent of the test suite scope of a function or struct +defined within that module. For example, this means that if a module’s test +suite creates a variable, that variable is *not* accessible to a function’s test +suite within the same module. + +::: + +### Documentation test identifiers + +The format of a documentation test identifier is `@::`. +This is best explained by an example. Consider the project structure shown in +the [Running tests](#running-tests) section. The source files in the `src` +directory might contain docstrings for the `my_math` package, the `utils.mojo` +module, and the individual functions within that module. You could collect the +full list of tests by executing: + +``` +mojo test --co src +``` + +The output shows the hierarchy of directories, test files, and individual tests +(note that this example elides the full filesystem paths from the output shown): + +``` + + + + + + + + + + + + + + +``` + +Several different test suites appear in this result: + +| Test suite scope | File | Test suite name | +| ---------------- | --------------------------- | ---------------------------------------------------- | +| Package | `src/my_math/__init__.mojo` | `__doc__` | +| Module | `src/my_math/utils.mojo` | `__doc__` | +| Function | `src/my_math/utils.mojo` | `inc(stdlib\3A\3Abuiltin\3A\3Aint\3A\3AInt).__doc__` | + +Then within a specific test suite, tests are numbered sequentially in the order +they appear in the docstring, starting with 0. diff --git a/examples/life/README.md b/examples/life/README.md new file mode 100644 index 0000000000..49a1884991 --- /dev/null +++ b/examples/life/README.md @@ -0,0 +1,77 @@ +# Introduction to Mojo tutorial solution + +This directory contains a complete solution for the [Introduction to +Mojo](https://docs.modular.com/mojo/manual/basics) tutorial project, which is an +implementation of [Conway's Game of +Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) cellular +automation. + +## Files + +This directory contains the following files: + +- The source files `lifev1.mojo` and `gridv1.mojo` provide an initial version of + the project, with a `Grid` struct representing the grid of cells as a + `List[List[Int]]`. + +- The source files `lifev2.mojo` and `gridv2.mojo` provide a subsequent version + of the project, with a `Grid` struct representing the grid of cells as a block + of memory managed by `UnsafePointer`. + +- The `benchmark.mojo` file performs a simple performance benchmark of the two + versions by running 1,000 evolutions of each `Grid` implementation using a + 1,024 x 1,024 grid. + +- The `test` directory contains unit tests for each `Grid` implementation using + the [Mojo testing framework](https://docs.modular.com/mojo/tools/testing). + +- The `mojoproject.toml` file is a [Magic](https://docs.modular.com/magic/) + project file containing the project dependencies and task definitions. + +## Run the code + +If you have [`magic`](https://docs.modular.com/magic) installed, you can +execute version 1 of the program by running the following command: + +```bash +magic run lifev1 +``` + +This displays a window that shows an initial random state for the grid and then +automatically updates it with subsequent generations. Quit the program by +pressing the `q` or `` key or by closing the window. + +You can execute version 2 of the program by running the following command: + +```bash +magic run lifev2 +``` + +Just like for version 1, this displays a window that shows an initial random +state for the grid and then automatically updates it with subsequent +generations. Quit the program by pressing the `q` or `` key or by +closing the window. + +You can execute the benchmark program by running the following command: + +```bash +magic run benchmark +``` + +You can run the unit tests by running the following command: + +```bash +magic run test +``` + +## Dependencies + +This project includes an example of using a Python package, +[pygame](https://www.pygame.org/wiki/about), from Mojo. Building the program +does *not* embed pygame or a Python runtime in the resulting executable. +Therefore, to run this program your environment must have both a compatible +Python runtime (Python 3.12) and the pygame package installed. + +The easiest way to ensure that the runtime dependencies are met is to run the +program with [`magic`](https://docs.modular.com/magic/), which manages a virtual +environment for the project as defined by the `mojoproject.toml` file. diff --git a/examples/life/benchmark.mojo b/examples/life/benchmark.mojo new file mode 100644 index 0000000000..c54c93f15b --- /dev/null +++ b/examples/life/benchmark.mojo @@ -0,0 +1,62 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from time import perf_counter_ns + +import gridv1 +import gridv2 + + +def main(): + alias warmup_iterations = 10 + alias benchmark_iterations = 1000 + alias rows = 1024 + alias cols = 1024 + + # Initial state + gridv1 = gridv1.Grid.random(rows, cols, seed=42) + gridv2 = gridv2.Grid[rows, cols].random(seed=42) + + # Warm up + warmv1 = gridv1 + for i in range(warmup_iterations): + warmv1 = warmv1.evolve() + + warmv2 = gridv2 + for i in range(warmup_iterations): + warmv2 = warmv2.evolve() + + # Benchmark + start_time = perf_counter_ns() + for i in range(benchmark_iterations): + gridv1 = gridv1.evolve() + stop_time = perf_counter_ns() + elapsed = round((stop_time - start_time) / 1e6, 3) + print( + benchmark_iterations, + "evolutions of gridv1.Grid elapsed time: ", + elapsed, + "ms", + ) + + start_time = perf_counter_ns() + for i in range(benchmark_iterations): + gridv2 = gridv2.evolve() + stop_time = perf_counter_ns() + elapsed = round((stop_time - start_time) / 1e6, 3) + print( + benchmark_iterations, + "evolutions of gridv2.Grid elapsed time: ", + elapsed, + "ms", + ) diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo new file mode 100644 index 0000000000..b06cb51315 --- /dev/null +++ b/examples/life/gridv1.mojo @@ -0,0 +1,124 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import random +from collections import Optional + + +@value +struct Grid(StringableRaising): + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + var rows: Int + var cols: Int + var data: List[List[Int]] + + # ===-------------------------------------------------------------------===# + # Indexing + # ===-------------------------------------------------------------------===# + + def __getitem__(self, row: Int, col: Int) -> Int: + return self.data[row][col] + + def __setitem__(mut self, row: Int, col: Int, value: Int) -> None: + self.data[row][col] = value + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + def __str__(self) -> String: + str = String() + for row in range(self.rows): + for col in range(self.cols): + if self[row, col] == 1: + str += "*" + else: + str += " " + if row != self.rows - 1: + str += "\n" + return str + + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# + + @staticmethod + def glider() -> Self: + var glider = List( + List(0, 1, 0, 0, 0, 0, 0, 0), + List(0, 0, 1, 0, 0, 0, 0, 0), + List(1, 1, 1, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + ) + return Grid(8, 8, glider) + + @staticmethod + def random(rows: Int, cols: Int, seed: Optional[Int] = None) -> Self: + if seed: + random.seed(seed.value()) + else: + random.seed() + + data = List[List[Int]]() + + for row in range(rows): + row_data = List[Int]() + for col in range(cols): + row_data.append(int(random.random_si64(0, 1))) + data.append(row_data) + + return Self(rows, cols, data) + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + def evolve(self) -> Self: + next_generation = List[List[Int]]() + + for row in range(self.rows): + row_data = List[Int]() + + row_above = (row - 1) % self.rows + row_below = (row + 1) % self.rows + + for col in range(self.cols): + col_left = (col - 1) % self.cols + col_right = (col + 1) % self.cols + + num_neighbors = ( + self[row_above, col_left] + + self[row_above, col] + + self[row_above, col_right] + + self[row, col_left] + + self[row, col_right] + + self[row_below, col_left] + + self[row_below, col] + + self[row_below, col_right] + ) + + if num_neighbors | self[row, col] == 3: + row_data.append(1) + else: + row_data.append(0) + + next_generation.append(row_data) + + return Self(self.rows, self.cols, next_generation) diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo new file mode 100644 index 0000000000..3e43b5988a --- /dev/null +++ b/examples/life/gridv2.mojo @@ -0,0 +1,122 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import random +from collections import Optional + +from memory import UnsafePointer, memcpy, memset_zero + + +struct Grid[rows: Int, cols: Int](StringableRaising): + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + alias num_cells = rows * cols + var data: UnsafePointer[Int8] + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + def __init__(out self): + self.data = UnsafePointer[Int8].alloc(self.num_cells) + memset_zero(self.data, self.num_cells) + + fn __copyinit__(out self, existing: Self): + self.data = UnsafePointer[Int8].alloc(self.num_cells) + memcpy(dest=self.data, src=existing.data, count=self.num_cells) + # The lifetime of `existing` continues unchanged + + fn __moveinit__(out self, owned existing: Self): + self.data = existing.data + # Then the lifetime of `existing` ends here, but + # Mojo does NOT call its destructor + + fn __del__(owned self): + for i in range(self.num_cells): + (self.data + i).destroy_pointee() + self.data.free() + + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# + + @staticmethod + def random(seed: Optional[Int] = None) -> Self: + if seed: + random.seed(seed.value()) + else: + random.seed() + + grid = Self() + random.randint(grid.data, grid.num_cells, 0, 1) + + return grid + + # ===-------------------------------------------------------------------===# + # Indexing + # ===-------------------------------------------------------------------===# + + def __getitem__(self, row: Int, col: Int) -> Int8: + return (self.data + row * cols + col)[] + + def __setitem__(mut self, row: Int, col: Int, value: Int8) -> None: + (self.data + row * cols + col)[] = value + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + def __str__(self) -> String: + str = String() + for row in range(rows): + for col in range(cols): + if self[row, col] == 1: + str += "*" + else: + str += " " + if row != rows - 1: + str += "\n" + return str + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + def evolve(self) -> Self: + next_generation = Self() + + for row in range(rows): + row_above = (row - 1) % rows + row_below = (row + 1) % rows + + for col in range(cols): + col_left = (col - 1) % cols + col_right = (col + 1) % cols + + num_neighbors = ( + self[row_above, col_left] + + self[row_above, col] + + self[row_above, col_right] + + self[row, col_left] + + self[row, col_right] + + self[row_below, col_left] + + self[row_below, col] + + self[row_below, col_right] + ) + + if num_neighbors | self[row, col] == 3: + next_generation[row, col] = 1 + + return next_generation diff --git a/examples/life/lifev1.mojo b/examples/life/lifev1.mojo new file mode 100644 index 0000000000..9056388874 --- /dev/null +++ b/examples/life/lifev1.mojo @@ -0,0 +1,86 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import time + +from gridv1 import Grid +from python import Python, PythonObject + + +def run_display( + owned grid: Grid, + window_height: Int = 600, + window_width: Int = 600, + background_color: String = "black", + cell_color: String = "green", + pause: Float64 = 0.1, +) -> None: + # Import the pygame Python package + pygame = Python.import_module("pygame") + + # Initialize pygame modules + pygame.init() + + # Create a window and set its title + window = pygame.display.set_mode((window_height, window_width)) + pygame.display.set_caption("Conway's Game of Life") + + cell_height = window_height / grid.rows + cell_width = window_width / grid.cols + border_size = 1 + cell_fill_color = pygame.Color(cell_color) + background_fill_color = pygame.Color(background_color) + + running = True + while running: + # Poll for events + event = pygame.event.poll() + if event.type == pygame.QUIT: + # Quit if the window is closed + running = False + elif event.type == pygame.KEYDOWN: + # Also quit if the user presses or 'q' + if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: + running = False + + # Clear the window by painting with the background color + window.fill(background_fill_color) + + # Draw each live cell in the grid + for row in range(grid.rows): + for col in range(grid.cols): + if grid.data[row][col]: + x = col * cell_width + border_size + y = row * cell_height + border_size + width = cell_width - border_size + height = cell_height - border_size + pygame.draw.rect( + window, cell_fill_color, (x, y, width, height) + ) + + # Update the display + pygame.display.flip() + + # Pause to let the user appreciate the scene + time.sleep(pause) + + # Next generation + grid = grid.evolve() + + # Shut down pygame cleanly + pygame.quit() + + +def main(): + start = Grid.random(128, 128) + run_display(start) diff --git a/examples/life/lifev2.mojo b/examples/life/lifev2.mojo new file mode 100644 index 0000000000..ca2071ae06 --- /dev/null +++ b/examples/life/lifev2.mojo @@ -0,0 +1,86 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import time + +from gridv2 import Grid +from python import Python, PythonObject + + +def run_display( + owned grid: Grid, + window_height: Int = 600, + window_width: Int = 600, + background_color: String = "black", + cell_color: String = "green", + pause: Float64 = 0.1, +) -> None: + # Import the pygame Python package + pygame = Python.import_module("pygame") + + # Initialize pygame modules + pygame.init() + + # Create a window and set its title + window = pygame.display.set_mode((window_height, window_width)) + pygame.display.set_caption("Conway's Game of Life") + + cell_height = window_height / grid.rows + cell_width = window_width / grid.cols + border_size = 1 + cell_fill_color = pygame.Color(cell_color) + background_fill_color = pygame.Color(background_color) + + running = True + while running: + # Poll for events + event = pygame.event.poll() + if event.type == pygame.QUIT: + # Quit if the window is closed + running = False + elif event.type == pygame.KEYDOWN: + # Also quit if the user presses or 'q' + if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: + running = False + + # Clear the window by painting with the background color + window.fill(background_fill_color) + + # Draw each live cell in the grid + for row in range(grid.rows): + for col in range(grid.cols): + if grid[row, col]: + x = col * cell_width + border_size + y = row * cell_height + border_size + width = cell_width - border_size + height = cell_height - border_size + pygame.draw.rect( + window, cell_fill_color, (x, y, width, height) + ) + + # Update the display + pygame.display.flip() + + # Pause to let the user appreciate the scene + time.sleep(pause) + + # Next generation + grid = grid.evolve() + + # Shut down pygame cleanly + pygame.quit() + + +def main(): + start = Grid[128, 128].random() + run_display(start, window_height=600, window_width=600) diff --git a/examples/life/magic.lock b/examples/life/magic.lock new file mode 100644 index 0000000000..c3b6a5b2ae --- /dev/null +++ b/examples/life/magic.lock @@ -0,0 +1,12059 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- kind: conda + name: aiohappyeyeballs + version: 2.4.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19351 + timestamp: 1733332029649 +- kind: conda + name: aiohttp + version: 3.11.9 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 912186 + timestamp: 1733125914520 +- kind: conda + name: aiohttp + version: 3.11.9 + build: py312h998013c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 873089 + timestamp: 1733125044394 +- kind: conda + name: aiohttp + version: 3.11.9 + build: py312hcc812fe_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 900828 + timestamp: 1733124971238 +- kind: conda + name: aiosignal + version: 1.3.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13157 + timestamp: 1733332198143 +- kind: conda + name: alsa-lib + version: 1.2.13 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b + depends: + - libgcc >=13 + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- kind: conda + name: alsa-lib + version: 1.2.13 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- kind: conda + name: annotated-types + version: 0.7.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- kind: conda + name: anyio + version: 4.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 112730 + timestamp: 1733532678437 +- kind: conda + name: aom + version: 3.9.1 + build: h7bae524_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- kind: conda + name: aom + version: 3.9.1 + build: hac33072_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- kind: conda + name: aom + version: 3.9.1 + build: hcccb83c_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- kind: conda + name: attr + version: 2.5.1 + build: h166bdaf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- kind: conda + name: attr + version: 2.5.1 + build: h4e544f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 + md5: 1ef6c06fec1b6f5ee99ffe2152e53568 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + size: 74992 + timestamp: 1660065534958 +- kind: conda + name: attrs + version: 24.2.0 + build: pyh71513ae_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56336 + timestamp: 1733520064905 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: h35eccd0_12 + build_number: 12 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + license: Apache-2.0 + license_family: Apache + size: 92279 + timestamp: 1733611476546 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: h89ba3c0_12 + build_number: 12 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 112242 + timestamp: 1733611425746 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: ha4f867e_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 107663 + timestamp: 1733611397256 +- kind: conda + name: aws-c-cal + version: 0.8.1 + build: h35473ba_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 49808 + timestamp: 1732038238504 +- kind: conda + name: aws-c-cal + version: 0.8.1 + build: h5d7ee29_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 40047 + timestamp: 1732038304022 +- kind: conda + name: aws-c-cal + version: 0.8.1 + build: hecf86a2_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 47569 + timestamp: 1732038156682 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda + sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 + md5: 4150339e3b08db33fe4c436340b1d7f6 + depends: + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + size: 221524 + timestamp: 1731567512057 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda + sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 + md5: 64f523ba00b75fdcb33a4eea827d3d19 + depends: + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 257859 + timestamp: 1731567310573 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda + sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f + md5: ff3653946d34a6a6ba10babb139d96ef + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 237137 + timestamp: 1731567278052 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: h4c7db1d_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda + sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a + md5: ee074857cec335bb83692771b06160a4 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 19696 + timestamp: 1731678729046 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: h5d7ee29_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda + sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a + md5: 15566c36b0cf5f314e3bee7f7cc796b5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 18204 + timestamp: 1731678916439 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: hf42f96a_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda + sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce + md5: 257f4ae92fe11bd8436315c86468c39b + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 19034 + timestamp: 1731678703956 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 54020 + timestamp: 1731839177415 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + license: Apache-2.0 + license_family: Apache + size: 47491 + timestamp: 1731839300212 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: hba6c15e_8 + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 55354 + timestamp: 1731839242373 +- kind: conda + name: aws-c-http + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 152660 + timestamp: 1732110368931 +- kind: conda + name: aws-c-http + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 190344 + timestamp: 1732110425530 +- kind: conda + name: aws-c-http + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 197338 + timestamp: 1732110324356 +- kind: conda + name: aws-c-io + version: 0.15.3 + build: h0155602_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 + license: Apache-2.0 + license_family: Apache + size: 161664 + timestamp: 1732097310449 +- kind: conda + name: aws-c-io + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 136662 + timestamp: 1732097382517 +- kind: conda + name: aws-c-io + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 + license: Apache-2.0 + license_family: Apache + size: 158012 + timestamp: 1732097264673 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h2cca791_9 + build_number: 9 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 169690 + timestamp: 1733688313938 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h3aaadf4_9 + build_number: 9 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 135051 + timestamp: 1733688394116 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h56e9cca_9 + build_number: 9 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 194705 + timestamp: 1733688770217 +- kind: conda + name: aws-c-s3 + version: 0.7.5 + build: h3c51cf6_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 117896 + timestamp: 1733694002769 +- kind: conda + name: aws-c-s3 + version: 0.7.5 + build: h6ad95d4_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 113741 + timestamp: 1733693956970 +- kind: conda + name: aws-c-s3 + version: 0.7.5 + build: hca3a6f1_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + license: Apache-2.0 + license_family: Apache + size: 97530 + timestamp: 1733694097526 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: h4c7db1d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda + sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 + md5: 45437a9bad358b25f795e77218063baf + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 58256 + timestamp: 1731687032896 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: h5d7ee29_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda + sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 + md5: 0f1e5bc57d4567c9d9bec8d8982828ed + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 50276 + timestamp: 1731687215375 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: hf42f96a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda + sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b + md5: bbdd20fb1994a9f0ba98078fcb6c12ab + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 55738 + timestamp: 1731687063424 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: h4c7db1d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda + sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 + md5: af22e7e1c1af348a66f938aa66192f2c + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72081 + timestamp: 1731687244426 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: h5d7ee29_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda + sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 + md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 70184 + timestamp: 1731687342560 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: hf42f96a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda + sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 + md5: d908d43d87429be24edfb20e96543c20 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72744 + timestamp: 1731687193373 +- kind: conda + name: aws-crt-cpp + version: 0.29.7 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 355045 + timestamp: 1733744656604 +- kind: conda + name: aws-crt-cpp + version: 0.29.7 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 283993 + timestamp: 1733744571881 +- kind: conda + name: aws-crt-cpp + version: 0.29.7 + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libcxx >=18 + license: Apache-2.0 + license_family: Apache + size: 236331 + timestamp: 1733744737078 +- kind: conda + name: aws-sdk-cpp + version: 1.11.458 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2910575 + timestamp: 1733576378398 +- kind: conda + name: aws-sdk-cpp + version: 1.11.458 + build: hac138a2_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 3071464 + timestamp: 1733576251149 +- kind: conda + name: aws-sdk-cpp + version: 1.11.458 + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2847256 + timestamp: 1733576733615 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: h1887c18_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: h5cfcd09_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: hd50102c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: h113e628_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: h47b0b28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: hc602bab_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h185ecfd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h3cf044e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h7585a09_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h1b94036_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h736e048_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h9ca1f76_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: h37d6d07_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: ha633028_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: hcdd55da_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- kind: conda + name: backoff + version: 2.2.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de + md5: 4600709bd85664d8606ae0c76642f8db + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 17501 + timestamp: 1665004860081 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h2ec8cdc_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h6f74592_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312hde4cb15_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h68df207_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h99b78c6_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- kind: conda + name: c-ares + version: 1.34.3 + build: h5505292_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 179318 + timestamp: 1732447193278 +- kind: conda + name: c-ares + version: 1.34.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 214791 + timestamp: 1732447020593 +- kind: conda + name: c-ares + version: 1.34.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 204857 + timestamp: 1732447031823 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea + md5: c27d1c142233b5bc9ca570c6e2e0c244 + license: ISC + size: 159003 + timestamp: 1725018903918 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hcefe29a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 + md5: 70e57e8f59d2c98f86b49c69e5074be5 + license: ISC + size: 159106 + timestamp: 1725020043153 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hf0a4a13_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 + md5: 40dec13fd8348dbe303e57be74bd3d35 + license: ISC + size: 158482 + timestamp: 1725019034582 +- kind: conda + name: cairo + version: 1.18.0 + build: hdb1a16f_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + sha256: 8a747ad6ce32228a85c80bef8ec7387d71f8d2b0bf637edb56ff33e09794c616 + md5: 080659f02bf2202c57f1cda4f9e51f21 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 966709 + timestamp: 1721138947987 +- kind: conda + name: cairo + version: 1.18.0 + build: hebfffa5_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 + md5: fceaedf1cdbcb02df9699a0d9b005292 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 983604 + timestamp: 1721138900054 +- kind: conda + name: cairo + version: 1.18.2 + build: h6a3b0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda + sha256: fe941b50a60edb664f22de5fe48251c8b9fd2e844f6e35d7535e28a5d4f4f894 + md5: 830793d58ec68f117c51e1d8d6e2133a + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 894944 + timestamp: 1733698883301 +- kind: conda + name: certifi + version: 2024.8.30 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 12f7d00853807b0531775e9be891cb11 + depends: + - python >=3.7 + license: ISC + size: 163752 + timestamp: 1725278204397 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h06ac9bb_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h0fad829_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- kind: conda + name: cffi + version: 1.17.1 + build: py312hac81daf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- kind: conda + name: charset-normalizer + version: 3.4.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47533 + timestamp: 1733218182393 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84513 + timestamp: 1733221925078 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- kind: conda + name: datasets + version: 2.14.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- kind: conda + name: dav1d + version: 1.2.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 + md5: 6e5a87182d66b2d1328a96b61ca43a62 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 347363 + timestamp: 1685696690003 +- kind: conda + name: dav1d + version: 1.2.1 + build: hb547adb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 + md5: 5a74cdee497e6b65173e10d94582fae6 + license: BSD-2-Clause + license_family: BSD + size: 316394 + timestamp: 1685695959391 +- kind: conda + name: dav1d + version: 1.2.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- kind: conda + name: dbus + version: 1.13.6 + build: h12b9eeb_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 672759 + timestamp: 1640113663539 +- kind: conda + name: dbus + version: 1.13.6 + build: h5008d03_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- kind: conda + name: deprecated + version: 1.2.15 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14297 + timestamp: 1733662697343 +- kind: conda + name: dill + version: 0.3.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- kind: conda + name: dnspython + version: 2.7.0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- kind: conda + name: email-validator + version: 2.2.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- kind: conda + name: email_validator + version: 2.2.0 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- kind: conda + name: expat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- kind: conda + name: expat + version: 2.6.4 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a + md5: e8f1d587055376ea2419cc78696abd0b + depends: + - libexpat 2.6.4 h5ad3122_0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 130354 + timestamp: 1730967212801 +- kind: conda + name: fastapi + version: 0.115.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 + depends: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=2.11.2 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - python >=3.9 + - python-multipart >=0.0.7 + - starlette >=0.40.0,<0.42.0 + - typing_extensions >=4.8.0 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + size: 73084 + timestamp: 1733362427885 +- kind: conda + name: fastapi-cli + version: 0.0.5 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 + md5: d141225aba450ec07c771c73ac57bb43 + depends: + - python >=3.8 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 14441 + timestamp: 1728947860847 +- kind: conda + name: filelock + version: 3.16.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c + depends: + - python >=3.9 + license: Unlicense + size: 17441 + timestamp: 1733240909987 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: h4f58cef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + sha256: e557d4fcb40f224180d61cc5e57fe3d5d5793a255c7d5a29546e524ef2ffa298 + md5: 0207cc67431f4d12605cae60d8d323d7 + depends: + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 292770 + timestamp: 1729590405853 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: h80fea77_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + sha256: e4c39119797493d4f085cd6274e123372bec77e05ef93203ccf5dee714bfd9c3 + md5: dc2fc082a05af6a790d3e8e3e6489e6c + depends: + - __osx >=11.0 + - libcxx >=17 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - portaudio >=19.6.0,<19.7.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 234967 + timestamp: 1729590579216 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: hd992666_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 + md5: dd6c7b8a1b217ef7522ca987c465651d + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 279996 + timestamp: 1729590344462 +- kind: conda + name: font-ttf-dejavu-sans-mono + version: '2.37' + build: hab24e00_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- kind: conda + name: font-ttf-inconsolata + version: '3.000' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- kind: conda + name: font-ttf-source-code-pro + version: '2.038' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- kind: conda + name: font-ttf-ubuntu + version: '0.83' + build: h77eed37_3 + build_number: 3 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h1383a14_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h7e30c49_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h8dda3cd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 + md5: 112b71b6af28b47c624bcbeefeea685b + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 277832 + timestamp: 1730284967179 +- kind: conda + name: fonts-conda-ecosystem + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- kind: conda + name: fonts-conda-forge + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312h0bf5046_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 + md5: f98e36c96b2c66d9043187179ddb04f4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 60968 + timestamp: 1729699568442 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb + md5: 62fc11b0738ca15e0dd19b60cf280d12 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 59967 + timestamp: 1729699642726 +- kind: conda + name: fsspec + version: 2024.10.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 134726 + timestamp: 1733493445080 +- kind: conda + name: gettext + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda + sha256: 25b0b40329537f374a7394474376b01fd226e31f3ff3aa9254e8d328b23c2145 + md5: be78ccdd273e43e27e66fc1629df6576 + depends: + - gettext-tools 0.22.5 h0a1ffab_3 + - libasprintf 0.22.5 h87f4aca_3 + - libasprintf-devel 0.22.5 h87f4aca_3 + - libgcc-ng >=12 + - libgettextpo 0.22.5 h0a1ffab_3 + - libgettextpo-devel 0.22.5 h0a1ffab_3 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 481962 + timestamp: 1723626297896 +- kind: conda + name: gettext + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda + sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 + md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d + depends: + - __osx >=11.0 + - gettext-tools 0.22.5 h8414b35_3 + - libasprintf 0.22.5 h8414b35_3 + - libasprintf-devel 0.22.5 h8414b35_3 + - libcxx >=16 + - libgettextpo 0.22.5 h8414b35_3 + - libgettextpo-devel 0.22.5 h8414b35_3 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + - libintl-devel 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 483255 + timestamp: 1723627203687 +- kind: conda + name: gettext + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda + sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 + md5: c7f243bbaea97cd6ea1edd693270100e + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.22.5 he02047a_3 + - libasprintf 0.22.5 he8f35ee_3 + - libasprintf-devel 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + - libgettextpo-devel 0.22.5 he02047a_3 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 479452 + timestamp: 1723626088190 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + sha256: 9846b9d2e3d081cc8cb9ac7800c7e02a7b63bceea8619e0c51cfa271f89afdb2 + md5: 5fc8dfe3163ead62e0af82d97ce6b486 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 2954814 + timestamp: 1723626262722 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 + md5: 47071f4b2915032e1d47119f779f9d9c + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 2467439 + timestamp: 1723627140130 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + sha256: 0fd003953ce1ce9f4569458aab9ffaa397e3be2bc069250e2f05fd93b0ad2976 + md5: fcd2016d1d299f654f81021e27496818 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 2750908 + timestamp: 1723626056740 +- kind: conda + name: gflags + version: 2.2.2 + build: h5888daf_1005 + build_number: 1005 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- kind: conda + name: gflags + version: 2.2.2 + build: h5ad3122_1005 + build_number: 1005 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- kind: conda + name: gflags + version: 2.2.2 + build: hf9b8971_1005 + build_number: 1005 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- kind: conda + name: glog + version: 0.7.1 + build: h468a4a4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- kind: conda + name: glog + version: 0.7.1 + build: hbabe93e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- kind: conda + name: glog + version: 0.7.1 + build: heb240a5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- kind: conda + name: googleapis-common-protos + version: 1.66.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 + md5: 4861e30ff0cd566ea6fb4593e3b7c22a + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 116522 + timestamp: 1731459019854 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h2f0025b_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 99453 + timestamp: 1711634223220 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h59595ed_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- kind: conda + name: graphite2 + version: 1.3.13 + build: hebf3989_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + size: 79774 + timestamp: 1711634444608 +- kind: conda + name: h11 + version: 0.14.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 52000 + timestamp: 1733298867359 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: h997cde5_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f + md5: 50f6825d3c4a6fca6fefdefa98081554 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + license: MIT + license_family: MIT + size: 1317509 + timestamp: 1721186764931 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: hbf49d6b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + sha256: 7496782c3bc0ebbb4de9bc92a3111f42b8a57417fa31ecb87058f250215fabc9 + md5: ceb458f664cab8550fcd74fff26451db + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1614644 + timestamp: 1721188789883 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: hda332d3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 + md5: 76b32dcf243444aea9c6b804bcfa40b8 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1603653 + timestamp: 1721186240105 +- kind: conda + name: hpack + version: 4.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 29412 + timestamp: 1733299296857 +- kind: conda + name: httpcore + version: 1.0.7 + build: pyh29332c3_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- kind: conda + name: httptools + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- kind: conda + name: httptools + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- kind: conda + name: httptools + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- kind: conda + name: httpx + version: 0.28.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- kind: conda + name: huggingface_hub + version: 0.26.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + size: 274900 + timestamp: 1733637007500 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17239 + timestamp: 1733298862681 +- kind: conda + name: icu + version: '75.1' + build: he02047a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- kind: conda + name: icu + version: '75.1' + build: hf9b3779_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- kind: conda + name: importlib-metadata + version: 7.0.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b + md5: b050a4bb0e90ebd6e7fa4093d6346867 + depends: + - python >=3.8 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 26900 + timestamp: 1709821273570 +- kind: conda + name: jack + version: 1.9.22 + build: h5c6c0ed_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f + md5: e6abd2a51bd727a1b62a54524f760864 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 489040 + timestamp: 1693881455137 +- kind: conda + name: jack + version: 1.9.22 + build: h7c63dc7_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- kind: conda + name: jinja2 + version: 3.1.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110963 + timestamp: 1733217424408 +- kind: conda + name: jupyter_client + version: 8.6.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- kind: conda + name: jupyter_core + version: 5.7.2 + build: pyh31011fe_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: keyutils + version: 1.6.1 + build: h4e544f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- kind: conda + name: krb5 + version: 1.21.3 + build: h237132a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- kind: conda + name: krb5 + version: 1.21.3 + build: h50a48e9_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: lame + version: '3.100' + build: h166bdaf_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- kind: conda + name: lame + version: '3.100' + build: h1a8c8d9_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- kind: conda + name: lame + version: '3.100' + build: h4e544f5_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a + md5: ab05bcf82d8509b4243f07e93bada144 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 604863 + timestamp: 1664997611416 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- kind: conda + name: ld_impl_linux-64 + version: '2.43' + build: h712a8e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- kind: conda + name: ld_impl_linux-aarch64 + version: '2.43' + build: h80caac9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_h5888daf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 + md5: e1f604644fe8d78e22660e2fec6756bc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + license: Apache-2.0 + license_family: Apache + size: 1310521 + timestamp: 1727295454064 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_h5ad3122_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 + md5: 6fe6b3694c4792a8e26755d3b06f0b80 + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1328502 + timestamp: 1727295490806 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_hf9b8971_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 + md5: 706da5e791c569a7b9814877098a6a0a + depends: + - __osx >=11.0 + - libcxx >=17 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + license: Apache-2.0 + license_family: Apache + size: 1179072 + timestamp: 1727295571173 +- kind: conda + name: libarrow + version: 18.1.0 + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 +- kind: conda + name: libarrow + version: 18.1.0 + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 +- kind: conda + name: libarrow + version: 18.1.0 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a + depends: + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + license: Apache-2.0 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 + depends: + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libcxx >=18 + - libparquet 18.1.0 hf4cc9e7_4_cpu + license: Apache-2.0 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 + depends: + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libgcc >=13 + - libparquet 18.1.0 h34a048e_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: had74209_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 + - libprotobuf >=5.28.2,<5.28.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f + md5: 472b673c083175195965a48f2f4808f8 + depends: + - __osx >=11.0 + - libcxx >=16 + license: LGPL-2.1-or-later + size: 40657 + timestamp: 1723626937704 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h87f4aca_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda + sha256: b438814a7190a541950da68d3cde8ecbcc55629ce677eb65afbb01cfa1e4e651 + md5: 332ce64c2dec75dc0849e7ffcdf7a3a4 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later + size: 42627 + timestamp: 1723626204541 +- kind: conda + name: libasprintf + version: 0.22.5 + build: he8f35ee_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda + sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c + md5: 4fab9799da9571266d05ca5503330655 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later + size: 42817 + timestamp: 1723626012203 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d + md5: a03ca97f9fabf5626660697c2e0b8850 + depends: + - __osx >=11.0 + - libasprintf 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later + size: 34648 + timestamp: 1723626983419 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h87f4aca_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + sha256: c9eda86140a5a023b72a8997f82629f4b071df17d57d00ba75a66b65a0525a5e + md5: dbaa9d8c0030bda3e3d22d325ea48191 + depends: + - libasprintf 0.22.5 h87f4aca_3 + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 34359 + timestamp: 1723626223953 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: he8f35ee_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + sha256: ccc7967e298ddf3124c8ad9741c7180dc6f778ae4135ec87978214f7b3c64dc2 + md5: 1091193789bb830127ed067a9e01ac57 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 34172 + timestamp: 1723626026096 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h1909e37_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 + md5: 21e468ed3786ebcb2124b123aa2484b7 + depends: + - __glibc >=2.17,<3.0.a0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 116202 + timestamp: 1730268687453 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h3b0c220_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + sha256: 8284693096532fb5d1af7fd5c170a4d4f0a54593ba29c881667327b61a7cd7bb + md5: 58ec6027e7b6ea460a4a7ed7112842d8 + depends: + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 116097 + timestamp: 1730268695528 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h45b7238_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + sha256: c671365e8c822d29b53f20c4573fdbc70f18b50ff9a4b5b2b6b3c8f7ad2ac2a9 + md5: 7571064a60bc193ff5c25f36ed23394a + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 96781 + timestamp: 1730268761553 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 + md5: 8ea26d42ca88ec5258802715fe1ee10b + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15677 + timestamp: 1729642900350 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca + md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - liblapack 3.9.0 25_linuxaarch64_openblas + - libcblas 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15808 + timestamp: 1729643002627 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 + md5: f8cf4d920ff36ce471619010eff59cac + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - blas * openblas + - liblapack 3.9.0 25_osxarm64_openblas + - liblapacke 3.9.0 25_osxarm64_openblas + - libcblas 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15913 + timestamp: 1729643265495 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- kind: conda + name: libcap + version: '2.71' + build: h39aace5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 102268 + timestamp: 1729940917945 +- kind: conda + name: libcap + version: '2.71' + build: h51d75a7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef + md5: 29f6092b6e938516ca0b042837e64fa5 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + license: BSD-3-Clause + license_family: BSD + size: 106877 + timestamp: 1729940936697 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd + md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapack 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15613 + timestamp: 1729642905619 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 + md5: db6af51123c67814572a8c25542cb368 + depends: + - libblas 3.9.0 25_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - liblapack 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15700 + timestamp: 1729643006729 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 + md5: 4df0fae81f0b5bf47d48c882b086da11 + depends: + - libblas 3.9.0 25_osxarm64_openblas + constrains: + - blas * openblas + - liblapack 3.9.0 25_osxarm64_openblas + - liblapacke 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15837 + timestamp: 1729643270793 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: hbdafb3b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- kind: conda + name: libcurl + version: 8.10.1 + build: h13a7ad3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a + md5: d84030d0863ffe7dea00b9a807fee961 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 379948 + timestamp: 1726660033582 +- kind: conda + name: libcurl + version: 8.10.1 + build: h3ec0cbf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 + md5: f43539295c4e0cd15202d41bc72b8a26 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 439171 + timestamp: 1726659843118 +- kind: conda + name: libcurl + version: 8.10.1 + build: hbbe4b11_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 + md5: 6e801c50a40301f6978c53976917b277 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 424900 + timestamp: 1726659794676 +- kind: conda + name: libcxx + version: 19.1.5 + build: ha82da77_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 519819 + timestamp: 1733291654212 +- kind: conda + name: libdb + version: 6.2.32 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 + md5: 7cbfba14d5adfa65db945d5112909394 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: AGPL-3.0-only + license_family: AGPL + size: 24449415 + timestamp: 1609538998176 +- kind: conda + name: libdb + version: 6.2.32 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 +- kind: conda + name: libedit + version: 3.1.20191231 + build: hc8eb9b7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca + md5: 30e4362988a2623e9eb34337b83e01f9 + depends: + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 96607 + timestamp: 1597616630749 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d + md5: 29371161d77933a54fccf1bb66b96529 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134104 + timestamp: 1597617110769 +- kind: conda + name: libev + version: '4.33' + build: h31becfc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- kind: conda + name: libev + version: '4.33' + build: h93a5062_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- kind: conda + name: libev + version: '4.33' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- kind: conda + name: libevent + version: 2.1.12 + build: h2757513_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- kind: conda + name: libevent + version: 2.1.12 + build: h4ba1bb4_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- kind: conda + name: libevent + version: 2.1.12 + build: hf998b51_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- kind: conda + name: libexpat + version: 2.6.4 + build: h286801f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- kind: conda + name: libffi + version: 3.4.2 + build: h3422bc3_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- kind: conda + name: libffi + version: 3.4.2 + build: h3557bc0_5 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libflac + version: 1.4.3 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 + md5: 520b12eab32a92e19b1f239ac545ec03 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 371550 + timestamp: 1687765491794 +- kind: conda + name: libflac + version: 1.4.3 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- kind: conda + name: libflac + version: 1.4.3 + build: hb765f3a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + sha256: 3990b52782fe7207ab642df25368ed443094f6d1a7ea61854935c24192b388aa + md5: 356faba64411660f6c4d24ea31640733 + depends: + - gettext >=0.21.1,<1.0a0 + - libcxx >=15.0.7 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 314408 + timestamp: 1687766236790 +- kind: conda + name: libgcc + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- kind: conda + name: libgcc + version: 14.2.0 + build: he277a41_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: he9431aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- kind: conda + name: libgcrypt-lib + version: 1.11.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + sha256: 7b0b59e11511e1c20e4d1b89ac458b4a0799da2ef10980302a5f033ecc434dee + md5: 07c1e27a75b217e5502bff34cd23c353 + depends: + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + license: LGPL-2.1-or-later + size: 635094 + timestamp: 1732523317415 +- kind: conda + name: libgcrypt-lib + version: 1.11.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda + sha256: f816747b63432def4bfe2bfa517057149b2b94a48101fe13e7fcc2c223ec2042 + md5: 263a0b8af4b3fcdb35acc4038bb5bff5 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 199824 + timestamp: 1723626215655 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda + sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 + md5: c8cd7295cfb7bda5cbabea4fef904349 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 159800 + timestamp: 1723627007035 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda + sha256: 7f2d1f4d69973e2c3c3d2b6420d5eb989982baba97d63ab2d7a2b25a92d886b4 + md5: efab66b82ec976930b96d62a976de8e7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 170646 + timestamp: 1723626019265 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + sha256: 677df7af241b36c6b06dff52528c2a8e4f42f8cf40d962e693caa707b563c86c + md5: 5c1498c4da030824d57072f05220aad8 + depends: + - libgcc-ng >=12 + - libgettextpo 0.22.5 h0a1ffab_3 + license: GPL-3.0-or-later + license_family: GPL + size: 36989 + timestamp: 1723626232155 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac + md5: 7074dc1c9aae1bb5d7bccb4ff03746ca + depends: + - __osx >=11.0 + - libgettextpo 0.22.5 h8414b35_3 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 37153 + timestamp: 1723627048279 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + sha256: 0a66cdd46d1cd5201061252535cd91905b3222328a9294c1a5bcd32e85531545 + md5: 9aba7960731e6b4547b3a52f812ed801 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + license: GPL-3.0-or-later + license_family: GPL + size: 36790 + timestamp: 1723626032786 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_hd922786_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- kind: conda + name: libgfortran + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- kind: conda + name: libgfortran + version: 14.2.0 + build: he9431aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 + depends: + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: hf226fd6_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hb6113d0_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hd5240d6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- kind: conda + name: libglib + version: 2.82.2 + build: h07bd6cf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 + md5: 890783f64502fa6bfcdc723cfbf581b4 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 3635416 + timestamp: 1729191799117 +- kind: conda + name: libglib + version: 2.82.2 + build: h2ff4ddf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 + md5: 13e8e54035ddd2b91875ba399f0f7c04 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 3931898 + timestamp: 1729191404130 +- kind: conda + name: libglib + version: 2.82.2 + build: hc486b8e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c + md5: 47f6d85fe47b865e56c539f2ba5f4dad + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 4020802 + timestamp: 1729191545578 +- kind: conda + name: libgomp + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- kind: conda + name: libgomp + version: 14.2.0 + build: he277a41_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h3888205_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda + sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 + md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1246720 + timestamp: 1731122940037 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h804f50b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda + sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 + md5: 35ab838423b60f233391eb86d324a830 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1248705 + timestamp: 1731122589027 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h8d8be31_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda + sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 + md5: a338736f1514e6f999db8726fe0965b1 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 873497 + timestamp: 1731121684939 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: h0121fbd_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af + md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.31.0 h804f50b_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 782150 + timestamp: 1731122728715 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: h7081f7f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 + md5: 548fd1d31741ee6b13df4124db4a9f5f + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.31.0 h8d8be31_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 526858 + timestamp: 1731122580689 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: hb9b2b65_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 + md5: 53897114489b4df10e1680bf189aa306 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.31.0 h3888205_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 737686 + timestamp: 1731123086764 +- kind: conda + name: libgpg-error + version: '1.51' + build: h05609ea_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + sha256: e819b3ba47dc7e195e8e8a9c874d0b45690cccb2fa741f1abd55b28323f9fc43 + md5: 9cabbbc1c3c8e9fa30e90748f14534dd + depends: + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: GPL + size: 277785 + timestamp: 1731920977846 +- kind: conda + name: libgpg-error + version: '1.51' + build: hbd13f7d_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- kind: conda + name: libgrpc + version: 1.67.1 + build: h36c5df4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 + md5: b946137e362e98a55a77fdf0b20a7739 + depends: + - c-ares >=1.32.3,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 7131846 + timestamp: 1730236305327 +- kind: conda + name: libgrpc + version: 1.67.1 + build: hc2c308b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 + md5: 4606a4647bfe857e3cfe21ca12ac3afb + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 7362336 + timestamp: 1730236333879 +- kind: conda + name: libgrpc + version: 1.67.1 + build: hc70892a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 + md5: 624e27571fde34f8acc2afec840ac435 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 4882208 + timestamp: 1730236299095 +- kind: conda + name: libiconv + version: '1.17' + build: h0d3ecfb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- kind: conda + name: libiconv + version: '1.17' + build: h31becfc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: libintl + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 + md5: 3b98ec32e91b3b59ad53dbb9c96dd334 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 81171 + timestamp: 1723626968270 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + sha256: c9d1d4fdfb5775828e54bc9fb443b1a6de9319a04b81d1bac52c26114a763154 + md5: 271646de11b018c66e81eb4c4717b291 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later + size: 38584 + timestamp: 1723627022409 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e + md5: 4dc03a53fc69371a6158d0ed37214cd3 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapacke 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + size: 15608 + timestamp: 1729642910812 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 + md5: 0eb74e81de46454960bde9e44e7ee378 + depends: + - libblas 3.9.0 25_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - libcblas 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15711 + timestamp: 1729643010817 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 + md5: 19bbddfec972d401838330453186108d + depends: + - libblas 3.9.0 25_osxarm64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_osxarm64_openblas + - libcblas 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15823 + timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + sha256: 6e9ca2041f89c7df63d7ceba31a46b8f9ab28e88ce39f9f5c30b1fd0c629111c + md5: ca1606232471b17724ab99904cf90195 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + license: 0BSD + size: 376914 + timestamp: 1733409269260 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + sha256: ca17f037a0a7137874597866a171166677e4812a9a8a853007f0f582e3ff6d1d + md5: cc4687e1814ed459f3bd6d8e05251ab2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + license: 0BSD + size: 376794 + timestamp: 1733407421190 +- kind: conda + name: libmad + version: 0.15.1b + build: h0b41bf4_1001 + build_number: 1001 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 + md5: dc5cc4700f02ffeecc48253c9f29025b + depends: + - libgcc-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 78561 + timestamp: 1670815547616 +- kind: conda + name: libmad + version: 0.15.1b + build: h1a8c8d9_1001 + build_number: 1001 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 + md5: 1eb30852ed396fbe6e301fe6d715aef9 + license: GPL-2.0-only + license_family: GPL + size: 77255 + timestamp: 1670815732700 +- kind: conda + name: libmad + version: 0.15.1b + build: hb4cce97_1001 + build_number: 1001 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + sha256: f39c36ce40bc75bc2eb101e8569caf166d6a02e0b1ef95403146b4f9310df0e3 + md5: 10814f7a570b160cea0c885bc1c5e8d5 + depends: + - libgcc-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 79598 + timestamp: 1673354561940 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: h161d5f1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: h6d7220d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: hc8609a4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- kind: conda + name: libnsl + version: 2.0.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libogg + version: 1.3.5 + build: h0b9eccb_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 208233 + timestamp: 1719301637185 +- kind: conda + name: libogg + version: 1.3.5 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- kind: conda + name: libogg + version: 1.3.5 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e + md5: 57b668b9b78dea2c08e44bb2385d57c0 + depends: + - __osx >=11.0 + license: BSD-3-Clause + license_family: BSD + size: 205451 + timestamp: 1719301708541 +- kind: conda + name: libopenblas + version: 0.3.28 + build: openmp_hf332438_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h94d23a6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5578513 + timestamp: 1730772671118 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h9d3fd7e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4793435 + timestamp: 1730773029647 +- kind: conda + name: libopus + version: 1.3.1 + build: h27ca646_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- kind: conda + name: libopus + version: 1.3.1 + build: h7f98852_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- kind: conda + name: libopus + version: 1.3.1 + build: hf897c2e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 + md5: ac7534c50934ed25e4749d74b04c667a + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 328825 + timestamp: 1606823775764 +- kind: conda + name: libparquet + version: 18.1.0 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 + depends: + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4f6db6_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h029595c_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda + sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 + md5: 538dbe0ad9f248e2e109abb9b6809ea5 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2802876 + timestamp: 1728564881988 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h5b01275_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda + sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 + md5: ab0bff36363bec94720275a681af8b83 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2945348 + timestamp: 1728565355702 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h8f0b736_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda + sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 + md5: d2cb5991f2fb8eb079c80084435e9ce6 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2374965 + timestamp: 1728565334796 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: h18dbdb1_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff + md5: f1800796b0efc4bbc5b001d845545111 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 203516 + timestamp: 1728778974654 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: h2348fd5_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f + md5: 5a7065309a66097738be6a06fd04b7ef + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 165956 + timestamp: 1728779107218 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: hbbce691_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f + md5: 2124de47357b7a516c0a3efd8f88c143 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 211096 + timestamp: 1728778964655 +- kind: conda + name: libsndfile + version: 1.2.2 + build: h79657aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + sha256: 8fcd5e45d6fb071e8baf492ebb8710203fd5eedf0cb791e007265db373c89942 + md5: ad8e62c0faec46b1442f960489c80b49 + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 396501 + timestamp: 1695747749825 +- kind: conda + name: libsndfile + version: 1.2.2 + build: h9739721_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + sha256: e559f2f72bb03a554aa5b74230fa19160d33c7981ed385294f1eea9a5871cc03 + md5: 77d552455cbc52e089cdb9df5b283199 + depends: + - lame >=3.100,<3.101.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 317185 + timestamp: 1695747981394 +- kind: conda + name: libsndfile + version: 1.2.2 + build: hc60ed4a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- kind: conda + name: libsodium + version: 1.0.20 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + license: ISC + size: 205978 + timestamp: 1716828628198 +- kind: conda + name: libsodium + version: 1.0.20 + build: h68df207_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + license: ISC + size: 177394 + timestamp: 1716828514515 +- kind: conda + name: libsodium + version: 1.0.20 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + license: ISC + size: 164972 + timestamp: 1716828607917 +- kind: conda + name: libsqlite + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 850553 + timestamp: 1733762057506 +- kind: conda + name: libsqlite + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 1042182 + timestamp: 1733761913736 +- kind: conda + name: libsqlite + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 873551 + timestamp: 1733761824646 +- kind: conda + name: libssh2 + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- kind: conda + name: libssh2 + version: 1.11.1 + build: ha41c0db_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- kind: conda + name: libssh2 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: h3f4de04_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: hc0a3c3a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: h4852527_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: hf1166c9_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 + depends: + - libstdcxx 14.2.0 h3f4de04_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- kind: conda + name: libsystemd0 + version: '256.9' + build: h2774228_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda + sha256: a93e45c12c2954942a994ff3ffc8b9a144261288032da834ed80a6210708ad49 + md5: 7b283ff97a87409a884bc11283855c17 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: LGPL-2.1-or-later + size: 410424 + timestamp: 1733312416327 +- kind: conda + name: libsystemd0 + version: '256.9' + build: hd54d049_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda + sha256: d04ea4fa1b3282029039ec28054f53b0c5b3ef044303450e5684e2a690e7aa52 + md5: 9ee06ecb3e342bf03e163af5080acd9f + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: LGPL-2.1-or-later + size: 430930 + timestamp: 1733311785480 +- kind: conda + name: libthrift + version: 0.21.0 + build: h0e7cc3e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- kind: conda + name: libthrift + version: 0.21.0 + build: h154c74f_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- kind: conda + name: libthrift + version: 0.21.0 + build: h64651cc_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 370387 + timestamp: 1733443310502 +- kind: conda + name: libtiff + version: 4.7.0 + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 429018 + timestamp: 1733443013288 +- kind: conda + name: libtiff + version: 4.7.0 + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464857 + timestamp: 1733443105529 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h5505292_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 83000 + timestamp: 1732868631531 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 81526 + timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libuuid + version: 2.38.1 + build: hb4cce97_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- kind: conda + name: libuv + version: 1.49.2 + build: h7ab814d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 410500 + timestamp: 1729322654121 +- kind: conda + name: libuv + version: 1.49.2 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 + md5: 1899e1ec2be63386c41c4db31d3056af + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 627484 + timestamp: 1729322575379 +- kind: conda + name: libuv + version: 1.49.2 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 884647 + timestamp: 1729322566955 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 + md5: c2863ff72c6d8a59054f8b9102c206e9 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 292082 + timestamp: 1610616294416 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h9f76cd9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 + md5: 92a1a88d1a1d468c19d9e1659ac8d3df + depends: + - libcxx >=11.0.0 + - libogg >=1.3.4,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 254839 + timestamp: 1610609991029 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxml2 + version: 2.13.5 + build: h178c5d8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 582898 + timestamp: 1733443841584 +- kind: conda + name: libxml2 + version: 2.13.5 + build: h2e0c361_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 732155 + timestamp: 1733443825814 +- kind: conda + name: libxml2 + version: 2.13.5 + build: h8d12d68_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 690589 + timestamp: 1733443667823 +- kind: conda + name: libzlib + version: 1.3.1 + build: h8359307_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- kind: conda + name: libzlib + version: 1.3.1 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- kind: conda + name: libzlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- kind: conda + name: llvm-openmp + version: 19.1.5 + build: hdb05f8b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.5|19.1.5.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 281120 + timestamp: 1733376089600 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hb7217d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 + md5: 45505bec548634f7d05e02fb25262cb9 + depends: + - libcxx >=14.0.6 + license: BSD-2-Clause + license_family: BSD + size: 141188 + timestamp: 1674727268278 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hcb278e6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f + md5: 318b08df404f9c9be5712aaa5a6f0bb0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 143402 + timestamp: 1674727076728 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hd600fc2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 + md5: 500145a83ed07ce79c8cef24252f366b + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 163770 + timestamp: 1674727020254 +- kind: conda + name: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h178313f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h74ce7d3_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h998013c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- kind: conda + name: max + version: 24.6.0.dev2024120905 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release + license: LicenseRef-Modular-Proprietary + size: 9911 + timestamp: 1733721408716 +- kind: conda + name: max-core + version: 24.6.0.dev2024120905 + build: release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c + depends: + - mblack ==24.6.0.dev2024120905 release + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 247639885 + timestamp: 1733721408714 +- kind: conda + name: max-core + version: 24.6.0.dev2024120905 + build: release + subdir: linux-aarch64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 + depends: + - mblack ==24.6.0.dev2024120905 release + arch: aarch64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 251498878 + timestamp: 1733721396377 +- kind: conda + name: max-core + version: 24.6.0.dev2024120905 + build: release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b + depends: + - mblack ==24.6.0.dev2024120905 release + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 212030191 + timestamp: 1733721567995 +- kind: conda + name: max-python + version: 24.6.0.dev2024120905 + build: 3.12release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b + depends: + - max-core ==24.6.0.dev2024120905 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - huggingface_hub + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 123751303 + timestamp: 1733721408724 +- kind: conda + name: max-python + version: 24.6.0.dev2024120905 + build: 3.12release + subdir: linux-aarch64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba + depends: + - max-core ==24.6.0.dev2024120905 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - huggingface_hub + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 127400047 + timestamp: 1733721396388 +- kind: conda + name: max-python + version: 24.6.0.dev2024120905 + build: 3.12release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 + depends: + - max-core ==24.6.0.dev2024120905 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - huggingface_hub + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 112450493 + timestamp: 1733721567998 +- kind: conda + name: mblack + version: 24.6.0.dev2024120905 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - python + license: MIT + size: 130740 + timestamp: 1733721408720 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- kind: conda + name: mojo-jupyter + version: 24.6.0.dev2024120905 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 + depends: + - max-core ==24.6.0.dev2024120905 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 11366 + timestamp: 1733721408720 +- kind: conda + name: mpg123 + version: 1.32.9 + build: h65af167_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 + md5: cdf140c7690ab0132106d3bc48bce47d + depends: + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: LGPL + size: 558708 + timestamp: 1730581372400 +- kind: conda + name: mpg123 + version: 1.32.9 + build: hc50e24c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- kind: conda + name: mpg123 + version: 1.32.9 + build: hf642e45_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + sha256: 070bbbbb96856c325c0b6637638ce535afdc49adbaff306e2238c6032d28dddf + md5: d2b4857bdc3b76c36e23236172d09840 + depends: + - __osx >=11.0 + - libcxx >=18 + license: LGPL-2.1-only + license_family: LGPL + size: 360712 + timestamp: 1730581491116 +- kind: conda + name: multidict + version: 6.1.0 + build: py312h178313f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 + md5: e397d9b841c37fc3180b73275ce7e990 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 61519 + timestamp: 1729065799315 +- kind: conda + name: multidict + version: 6.1.0 + build: py312hcc812fe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 + md5: 7629c9ce86495fa01cdfc3ea5418d03f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 62830 + timestamp: 1729065694252 +- kind: conda + name: multidict + version: 6.1.0 + build: py312hdb8e49c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- kind: conda + name: multiprocess + version: 0.70.15 + build: py312h02f2b3b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- kind: conda + name: multiprocess + version: 0.70.15 + build: py312h98912ed_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- kind: conda + name: multiprocess + version: 0.70.15 + build: py312hdd3e373_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- kind: conda + name: mypy_extensions + version: 1.0.0 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- kind: conda + name: ncurses + version: '6.5' + build: h7bae524_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + size: 802321 + timestamp: 1724658775723 +- kind: conda + name: ncurses + version: '6.5' + build: hcccb83c_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 + md5: 91d49c85cacd92caa40cf375ef72a25d + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 924472 + timestamp: 1724658573518 +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 889086 + timestamp: 1724658547447 +- kind: conda + name: numpy + version: 1.26.4 + build: py312h470d778_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- kind: conda + name: numpy + version: 1.26.4 + build: py312h8442bc7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- kind: conda + name: numpy + version: 1.26.4 + build: py312heda63a1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 +- kind: conda + name: openssl + version: 3.4.0 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 + md5: df307bbc703324722df0293c9ca2e418 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2935176 + timestamp: 1731377561525 +- kind: conda + name: openssl + version: 3.4.0 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 + md5: b2f202b5bddafac824eb610b65dde98f + depends: + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 3474825 + timestamp: 1731379200886 +- kind: conda + name: openssl + version: 3.4.0 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2947466 + timestamp: 1731377666602 +- kind: conda + name: opentelemetry-api + version: 1.28.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 + depends: + - deprecated >=1.2.6 + - importlib-metadata >=6.0.0,<7.1.0 + - python >=3.9 + - setuptools >=16.0 + license: Apache-2.0 + size: 44242 + timestamp: 1733734361129 +- kind: conda + name: opentelemetry-exporter-otlp-proto-common + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 + md5: b00b3a8f0d25d5b18979c73ec051c313 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.28.2 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 18838 + timestamp: 1731991715474 +- kind: conda + name: opentelemetry-exporter-otlp-proto-http + version: 1.28.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 + md5: 73810c011d2d60914ce8f92fe99564a0 + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.28.2 + - opentelemetry-proto 1.28.2 + - opentelemetry-sdk ~=1.28.2 + - python >=3.8 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17007 + timestamp: 1732094238214 +- kind: conda + name: opentelemetry-exporter-prometheus + version: 1.12.0rc1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c + md5: 1ddc95052b31147d1e10d818cf519cf5 + depends: + - opentelemetry-api >=1.10.0 + - opentelemetry-sdk >=1.10.0 + - prometheus_client >=0.5.0,<1.0.0 + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 14721 + timestamp: 1695214221489 +- kind: conda + name: opentelemetry-proto + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf + md5: 54ac33b32171ce2205b6639da1a1ac54 + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37108 + timestamp: 1731988686996 +- kind: conda + name: opentelemetry-sdk + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 + md5: 742115714b2cbfa599e9f78495233d1a + depends: + - opentelemetry-api 1.28.2 + - opentelemetry-semantic-conventions 0.49b2 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 78017 + timestamp: 1732070451972 +- kind: conda + name: opentelemetry-semantic-conventions + version: 0.49b2 + build: pyh3cfb1c2_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.28.2 + - python >=3.9 + license: Apache-2.0 + size: 81099 + timestamp: 1733749104727 +- kind: conda + name: opusfile + version: '0.12' + build: h3358134_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 + md5: 5931bcae00b98f952696b6bcdd0be34b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 65901 + timestamp: 1670387479735 +- kind: conda + name: opusfile + version: '0.12' + build: h5643135_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 + md5: e34e472ae04beeb642c5e937a2aeeebf + depends: + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 80128 + timestamp: 1670387790769 +- kind: conda + name: opusfile + version: '0.12' + build: hf55b2d5_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + sha256: a0ffa8054df68fad5f3533338557c7b985480ee3cf39f0e251ee6b03ff6896cf + md5: a9a71d77aec174e4532f91f560bc413b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 91662 + timestamp: 1673436651852 +- kind: conda + name: orc + version: 2.0.3 + build: h121fd32_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f + md5: 39995f7406b949c1bef74f0c7277afb3 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 438254 + timestamp: 1731665228473 +- kind: conda + name: orc + version: 2.0.3 + build: h90de224_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 + md5: c07ba3025fe20ccbab9cd7c615953d6f + depends: + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1170439 + timestamp: 1731665024334 +- kind: conda + name: orc + version: 2.0.3 + build: he039a57_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 + md5: 052499acd6d6b79952197a13b23e2600 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1187593 + timestamp: 1731664886527 +- kind: conda + name: packaging + version: '24.2' + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- kind: conda + name: pandas + version: 2.2.3 + build: py312ha2895bd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 + md5: 80b873ac4fdf36641afa0eaafff3a664 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 15159625 + timestamp: 1726879151211 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hcd31e36_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hf9745cd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- kind: conda + name: pathspec + version: 0.12.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- kind: conda + name: pcre2 + version: '10.44' + build: h070dd5b_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 + md5: 94022de9682cb1a0bb18a99cbc3541b3 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 884590 + timestamp: 1723488793100 +- kind: conda + name: pcre2 + version: '10.44' + build: h297a79d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 618973 + timestamp: 1723488853807 +- kind: conda + name: pcre2 + version: '10.44' + build: hba22ea6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 +- kind: conda + name: pixman + version: 0.44.2 + build: h29eaf8c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + size: 381072 + timestamp: 1733698987122 +- kind: conda + name: pixman + version: 0.44.2 + build: h2f9eb0b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b + depends: + - __osx >=11.0 + - libcxx >=18 + license: MIT + size: 201076 + timestamp: 1733699127167 +- kind: conda + name: pixman + version: 0.44.2 + build: h86a87f0_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a + depends: + - libgcc >=13 + - libstdcxx >=13 + license: MIT + size: 288697 + timestamp: 1733700860569 +- kind: conda + name: platformdirs + version: 4.3.6 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- kind: conda + name: portaudio + version: 19.6.0 + build: h13dd4ca_9 + build_number: 9 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e + md5: d325d46394b6c46d15718c855fb20b4a + depends: + - libcxx >=15.0.7 + license: MIT + license_family: MIT + size: 78863 + timestamp: 1693868663440 +- kind: conda + name: portaudio + version: 19.6.0 + build: h5c6c0ed_9 + build_number: 9 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + sha256: a73e31c5fe9d717cd42470b394018f4e48eed4a439b9371d2c6d380c86aed591 + md5: ab049f8223bccc6f621975beaa75c624 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 118203 + timestamp: 1693868376750 +- kind: conda + name: portaudio + version: 19.6.0 + build: h7c63dc7_9 + build_number: 9 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 + md5: 893f2c33af6b03cfd04820a8c31f5798 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 115512 + timestamp: 1693868383 +- kind: conda + name: portmidi + version: 2.0.4 + build: h13dd4ca_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 + md5: fe77195a950275fe63e560b1b855e818 + depends: + - libcxx >=15.0.7 + license: MIT + license_family: MIT + size: 47319 + timestamp: 1693882007724 +- kind: conda + name: portmidi + version: 2.0.4 + build: h5c6c0ed_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + sha256: 64ed7bdebe45af7987f65402506fa5ad6f9fd339a93f8fe7a57c6bcce497022f + md5: 8ee28835da08f915cba9317fccb6396d + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 45266 + timestamp: 1693882668197 +- kind: conda + name: portmidi + version: 2.0.4 + build: h7c63dc7_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 + md5: 5b2518aa80f149ee6881f5ad959f5d59 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 43765 + timestamp: 1693881734349 +- kind: conda + name: prometheus_client + version: 0.21.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- kind: conda + name: propcache + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 52747 + timestamp: 1733391916349 +- kind: conda + name: propcache + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 52484 + timestamp: 1733391993461 +- kind: conda + name: propcache + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 48225 + timestamp: 1733392308901 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312h2ec8cdc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 + md5: 586bead4a9dfa46faf88deb7d3a742bb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 464548 + timestamp: 1728669645013 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312h6f74592_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf + md5: 4b9b22bd7c53d938b207f9d0f79db183 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 472764 + timestamp: 1728669483611 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312hf02c72a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 + md5: 6fda46c82abd0a080ca33de7d16ca877 + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 447369 + timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- kind: conda + name: pulseaudio-client + version: '17.0' + build: h729494f_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 766184 + timestamp: 1705690164726 +- kind: conda + name: pulseaudio-client + version: '17.0' + build: hb77b528_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h1f38498_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25375 + timestamp: 1732610892198 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25213 + timestamp: 1732610785600 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h8025657_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25374 + timestamp: 1732611006864 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312h01725c0_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 4612916 + timestamp: 1732610377259 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312h66f7834_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 + depends: + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 4406662 + timestamp: 1732610939832 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312hc40f475_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec + depends: + - __osx >=11.0 + - libarrow 18.1.0.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 3909116 + timestamp: 1732610863261 +- kind: conda + name: pycparser + version: '2.22' + build: pyh29332c3_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- kind: conda + name: pydantic + version: 2.10.3 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.1 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 317037 + timestamp: 1733316963547 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1635156 + timestamp: 1732254225040 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1503747 + timestamp: 1732254331303 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312hcd83bfe_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 1449057 + timestamp: 1732254359451 +- kind: conda + name: pydantic-settings + version: 2.6.1 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 + md5: 412f950a65ceea20b06263f65d689f6b + depends: + - pydantic >=2.7.0 + - python >=3.8 + - python-dotenv >=0.21.0 + license: MIT + license_family: MIT + size: 30618 + timestamp: 1730473755879 +- kind: conda + name: pygame + version: 2.6.1 + build: py312h4fcb14b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b + md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2984508 + timestamp: 1727636750824 +- kind: conda + name: pygame + version: 2.6.1 + build: py312hb14fe3b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 + md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2932509 + timestamp: 1727636775263 +- kind: conda + name: pygame + version: 2.6.1 + build: py312hb2c8110_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f + md5: f4a1a0e1e2a435699366317ffeabd1bc + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2979554 + timestamp: 1727636776938 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 876700 + timestamp: 1733221731178 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312h0bf5046_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 + md5: 798f42d9bfdf125dc80ffbec0e96e0b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 182021 + timestamp: 1728714164706 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 + md5: 5274663cb05dfbe316db50af6da4389f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 183141 + timestamp: 1728714267954 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha55dd90_7 + build_number: 7 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- kind: conda + name: python + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13760816 + timestamp: 1733407890896 +- kind: conda + name: python + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- kind: conda + name: python + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 12998673 + timestamp: 1733408900971 +- kind: conda + name: python-dateutil + version: 2.9.0.post0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- kind: conda + name: python-json-logger + version: 2.0.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- kind: conda + name: python-multipart + version: 0.0.19 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27768 + timestamp: 1733323160772 +- kind: conda + name: python-tzdata + version: '2024.2' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 142235 + timestamp: 1733235414217 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h024a12e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 21765 + timestamp: 1725272382968 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h52516f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 + md5: 591c4ae6d8338dfd07b951e00433a405 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 23589 + timestamp: 1725273317965 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 23162 + timestamp: 1725272139519 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h024a12e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa + md5: 549e5930e768548a89c23f595dac5a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 206553 + timestamp: 1725456256213 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312hb2c0f52_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c + md5: dc5de424f7dbb9772da720dbb81317b2 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 199141 + timestamp: 1725456356043 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312h2427ae1_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 371730 + timestamp: 1728644030875 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hbf22597_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 378126 + timestamp: 1728642454632 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hf8a1cbd_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 + md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + depends: + - __osx >=11.0 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 361674 + timestamp: 1728642457661 +- kind: conda + name: rav1e + version: 0.6.6 + build: h1d8f897_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + sha256: 093f21277dc5763cf0397e016e8291c2b796926ebbb173428dc9cdf5d012f328 + md5: 12c850a42b1ad1ed46a284a93959ee6a + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 14347236 + timestamp: 1694329141875 +- kind: conda + name: rav1e + version: 0.6.6 + build: h69fbcac_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + sha256: be6174970193cb4d0ffa7d731a93a4c9542881dbc7ab24e74b460ef312161169 + md5: e309ae86569b1cd55a0285fa4e939844 + license: BSD-2-Clause + license_family: BSD + size: 1526706 + timestamp: 1694329743011 +- kind: conda + name: rav1e + version: 0.6.6 + build: he8a937b_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f + md5: 77d9955b4abddb811cb8ab1aa7d743e4 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 15423721 + timestamp: 1694329261357 +- kind: conda + name: re2 + version: 2024.07.02 + build: h2d3a13d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c + md5: 83f4e47229834c895a92c18383e1cd9d + depends: + - libre2-11 2024.07.02 h18dbdb1_1 + license: BSD-3-Clause + license_family: BSD + size: 26747 + timestamp: 1728778986331 +- kind: conda + name: re2 + version: 2024.07.02 + build: h77b4e00_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 + md5: 01093ff37c1b5e6bf9f17c0116747d11 + depends: + - libre2-11 2024.07.02 hbbce691_1 + license: BSD-3-Clause + license_family: BSD + size: 26665 + timestamp: 1728778975855 +- kind: conda + name: re2 + version: 2024.07.02 + build: hcd0e937_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 + md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + depends: + - libre2-11 2024.07.02 h2348fd5_1 + license: BSD-3-Clause + license_family: BSD + size: 26860 + timestamp: 1728779123653 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h8fc344f_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- kind: conda + name: readline + version: '8.2' + build: h92ec313_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- kind: conda + name: regex + version: 2024.11.6 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- kind: conda + name: regex + version: 2024.11.6 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- kind: conda + name: regex + version: 2024.11.6 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- kind: conda + name: rich + version: 13.9.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- kind: conda + name: s2n + version: 1.5.9 + build: h0fd0ee4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda + sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 + md5: f472432f3753c5ca763d2497e2ea30bf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 355568 + timestamp: 1731541963573 +- kind: conda + name: s2n + version: 1.5.9 + build: h636ded1_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda + sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 + md5: bf4f84136d9ddb7be1855754a9ac4bb9 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 352546 + timestamp: 1731542018427 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda + sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 + md5: 3b87a00bcaab069172d6cef8124b7142 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 402547 + timestamp: 1725632183154 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda + sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 + md5: 82ef253c37308b082a478fb92924cad6 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 400284 + timestamp: 1725632278147 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312he431725_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda + sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e + md5: ccb978cf1e3151c25a44c4ae65c1f20e + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 353606 + timestamp: 1725632294079 +- kind: conda + name: sdl2 + version: 2.30.10 + build: h63c27ac_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c + md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pulseaudio-client >=17.0,<17.1.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: Zlib + size: 1352990 + timestamp: 1733624788165 +- kind: conda + name: sdl2 + version: 2.30.10 + build: h93e764a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda + sha256: 8f03f2abcb4227e95d19b28124e0a5428f634b084b92ab91f3af7c825b626403 + md5: bcbf24da778bbdd20b09cf6ed52cefc2 + depends: + - libgcc >=13 + - libstdcxx >=13 + - pulseaudio-client >=17.0,<17.1.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: Zlib + size: 1277076 + timestamp: 1733624829558 +- kind: conda + name: sdl2 + version: 2.30.10 + build: h994913f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda + sha256: 7ff3167b6482c5fe7389c6c1836343c280a0eeb160524888e661f0f991708bd8 + md5: 4001ae6f1b1886583e82ab0dac5b575b + depends: + - __osx >=11.0 + - libcxx >=18 + license: Zlib + size: 1251116 + timestamp: 1733624861414 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: h06ee604_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea + md5: 65e113270b460dcdfc4dc0a80bb3d11c + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 152110 + timestamp: 1716857107234 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: h376e2e1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a + md5: 247d2c5a873901ef51f378c69a2c708e + depends: + - __osx >=11.0 + - libavif16 >=1.0.4,<2.0a0 + - libcxx >=16 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 118041 + timestamp: 1716857215118 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: hd95cb85_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 + md5: 45fbcda052d64b07fa601d965a41cb69 + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 151138 + timestamp: 1716858240454 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h422cae6_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 + md5: 75e56f84030bd1244d8bff3c55e8418e + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 238285 + timestamp: 1695761803447 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h4fe3bdc_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 + md5: b92222911d46f08faa583df51191bd7f + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 188504 + timestamp: 1695762176058 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h8830914_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 + md5: 1a2b60be4d860a0c419a87176c85c3ad + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 202966 + timestamp: 1695761744535 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: h08b1b5d_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda + sha256: 7b44fd7f931c8b2fc24bf79fbad29fd308af56a5ee1b50aab41324654b89bd91 + md5: 71f8250e3692862116dd14104579c85c + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 61752 + timestamp: 1719636090403 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: h680d130_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda + sha256: b36431de3132ea01d61d604d03e38190ccc797053c1c566f74a8cd56f291bee8 + md5: 142c77bdcae19d1c2387ff44a1f3ded0 + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 54202 + timestamp: 1719637807412 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: hda0f12e_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda + sha256: 5b331bcf57ae337b9f62ec59c72f5a98d659f8ef9b8346896c2475a6b9ce6ee3 + md5: 1d6211311356539d7dd9c75c40400650 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 44468 + timestamp: 1719636195399 +- kind: conda + name: setuptools + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 774252 + timestamp: 1732632769210 +- kind: conda + name: shellingham + version: 1.5.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- kind: conda + name: six + version: 1.17.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- kind: conda + name: snappy + version: 1.2.1 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- kind: conda + name: snappy + version: 1.2.1 + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- kind: conda + name: snappy + version: 1.2.1 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- kind: conda + name: sniffio + version: 1.3.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- kind: conda + name: sse-starlette + version: 2.1.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 + md5: 3918255c942c242ed5599e10329e8d0e + depends: + - anyio + - python >=3.8 + - starlette + - uvicorn + license: BSD-3-Clause + license_family: BSD + size: 14712 + timestamp: 1722520112550 +- kind: conda + name: starlette + version: 0.41.3 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 + depends: + - anyio >=3.4.0,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 58838 + timestamp: 1733344472634 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f + md5: 355898d24394b2af353eb96358db9fdd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 2746291 + timestamp: 1730246036363 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 + md5: efb60b536bbf64772929b57f6b30298b + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 1796731 + timestamp: 1730246027014 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: hf24288c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f + md5: 114c33e9eec335a379c9ee6c498bb807 + depends: + - __osx >=11.0 + - libcxx >=17 + license: BSD-2-Clause + license_family: BSD + size: 1387330 + timestamp: 1730246134730 +- kind: conda + name: tk + version: 8.6.13 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- kind: conda + name: tk + version: 8.6.13 + build: h5083fa2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: tokenizers + version: 0.21.0 + build: py312h8360d73_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- kind: conda + name: tokenizers + version: 0.21.0 + build: py312ha0d6ea1_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- kind: conda + name: tokenizers + version: 0.21.0 + build: py312hf3e4074_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- kind: conda + name: tornado + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- kind: conda + name: tqdm + version: 4.67.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c + depends: + - colorama + - python >=3.7 + license: MPL-2.0 or MIT + size: 89484 + timestamp: 1732497312317 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- kind: conda + name: transformers + version: 4.47.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.8 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3721837 + timestamp: 1733708797762 +- kind: conda + name: typer + version: 0.15.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 + depends: + - python >=3.9 + - typer-slim-standard 0.15.1 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 56175 + timestamp: 1733408582623 +- kind: conda + name: typer-slim + version: 0.15.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db + depends: + - click >=8.0.0 + - python >=3.9 + - typing_extensions >=3.7.4.3 + constrains: + - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 + license: MIT + license_family: MIT + size: 43592 + timestamp: 1733408569554 +- kind: conda + name: typer-slim-standard + version: 0.15.1 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 + depends: + - rich + - shellingham + - typer-slim 0.15.1 pyhd8ed1ab_0 + license: MIT + license_family: MIT + size: 49531 + timestamp: 1733408570063 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- kind: conda + name: tzdata + version: 2024b + build: hc8b5060_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + size: 122354 + timestamp: 1728047496079 +- kind: conda + name: urllib3 + version: 2.2.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 98077 + timestamp: 1733206968917 +- kind: conda + name: uvicorn + version: 0.32.1 + build: pyh31011fe_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 49340 + timestamp: 1733332048141 +- kind: conda + name: uvicorn-standard + version: 0.32.1 + build: h31011fe_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 + depends: + - __unix + - httptools >=0.5.0 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.32.1 pyh31011fe_1 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7094 + timestamp: 1733332049165 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312h0bf5046_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312hb2c0f52_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 409700 + timestamp: 1732689603044 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 404235 + timestamp: 1732689685476 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312hcd83bfe_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 356744 + timestamp: 1732689860624 +- kind: conda + name: websockets + version: '14.1' + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 + md5: a79f7ce618bd0a9f4c00c59a03570fcd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 242145 + timestamp: 1731498716195 +- kind: conda + name: websockets + version: '14.1' + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c + md5: 7e2a0ef2a1a87f88f9745f9c7059186e + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 242912 + timestamp: 1731498811466 +- kind: conda + name: websockets + version: '14.1' + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f + md5: 89b79a9baa7db46ce21f5738a5a3dfda + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 243131 + timestamp: 1731498944076 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 63807 + timestamp: 1732523690292 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 64783 + timestamp: 1732523806 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + license_family: BSD + size: 61043 + timestamp: 1732523852129 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: h57736b2_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda + sha256: 525f197136d0c136dcba68b16d8f3636f27be111d677b2a06d8b99cf3f45ba4a + md5: 99a9c8245a1cc6dacd292ffeca39425f + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 60151 + timestamp: 1727533134400 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda + sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 + md5: 19608a9656912805b2b9a2f6bd257b04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 58159 + timestamp: 1727531850109 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: hbac51e1_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda + sha256: 3d3c78a2e2a915d96b8bf8a670ba91e5abba50f55dc3ff699d345c958118e94c + md5: 18655ac9fc6624db89b33a89fed51c5f + depends: + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 28357 + timestamp: 1727635998392 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: he73a12e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c + md5: 05a8ea5f446de33006171a7afe6ae857 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 27516 + timestamp: 1727634669421 +- kind: conda + name: xorg-libx11 + version: 1.8.10 + build: h4f16b4b_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 + md5: 125f34a17d7b4bea418a83904ea82ea6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + size: 837524 + timestamp: 1733324962639 +- kind: conda + name: xorg-libx11 + version: 1.8.10 + build: hca56bd8_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 + md5: 6e3e980940b26a060e553266ae0181a9 + depends: + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + size: 858427 + timestamp: 1733325062374 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- kind: conda + name: xorg-libxext + version: 1.3.6 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 + md5: bd1e86dd8aa3afd78a4bfdb4ef918165 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 50746 + timestamp: 1727754268156 +- kind: conda + name: xorg-libxext + version: 1.3.6 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 20289 + timestamp: 1727796500830 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda + sha256: 7862c148e87eb8da9c09aafec22bd63bbd1ee222e1437e1df923f1ff838f60e4 + md5: eef57c0c07175e97d976c2cdfd235c43 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 38333 + timestamp: 1733755940446 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda + sha256: a2f533fe2374789413a9dfa1369322573910f4b010fd24386cdd1c5cd977a087 + md5: eef3132295d92678c17ffc8b114b8371 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 37638 + timestamp: 1733755897245 +- kind: conda + name: xxhash + version: 0.8.2 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b + md5: bb9faf6857108a9f62ebb4dab6ef05da + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 102442 + timestamp: 1689951682147 +- kind: conda + name: xxhash + version: 0.8.2 + build: hb547adb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e + md5: 144cd3b88706507f332f5eb5fb83a33b + license: BSD-2-Clause + license_family: BSD + size: 97593 + timestamp: 1689951969732 +- kind: conda + name: xxhash + version: 0.8.2 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- kind: conda + name: xz + version: 5.6.3 + build: h2dbfc1b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + sha256: b497245803e6753a9d4fe4014eb71fcb94e3fe1c7be9cc54aefcd0d02266b67f + md5: 0ed81af8ecd07369f2ce2533fd904a25 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + - liblzma-devel 5.6.3 h86ecc28_1 + - xz-gpl-tools 5.6.3 h2dbfc1b_1 + - xz-tools 5.6.3 h86ecc28_1 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23495 + timestamp: 1733409682598 +- kind: conda + name: xz + version: 5.6.3 + build: hbcc6ac9_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + sha256: 9cef529dcff25222427c9d90b9fc376888a59e138794b4336bbcd3331a5eea22 + md5: 62aae173382a8aae284726353c6a6a24 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + - liblzma-devel 5.6.3 hb9d3cd8_1 + - xz-gpl-tools 5.6.3 hbcc6ac9_1 + - xz-tools 5.6.3 hb9d3cd8_1 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23477 + timestamp: 1733407455801 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + sha256: 025f53e2f269b55ab46a627afa47e7288e5199c9d6752ac079c91c22d2a18c07 + md5: 5987f52add76f6fe246fcb2a554ee206 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33218 + timestamp: 1733409548701 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + sha256: 4e104b7c75c2f26a96032a1c6cda51430da1dea318c74f9e3568902b2f5030e1 + md5: f529917bab7862aaad6867bf2ea47a99 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33354 + timestamp: 1733407444641 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda + sha256: c4d136b10ba6d2afe133bc5bc2c6db6ec336793932b6ff1e166b5b1790abe1c5 + md5: 5d1bedf30d9b471b6f880351cec41bf0 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + license: 0BSD AND LGPL-2.1-or-later + size: 95924 + timestamp: 1733409414633 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda + sha256: 6e80f838096345c35e8755b827814c083dd0274594006d6f76bff71bc969c3b8 + md5: de3f31a6eed01bc2b8c7dcad07ad9034 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + license: 0BSD AND LGPL-2.1-or-later + size: 90354 + timestamp: 1733407433418 +- kind: conda + name: yaml + version: 0.2.5 + build: h3422bc3_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- kind: conda + name: yaml + version: 0.2.5 + build: h7f98852_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- kind: conda + name: yaml + version: 0.2.5 + build: hf897c2e_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- kind: conda + name: yarl + version: 1.18.3 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 151393 + timestamp: 1733428897813 +- kind: conda + name: yarl + version: 1.18.3 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 150004 + timestamp: 1733429056665 +- kind: conda + name: yarl + version: 1.18.3 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 141556 + timestamp: 1733429104990 +- kind: conda + name: zeromq + version: 4.3.5 + build: h3b0a872_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- kind: conda + name: zeromq + version: 4.3.5 + build: h5efb499_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- kind: conda + name: zeromq + version: 4.3.5 + build: hc1bb282_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- kind: conda + name: zipp + version: 3.21.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- kind: conda + name: zlib + version: 1.3.1 + build: h8359307_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- kind: conda + name: zlib + version: 1.3.1 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- kind: conda + name: zlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h15fbf35_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hb698573_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hef9b889_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- kind: conda + name: zstd + version: 1.5.6 + build: h02f22dd_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- kind: conda + name: zstd + version: 1.5.6 + build: hb46c0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/examples/life/mojoproject.toml b/examples/life/mojoproject.toml new file mode 100644 index 0000000000..2d38853796 --- /dev/null +++ b/examples/life/mojoproject.toml @@ -0,0 +1,19 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Introduction to Mojo Tutorial: Conway's Game of Life" +name = "life" +platforms = ["osx-arm64", "linux-64", "linux-aarch64"] +version = "0.1.0" + +[dependencies] +max = "*" +python = "3.12.*" +pygame = ">=2.6.1,<3" + +[tasks] +lifev1 = "mojo run lifev1.mojo" +lifev2 = "mojo run lifev2.mojo" +main = "mojo run benchmark.mojo" +benchmark = "mojo run benchmark.mojo" +tests = "mojo test -I . test" diff --git a/examples/life/test/test_gridv1.mojo b/examples/life/test/test_gridv1.mojo new file mode 100644 index 0000000000..bded4cc2f5 --- /dev/null +++ b/examples/life/test/test_gridv1.mojo @@ -0,0 +1,75 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv1 import Grid +from testing import * + +var data4x4 = List( + List(0, 1, 1, 0), + List(1, 1, 0, 0), + List(0, 0, 1, 1), + List(1, 0, 0, 1), +) +var str4x4 = " ** \n** \n **\n* *" + + +def test_gridv1_init(): + grid = Grid(4, 4, data4x4) + assert_equal(4, grid.rows) + assert_equal(4, grid.cols) + for row in range(4): + assert_equal(data4x4[row], grid.data[row]) + + +def test_gridv1_index(): + grid = Grid(4, 4, data4x4) + for row in range(4): + for col in range(4): + assert_equal(data4x4[row][col], grid[row, col]) + grid[row, col] = 1 + assert_equal(1, grid[row, col]) + grid[row, col] = 0 + assert_equal(0, grid[row, col]) + + +def test_gridv1_str(): + grid = Grid(4, 4, data4x4) + grid_str = str(grid) + assert_equal(str4x4, grid_str) + + +def test_gridv1_evolve(): + data_gen2 = List( + List(0, 0, 1, 0), + List(1, 0, 0, 0), + List(0, 0, 1, 0), + List(1, 0, 0, 0), + ) + data_gen3 = List( + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + ) + + grid_gen1 = Grid(4, 4, data4x4) + + grid_gen2 = grid_gen1.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen2[row][col], grid_gen2[row, col]) + + grid_gen3 = grid_gen2.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen3[row][col], grid_gen3[row, col]) diff --git a/examples/life/test/test_gridv2.mojo b/examples/life/test/test_gridv2.mojo new file mode 100644 index 0000000000..1987272743 --- /dev/null +++ b/examples/life/test/test_gridv2.mojo @@ -0,0 +1,84 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv2 import Grid +from testing import * + +var data4x4 = List( + List(0, 1, 1, 0), + List(1, 1, 0, 0), + List(0, 0, 1, 1), + List(1, 0, 0, 1), +) +var str4x4 = " ** \n** \n **\n* *" + + +def grid4x4() -> Grid[4, 4]: + grid = Grid[4, 4]() + for row in range(4): + for col in range(4): + grid[row, col] = data4x4[row][col] + return grid + + +def test_gridv2_init(): + grid = Grid[4, 4]() + assert_equal(4, grid.rows) + assert_equal(4, grid.cols) + for row in range(4): + for col in range(4): + assert_equal(0, grid[row, col]) + + +def test_gridv2_index(): + grid = grid4x4() + for row in range(4): + for col in range(4): + assert_equal(data4x4[row][col], grid[row, col]) + grid[row, col] = 1 + assert_equal(1, grid[row, col]) + grid[row, col] = 0 + assert_equal(0, grid[row, col]) + + +def test_gridv2_str(): + grid = grid4x4() + grid_str = str(grid) + assert_equal(str4x4, grid_str) + + +def test_gridv2_evolve(): + data_gen2 = List( + List(0, 0, 1, 0), + List(1, 0, 0, 0), + List(0, 0, 1, 0), + List(1, 0, 0, 0), + ) + data_gen3 = List( + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + ) + + grid_gen1 = grid4x4() + + grid_gen2 = grid_gen1.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen2[row][col], grid_gen2[row, col]) + + grid_gen3 = grid_gen2.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen3[row][col], grid_gen3[row, col]) diff --git a/examples/magic.lock b/examples/magic.lock index 3bdbb1c07e..b0d6852f57 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,26 +8,25 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -36,49 +35,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,74 +103,79 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -176,66 +184,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py311h9e33e62_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py311h58d527c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -244,50 +252,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -295,6 +306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -309,74 +321,79 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -385,65 +402,65 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py311h5487e9b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py311h0ca61a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -452,47 +469,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -500,7 +521,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -512,70 +534,75 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py311h481aa64_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -584,41 +611,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py311h481aa64_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -670,27 +698,28 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 - build: pyhd8ed1ab_0 + version: 2.4.4 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py311h2dc5d0c_0.conda - sha256: 0efe583d525124b23b7a0a337c568b1aeea5bc74c6979891f940d5cadd0d757a - md5: 77ddf78fa8be87f8881b3475854cfaeb + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda + sha256: 7ad0ca5ba77e058b442f0c39c708c88f2dac53b8769737701ee57964d51bdc46 + md5: 2665cc7da1c554be586963d50d1ad612 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -705,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 917497 - timestamp: 1732088503491 + size: 920988 + timestamp: 1733124865570 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py311h4921393_0.conda - sha256: 293880cd214829d6f8682d054252278aeb05d9a41818412a28a9531d06cad9b1 - md5: 0a7e2e8dfc4e240fb7a63ea9130840af + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda + sha256: 4e57bf5250304eec98769921788c7be76d146f21edf85ed890318991a8d9e2e7 + md5: b7e219c251ece66ccd7058af6d6fda10 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -729,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 875034 - timestamp: 1732088602971 + size: 880101 + timestamp: 1733124988232 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py311h58d527c_0.conda - sha256: c17fd83d67f1a44ec87cb2f0c319132d2f4e69ed5c95d3000bafee08f4c629f7 - md5: 78b0ebe69ae38fc31ef77972d829b149 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda + sha256: 67df99e0e0e300f0ae86306f25275bd4728af2e6f852e16f6cc1b7cdb83352ae + md5: 6419796f7b0964c80dd78f523e4deae0 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -753,197 +782,181 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909847 - timestamp: 1732088559603 + size: 911710 + timestamp: 1733124981752 - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb - depends: - - python >=3.8 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -951,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1048,294 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.5 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.5 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.5 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1436,95 +1449,94 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.7 + build: h318f0b1_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + version: 0.29.7 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + version: 0.29.7 + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + version: 1.11.458 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1532,54 +1544,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h8f08b23_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + version: 1.11.458 + build: hac138a2_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + version: 1.11.458 + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1982,47 +1995,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -2129,187 +2144,195 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2323,8 +2346,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2346,17 +2369,65 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2410,19 +2481,20 @@ packages: timestamp: 1729699703032 - kind: conda name: fsspec - version: 2024.9.0 - build: pyhff2d567_0 + version: 2024.10.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2539,51 +2611,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2607,13 +2682,12 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py311h460d6c5_1 - build_number: 1 + version: 0.6.4 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h460d6c5_1.conda - sha256: 00c5c6cdc39ab88bcdf5484e7080e899bb8630e6fc62f76b954acb34dccc8d15 - md5: 1bb0af015844a74ded9a9fdc8ffcd87e + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda + sha256: 47af7c9e41ea0327f12757527cea28c430ef84aade923d81cc397ebb2bf9eb28 + md5: 4aca39fe9eb4224026c907e1aa8156fb depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -2621,17 +2695,16 @@ packages: - python_abi 3.11.* *_cp311 license: MIT license_family: MIT - size: 76226 - timestamp: 1726688457939 + size: 84562 + timestamp: 1732707884099 - kind: conda name: httptools - version: 0.6.1 - build: py311h9ecbd09_1 - build_number: 1 + version: 0.6.4 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h9ecbd09_1.conda - sha256: fe5d1d18c0013a7825820fadcb282d1005fd5eef4883d64d9a7962dcf3cbf020 - md5: edb0d1cdec377d192bb242115c52e029 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda + sha256: 1775083ed07111778559e9a0b47033c13cbe6f1c489eaceff204f6cf7a9e02da + md5: c16a94f3d0c6a2a495b3071cff3f598d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2639,17 +2712,16 @@ packages: - python_abi 3.11.* *_cp311 license: MIT license_family: MIT - size: 90869 - timestamp: 1726688211390 + size: 99955 + timestamp: 1732707791797 - kind: conda name: httptools - version: 0.6.1 - build: py311ha879c10_1 - build_number: 1 + version: 0.6.4 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py311ha879c10_1.conda - sha256: 8cb9fcc101f56093e0c46a0a05dca72e4a5775d83abe847c23549f38f488e166 - md5: 1ad0580eb05e91a0f84a2cdf03846acf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda + sha256: f33cd0bb6db6bf8ad44bb908a0befe5564921a570c4c39784c518be81ddd6ab0 + md5: fd2dfd6afe96a5843af75eb4f085ed56 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -2657,37 +2729,36 @@ packages: - python_abi 3.11.* *_cp311 license: MIT license_family: MIT - size: 90898 - timestamp: 1726688305259 + size: 98813 + timestamp: 1732707937311 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2699,24 +2770,24 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2732,21 +2803,36 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -2766,40 +2852,42 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -2901,6 +2989,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2933,6 +3068,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2993,32 +3172,34 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + version: 18.1.0 + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3026,43 +3207,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow - version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + version: 18.1.0 + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3070,25 +3249,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow - version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 + version: 18.1.0 + build: ha2aff55_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3105,7 +3284,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3113,190 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 578174 + timestamp: 1733607685962 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - - libarrow 18.0.0 hf19f309_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 561495 + timestamp: 1733607973097 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + version: 18.1.0 + build: h3644d33_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + version: 18.1.0 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + version: 18.1.0 + build: hf3d3107_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -3668,18 +3847,61 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4354,6 +4576,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4411,6 +4679,49 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4561,62 +4872,105 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + version: 18.1.0 + build: h34a048e_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + version: 18.1.0 + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1204859 + timestamp: 1733607834047 - kind: conda - name: libparquet - version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4774,97 +5128,95 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -4981,48 +5333,121 @@ packages: size: 324342 timestamp: 1727206096912 - kind: conda - name: libutf8proc - version: 2.8.0 - build: h166bdaf_0 + name: libtiff + version: 4.7.0 + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 370387 + timestamp: 1733443310502 +- kind: conda + name: libtiff + version: 4.7.0 + build: hc4654cb_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 101070 - timestamp: 1667316029302 + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 429018 + timestamp: 1733443013288 +- kind: conda + name: libtiff + version: 4.7.0 + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc - version: 2.8.0 - build: h1a8c8d9_0 + version: 2.9.0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: h4e544f5_0 + version: 2.9.0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 81526 + timestamp: 1732868466862 - kind: conda - name: libuuid - version: 2.38.1 + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 +- kind: conda + name: libuuid + version: 2.38.1 build: h0b41bf4_0 subdir: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda @@ -5091,6 +5516,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5122,60 +5645,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5230,19 +5755,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception - size: 281554 - timestamp: 1732102484807 + license_family: APACHE + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5290,27 +5816,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py311h2dc5d0c_0 + build: py311h2dc5d0c_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - sha256: 364a0d55abc4c60bc575c81a4acc9e98ea27565147d4d4dc672bad4b2d069710 - md5: 15e4dadd59e93baad7275249f10b9472 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5320,16 +5848,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25591 - timestamp: 1729351519326 + size: 25354 + timestamp: 1733219879408 - kind: conda name: markupsafe version: 3.0.2 - build: py311h56c23cb_0 + build: py311h4921393_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 - md5: be48a4cc178a91af3b1ccd58c14efde2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5339,16 +5868,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25180 - timestamp: 1729351536390 + size: 24976 + timestamp: 1733219849253 - kind: conda name: markupsafe version: 3.0.2 - build: py311ha09ea12_0 + build: py311ha09ea12_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - sha256: 8714908e7190f362bc04636e6ff28ae8a3c008bbc92b126839ce7130c0c975f5 - md5: f40833364f9c3e847cc35a94c055f5c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 + md5: eb3611be0cc15845bf6e5075adc520ee depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -5357,87 +5887,89 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25805 - timestamp: 1729352296161 + size: 25787 + timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: 8f721503a2783059ab961f593090de817732548a8650add618fb188d3877149a - md5: 54067fc2b06a754d97c550db3ffdee5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 94d3d821551ee202ef270d4fbce8003f35f33d0cc98a92b17f1739caa5623812 + md5: 57061ee2198633af94d4713cdba1ebd7 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5450,25 +5982,27 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137374544 - timestamp: 1732136835518 + size: 123763299 + timestamp: 1733721408721 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: 2c0f106fa18ad49077cc912c2598385ac2c05ff542390580493602e12d419706 - md5: d7a170f9544a6a9bcbdf3a4c373c13f5 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 90b94a041502fd79e408c5ab5c9108e6411228fc761c11eab0a568d4a193ed0c + md5: 920b32c37e877ed3073f6ad94f614e8b depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5481,25 +6015,27 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140956474 - timestamp: 1732136899205 + size: 127444260 + timestamp: 1733721396385 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: ab5ad3eb6fdfef265488ccc4bd383d7dfe90e3e2f03661d1190f0fef51fff862 - md5: 4cab64a3872f254d847eabbe968ff0c3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 10ee1c9e5cc1b176238d018234979c15ec95aa8a9795d2917235bc6eda4c730f + md5: 9fb0abe3fe34b82bf8937091140967f0 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5512,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125972094 - timestamp: 1732137063648 + size: 112461801 + timestamp: 1733721567997 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5532,40 +6068,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -5622,76 +6159,75 @@ packages: timestamp: 1729065776220 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h460d6c5_1 + version: 0.70.15 + build: py311h459d7ec_1 build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - sha256: 8cf03e51901ed44f143f1ad380968a547651790e2dbb678a90bc2f49fd5cd405 - md5: 7851a81d1c0c85a4336fcdb886ed0651 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda + sha256: eca27e6fb5fb4ee73f04ae030bce29f5daa46fea3d6abdabb91740646f0d188e + md5: cebd02a02b199549a57e0d70aed7e2dc depends: - - __osx >=11.0 - - dill >=0.3.8 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 347445 - timestamp: 1724954943593 + size: 339543 + timestamp: 1695459055911 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h9ecbd09_1 + version: 0.70.15 + build: py311hcd402e7_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - sha256: 54120261b227080f1eee580e7e48aba2951769f8a1735592df9e427cd5c99df0 - md5: 335ef38862ce33e7cd4547c8d698c7ae + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda + sha256: 126190f2f981ea84cbf891a2ff6ff52e1bdd681c48392db40b79da0e9e786af8 + md5: bd07035dd460220466bcab62cefced4d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 348294 - timestamp: 1724954751583 + size: 339518 + timestamp: 1695459050286 - kind: conda name: multiprocess - version: 0.70.16 - build: py311ha879c10_1 + version: 0.70.15 + build: py311heffc1b2_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - sha256: 5ae2f030001fc628a80f8fa0d3229e98e771074d57035307735ae2228f22f8bc - md5: 660b134f348dcc4cc18268b26751a65a + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda + sha256: 1bf6f7bd6b3515f26fbd977ad26bfb7012516fb3854fe9f2d715a6fbbf28a5de + md5: 68b2ed99d42d6eea3cecd25b6a151cc9 depends: - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 349109 - timestamp: 1724954811644 + size: 339630 + timestamp: 1695459263809 - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -5802,6 +6338,59 @@ packages: license_family: BSD size: 6652352 timestamp: 1707226297967 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -5851,20 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -5879,6 +6469,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -5900,6 +6491,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -5920,63 +6512,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -5990,6 +6525,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6008,38 +6544,26 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - size: 81534 - timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - size: 19241 - timestamp: 1732081026829 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -6107,19 +6631,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -6195,57 +6719,132 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 +- kind: conda + name: pillow + version: 11.0.0 + build: py311h3894ae9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda + sha256: 6d5307fed000e6b72b98d54dd1fea7b155f9a6453476a937522b89dde7b3d673 + md5: a9a4adae1c4178f50ac3d1fd5d64bb85 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41856994 + timestamp: 1729066060042 +- kind: conda + name: pillow + version: 11.0.0 + build: py311h49e9ac3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda + sha256: f0f792596ae99cba01f829d064058b1e99ca84080fc89f72d925bfe473cfc1b6 + md5: 2bd3d0f839ec0d1eaca817c9d1feb7c2 + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 42421065 + timestamp: 1729065780130 +- kind: conda + name: pillow + version: 11.0.0 + build: py311hb2a0dd2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda + sha256: 19b3a8399b7f7d5c80c5bcef17881e7036826fc739e13ccd97d21b0212408827 + md5: 6454f9200cf6d04192bbdee9ab6a9761 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41973113 + timestamp: 1729067980140 - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py311h460d6c5_2 - build_number: 2 + version: 0.2.1 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - sha256: 7e6a656b09d494f0623c8bd0969195d1cd3f62a2ab5a2474a667c88e21cca971 - md5: 8fb75727dfbab541ece9542718cc30f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda + sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 + md5: f0599cb37e2cf8710eaae4b4d85f7759 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6253,17 +6852,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 48222 - timestamp: 1728546126843 + size: 48002 + timestamp: 1733392010497 - kind: conda name: propcache - version: 0.2.0 - build: py311h9ecbd09_2 - build_number: 2 + version: 0.2.1 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - sha256: bc2fbbc3f494884b62f288db2f6d53f57a9a1129cc95138780abdb783c487bc4 - md5: 85a56dd3b692fb5435de1e901354b5b8 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda + sha256: 3323f2ed707a9fe89ee142c9ea1adef0cf8f75fb005ec414b50e8cc0381b57f4 + md5: 20d1c4ad24ac50f0941c63e81e4a86b7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6271,17 +6869,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53716 - timestamp: 1728545855994 + size: 53315 + timestamp: 1733391912538 - kind: conda name: propcache - version: 0.2.0 - build: py311ha879c10_2 - build_number: 2 + version: 0.2.1 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - sha256: a572848e9540b4d57064adb3db05c6b89deb0d99dab90b82c5cbc7f4f45811fe - md5: 5e6f032fcfccdafc6b2cb5cd87f4d361 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda + sha256: 9d6ed4a29efa5ea64b50097c450429944f116d06d883d23e5b5493eab0c68393 + md5: 15d3518828453960069fd7874fe88468 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6289,8 +6886,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53090 - timestamp: 1728546060903 + size: 52970 + timestamp: 1733392060312 - kind: conda name: protobuf version: 5.28.2 @@ -6352,80 +6949,122 @@ packages: size: 472879 timestamp: 1728669387714 - kind: conda - name: pyarrow - version: 18.0.0 - build: py311h38be061_1 - build_number: 1 + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_1.conda - sha256: 4248bbc50c631c824d05b2a648ee7c650960d080aa4abc0f25336726d995b6fb - md5: eeda074d8e993dac2355fa8887320359 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py311h38be061_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda + sha256: 9cfd158a1bb76c4af1a51237a5c5db4a36b2e83bad625ddf6c2b65ee232c16ba + md5: 47b8624012486e05e66f6acf7267aa22 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 25157 - timestamp: 1731058869216 + size: 25199 + timestamp: 1732610760700 - kind: conda name: pyarrow - version: 18.0.0 - build: py311ha1ab1f8_1 - build_number: 1 + version: 18.1.0 + build: py311ha1ab1f8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_1.conda - sha256: 5f087472e5eb7577e97c030cbc527e1c24ee290f259379e8deabcd6a17838638 - md5: 342deac3c2230b86fdd97fafaf7d22ac - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda + sha256: c93f3ede66be0502b5b9afc5bc3fde50d6f8c3863d29b138ff5f536a116457f3 + md5: 7a3b822fa6abb937651bee20878f087a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 25371 - timestamp: 1731058530169 + size: 25322 + timestamp: 1732611121491 - kind: conda name: pyarrow - version: 18.0.0 - build: py311hfecb2dc_1 - build_number: 1 + version: 18.1.0 + build: py311hfecb2dc_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_1.conda - sha256: 3631ef62b30e84811b26cf737d3d04af39781789998c461f7c6f671488c007f6 - md5: b3992e5e32e9d0f698b97147115e0bfe - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda + sha256: 2af68c0d11cf480a043b213eb4d1e0908f3edff25dc418b9c55f1002f46dc45b + md5: b66ff73d40f84cca2d7a4f755b21d956 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 25398 - timestamp: 1731059252216 + size: 25373 + timestamp: 1732611450659 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311h4854187_1_cpu - build_number: 1 + version: 18.1.0 + build: py311h4854187_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_1_cpu.conda - sha256: 5009dceb335479761fe3efcc41aa4829cf924d19cb63dde74da08da30aff48aa - md5: 3c14bc71dda64e1eb6273a63b2561cc9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda + sha256: db147a0cc22b55ea3c35553b39336eb0392c33371f6efd7f9fb4efed2b728e34 + md5: 830a64ee7a65e588c7ea615be84db2e3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -6436,19 +7075,18 @@ packages: - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4589659 - timestamp: 1731058468008 + size: 4562010 + timestamp: 1732610600424 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311ha6d2531_1_cpu - build_number: 1 + version: 18.1.0 + build: py311ha6d2531_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_1_cpu.conda - sha256: 4c54d4caa850601acdd78576e3647cedf4f4b344e4ddcf34ff693a867b22e5dc - md5: 396789b43363c50fe20e2dd7bb7e492a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda + sha256: 3187321dc45106c2c87e5a70ab94ecbc0633f5b43caabcf173f4d372e5f6d8d8 + md5: 8cddcf0bb4b3e674ae6bbdda5266693f depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -6456,77 +7094,79 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 license: Apache-2.0 license_family: APACHE - size: 4446613 - timestamp: 1731058813821 + size: 4484447 + timestamp: 1732610567027 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311he04fa90_1_cpu - build_number: 1 + version: 18.1.0 + build: py311he04fa90_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_1_cpu.conda - sha256: 3b4bc16e3f044a4f0ac75955ddf17fb4fc4e39feef7e5af8ede834ffbf52e888 - md5: f1da706c05d2113a7a1a1d8d07a63c7d + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda + sha256: 4563e2d4f41b3874b89e8e2bdebf42588c1c819bd050ae858200f60e30bae860 + md5: 09b4a27f615d22f194466d8c274ef13e depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 3934172 - timestamp: 1731058505049 + size: 3974075 + timestamp: 1732611073316 - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.3 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py311h0ca61a2_0.conda - sha256: 05512c4ecab4e380194d48b830e1c30b432e3cc7bd7cd6690915b76079e6e6a1 - md5: e6913464018ba4ba9d3fea45e36a1e90 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda + sha256: 03794e4aa320059163ddeaa347cfec2dae2f5af9bcdbc0b1d7765e81523b43cb + md5: 86aee7900360de3d463d4014a8cef705 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6537,16 +7177,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1479857 - timestamp: 1726525384987 + size: 1503196 + timestamp: 1732254269904 - kind: conda name: pydantic-core - version: 2.23.4 - build: py311h481aa64_0 + version: 2.27.1 + build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py311h481aa64_0.conda - sha256: cfb1342c6363a01b1315ac8298a44e56f686d7e82cfdbb04d1ab156939f98ef1 - md5: 9d638548f9a18cab78220984c0fda22b + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda + sha256: fda69a0024647c988a1571a78f31d05cefb95c8580c7fea29106dc5e08b654fa + md5: 9a65f7d97aaa139bd8471429e192ac61 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6557,16 +7197,16 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1429587 - timestamp: 1726525496750 + size: 1451573 + timestamp: 1732254367639 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py311h9e33e62_0.conda - sha256: 3cdbe29c2b4aec34aabcf03cf2b34a6284563c03bdb43b63d204e6d9f6f0dbfc - md5: 5e24fd648b7926bec16e535efda533c2 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda + sha256: 0ae49448c55affa0e9df0e876d02aee77ad42678500a34679f9689bf3682000e + md5: e5192dfb2dae866470c3eec81dbe5727 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6577,8 +7217,8 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1616197 - timestamp: 1726525278048 + size: 1632797 + timestamp: 1732254154568 - kind: conda name: pydantic-settings version: 2.6.1 @@ -6599,18 +7239,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -6665,141 +7306,143 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python - version: 3.11.10 - build: h5d932e8_3_cpython - build_number: 3 + version: 3.11.11 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - sha256: 59e53e0773660c6e02209f7efc4e2e7918110153a3a11ae0660b4c2c898ac700 - md5: ce35c787630db2ac26327d64c15943e1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 15359622 - timestamp: 1729041715586 + size: 15234582 + timestamp: 1733407838276 - kind: conda name: python - version: 3.11.10 - build: hc51fdd5_3_cpython - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b - md5: 2a47a0061d7d3030e45b66d23f01d101 + version: 3.11.11 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 14598065 - timestamp: 1729042279642 + size: 30624804 + timestamp: 1733409665928 - kind: conda name: python - version: 3.11.10 - build: hc5c86c4_3_cpython - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - sha256: b7fa3bd48e3a3d30f65608e07759cefd27885c6388b3f612af85ce40282e6936 - md5: 9e1ad55c87368e662177661a998feed5 + version: 3.11.11 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 30543977 - timestamp: 1729043512711 + size: 14647146 + timestamp: 1733409012105 - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -6817,34 +7460,36 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 - build: pyhff2d567_0 + version: 0.0.19 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7226,42 +7871,44 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -7352,109 +7999,116 @@ packages: timestamp: 1725632204888 - kind: conda name: setuptools - version: 75.5.0 - build: pyhff2d567_0 + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyh6c4a22f_0 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -7476,20 +8130,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -7538,39 +8193,39 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py311h182c674_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_0.conda - sha256: d67d6c2e41455f278423e45e6a15b75178b72c74c1e5fc86bde11c6bb541b404 - md5: e921b17fbc6f84c8fcb541ad20f107dd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda + sha256: 231ecde88bb291437a8060e4eaee74d87318ee635b4ceac5d74fc82343f137d0 + md5: 7e9304388022ef7f7f21b94953a5181b depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2241843 - timestamp: 1730868701129 + size: 2264312 + timestamp: 1732734291587 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py311h5e37e04_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_0.conda - sha256: 4802838c34fbf96466e45dfebebe0c8d8f21feeaf2af83fd8843d289791e3f50 - md5: 4c258d740f87f7d158b2915256038d42 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda + sha256: 02fad918a39c9e10feedac2937e3bee619fa49707734ae478e0342a85784fb98 + md5: 833844038ba171a27678bf201c3f4c74 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -7578,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2365649 - timestamp: 1730868813351 + size: 2329972 + timestamp: 1732734458949 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py311h82b0fb8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_0.conda - sha256: 5dc6cb3757f6b5f74457c96db35f8f965b1aaa6964fae721f41de9f5150b8574 - md5: 7e573a11736155aa74ac0a04b3ce0cfc + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda + sha256: 8f2a22323b67a75d57192d37bb031fb44a51f013d3232f18a0df3c453ea68ab9 + md5: d1543e49d59c7537c7c97f6d70544b00 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -7599,52 +8254,49 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1918127 - timestamp: 1730869157744 + size: 1935264 + timestamp: 1732734431057 - kind: conda name: tornado - version: 6.4.1 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - sha256: bba4940ef7522c3b4ae6eacd296e5e110de3659f7e4c3654d4fc2bb213c2091c - md5: 8ba6d177509dc4fac7af09749556eed0 + version: 6.4.2 + build: py311h5487e9b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee + md5: fe331d12b7fccca2348a114c4742a0e0 depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 859139 - timestamp: 1724956356600 + size: 859892 + timestamp: 1732616872562 - kind: conda name: tornado - version: 6.4.1 - build: py311h5487e9b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py311h5487e9b_1.conda - sha256: 94c073f2c235a2a9fab3da325f5377637628fea82ec4f6c5df560a3f342bfa74 - md5: b21cdf6b47af11c86efb5870ee48c277 + version: 6.4.2 + build: py311h917b07b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 860132 - timestamp: 1724957323906 + size: 858954 + timestamp: 1732616142626 - kind: conda name: tornado - version: 6.4.1 - build: py311h9ecbd09_1 - build_number: 1 + version: 6.4.2 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - sha256: 21390d0c5708581959ebd89702433c1d06a56ddd834797a194b217f98e38df53 - md5: 616fed0b6f5c925250be779b05d1d7f7 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7652,47 +8304,48 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 856725 - timestamp: 1724956239832 + size: 855653 + timestamp: 1732616048886 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -7704,96 +8357,98 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer - version: 0.13.1 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.15.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b @@ -7809,65 +8464,66 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.0 + version: 0.32.1 build: pyh31011fe_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard - version: 0.32.0 + version: 0.32.1 build: h31011fe_1 build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -7924,13 +8580,12 @@ packages: timestamp: 1730214665776 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h0ca61a2_1 - build_number: 1 + version: 1.0.0 + build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py311h0ca61a2_1.conda - sha256: 2745a126ec7b90ea0ef79c7d6a5ea09d314bcbd14538195618caa1a55f2b4e4f - md5: ce9538fa1fb86bfdf458aaf513fdf3bb + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda + sha256: f47575a2e455d12bd0471a2447cb2a514d183ed84bbc12a2250a9ad87484b682 + md5: a1f03b837b9b1be1cff6765e3002e983 depends: - anyio >=3.0.0 - libgcc >=13 @@ -7941,17 +8596,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 400240 - timestamp: 1725347290339 + size: 405692 + timestamp: 1732689662727 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h481aa64_1 - build_number: 1 + version: 1.0.0 + build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py311h481aa64_1.conda - sha256: 30e96f05cd579b3a4f86378e2eddfc0caf62edd9b4938765d5dbfbbc262bf65f - md5: b3c447b6418c567f3726ade082f54f42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda + sha256: cf1514bb697ac6db69a1b9a3e43a8789054cf02df3baefa1a5ea946296552ca5 + md5: 2a2e657bc8ef45ccd757e432d81e209d depends: - __osx >=11.0 - anyio >=3.0.0 @@ -7962,17 +8616,16 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 345348 - timestamp: 1725347436809 + size: 357633 + timestamp: 1732689799347 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h9e33e62_1 - build_number: 1 + version: 1.0.0 + build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py311h9e33e62_1.conda - sha256: ad31508aba4c726e95949a66a65605146dbc8aaccce3091617162da87f857cdb - md5: 31c07a7fc0a2bf4a34808a686bf3de19 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda + sha256: a34479c60b23b7b9465aa547891d9e18bffec5b6e56e9f24634491bc71d3c5a5 + md5: 02aaa195aada560b5402a45e5bbece96 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -7983,8 +8636,8 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 395778 - timestamp: 1725347224229 + size: 409759 + timestamp: 1732689546491 - kind: conda name: websockets version: '14.1' @@ -8038,13 +8691,12 @@ packages: timestamp: 1731498790453 - kind: conda name: wrapt - version: 1.16.0 - build: py311h460d6c5_1 - build_number: 1 + version: 1.17.0 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h460d6c5_1.conda - sha256: 5667c48efd5e19e2754660293f00899dfd92b9228e19e7140cc46efcd0af8784 - md5: ff3535f6abd3ec8e0589ead32a8c86fc + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda + sha256: fff7f86570f0a3fd90878b75b552bafddb854e8f4d68a171cd427a13e9eb160c + md5: a56950191b7efa9406bbaff925173d20 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -8052,17 +8704,16 @@ packages: - python_abi 3.11.* *_cp311 license: BSD-2-Clause license_family: BSD - size: 60435 - timestamp: 1724958101626 + size: 62309 + timestamp: 1732524074190 - kind: conda name: wrapt - version: 1.16.0 - build: py311h9ecbd09_1 - build_number: 1 + version: 1.17.0 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h9ecbd09_1.conda - sha256: 426ee582e676e15a85846743060710fc4dbe4dd562b21d80d751694ffa263e41 - md5: 810ae646bcc50a017380336d874e4014 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda + sha256: 8e9a7a1a69d0d59b3cb0066fbdbf16dc7a0d9554ffc2a365e67eca72230ca3e8 + md5: 452e39fb544b1ec9cc6c5b2ac9c47efa depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8070,17 +8721,16 @@ packages: - python_abi 3.11.* *_cp311 license: BSD-2-Clause license_family: BSD - size: 63403 - timestamp: 1724958070675 + size: 65396 + timestamp: 1732523677157 - kind: conda name: wrapt - version: 1.16.0 - build: py311ha879c10_1 - build_number: 1 + version: 1.17.0 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py311ha879c10_1.conda - sha256: ab47023042314222cbbff26093795476769b68a24f8cb117021d9c39233a7168 - md5: b6853a9d288024ce2c8c8de30376f5af + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda + sha256: 33e12fc8188dc0f649ff9fbc3770bff61912722e88ebae806accff72d01ca34f + md5: e2d4e19306f4df6953c7f23d15ab3805 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -8088,8 +8738,97 @@ packages: - python_abi 3.11.* *_cp311 license: BSD-2-Clause license_family: BSD - size: 64144 - timestamp: 1724958112306 + size: 65780 + timestamp: 1732523794589 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8130,43 +8869,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h9cdd2b7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 - kind: conda name: yaml version: 0.2.5 @@ -8212,64 +8914,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py311h917b07b_0.conda - sha256: 9f36ca92a19b11f3f5c79cc954f1ad9fee574bada0680df2dd44eec6933c8bf9 - md5: 37a19c890f2e7b4cfabcdf4e4ef7288f + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda + sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed + md5: 134c0091a508239d35505d9ac74d4c0f depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 141207 - timestamp: 1731927269197 + size: 144071 + timestamp: 1733429148299 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py311h9ecbd09_0.conda - sha256: 76f0c0a55af42386c6d11a95ae3a056c05762576cafda4a9a15a011869361bfb - md5: a13b1162515c6d66cc16336caccbb388 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda + sha256: 4af34cbcf4dda72aad779c8a12eb508aee6f98d0523c26174639a75ae31df180 + md5: 385d54815a5d2e74e68374d77446030b depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 152868 - timestamp: 1731927069636 + size: 153749 + timestamp: 1733428888714 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py311ha879c10_0.conda - sha256: 5f210eaea25a43223df1fb367458c7e084702c7bb2a256b79b665f14db148bea - md5: d3c543cce70fac51c90f83c4c3e0897d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda + sha256: c60d0e75b147dc836b497b2f7c773a2b2998821056614eead6aae84fbedc7416 + md5: 049bc4ea1dd2a1db3a752fadbda1b55c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 150042 - timestamp: 1731927151770 + size: 151968 + timestamp: 1733429000649 - kind: conda name: zeromq version: 4.3.5 @@ -8328,18 +9030,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/mandelbrot.mojo b/examples/mandelbrot.mojo index 9603e31c70..505303f30b 100644 --- a/examples/mandelbrot.mojo +++ b/examples/mandelbrot.mojo @@ -14,12 +14,12 @@ # RUN: %mojo %s | FileCheck %s from math import iota -from memory import UnsafePointer from sys import num_physical_cores, simdwidthof import benchmark from algorithm import parallelize, vectorize from complex import ComplexFloat64, ComplexSIMD +from memory import UnsafePointer alias float_type = DType.float32 alias int_type = DType.int32 diff --git a/examples/matmul.mojo b/examples/matmul.mojo index 77eb9c447d..ad81185519 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -17,13 +17,12 @@ from os.env import getenv from random import rand -from sys import info -from sys import simdwidthof +from sys import info, simdwidthof import benchmark from algorithm import Static2DTileUnitFunc as Tile2DFunc from algorithm import parallelize, vectorize -from memory import memset_zero, stack_allocation, UnsafePointer +from memory import UnsafePointer, memset_zero, stack_allocation from python import Python, PythonObject alias M = 512 # rows of A and C @@ -71,7 +70,7 @@ struct Matrix[rows: Int, cols: Int]: fn __getitem__(self, y: Int, x: Int) -> Scalar[type]: return self.load(y, x) - fn __setitem__(inout self, y: Int, x: Int, val: Scalar[type]): + fn __setitem__(mut self, y: Int, x: Int, val: Scalar[type]): self.store(y, x, val) fn load[nelts: Int = 1](self, y: Int, x: Int) -> SIMD[type, nelts]: @@ -101,7 +100,7 @@ def run_matmul_numpy() -> Float64: return gflops -fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_naive(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): for n in range(C.cols): @@ -109,7 +108,7 @@ fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): # Using stdlib vectorize function -fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_vectorized(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): @@ -124,7 +123,7 @@ fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): # Parallelize the code by using the builtin parallelize function # num_workers is the number of worker threads to use in parallalize -fn matmul_parallelized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_parallelized(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -151,7 +150,7 @@ fn tile[tiled_fn: Tile2DFunc, tile_x: Int, tile_y: Int](end_x: Int, end_y: Int): # Use the above tile function to perform tiled matmul # Also parallelize with num_workers threads -fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_tiled(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -178,7 +177,7 @@ fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): # Unroll the vectorized loop by a constant factor # Also parallelize with num_workers threads -fn matmul_unrolled[mode: Int](inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_unrolled[mode: Int](mut C: Matrix, A: Matrix, B: Matrix): var num_workers: Int if mode == 1: num_workers = info.num_physical_cores() @@ -233,7 +232,7 @@ fn tile_parallel[ # a global memory location, which can thrash the cache. # Also partially unroll the loop over the reduction dimension (K) # and reorder the reduction inner loop with the row iteration inner loop -fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_reordered(mut C: Matrix, A: Matrix, B: Matrix): alias tile_m = 32 alias tile_n = 32 alias tile_k = max(4, K // 256) @@ -283,7 +282,7 @@ fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): @always_inline fn bench[ - func: fn (inout Matrix, Matrix, Matrix) -> None, name: StringLiteral + func: fn (mut Matrix, Matrix, Matrix) -> None, name: StringLiteral ](base_gflops: Float64, np_gflops: Float64) raises: var A = Matrix[M, K].rand() var B = Matrix[K, N].rand() @@ -314,7 +313,7 @@ fn bench[ @always_inline fn test_matrix_equal[ - func: fn (inout Matrix, Matrix, Matrix) -> None + func: fn (mut Matrix, Matrix, Matrix) -> None ](C: Matrix, A: Matrix, B: Matrix) raises -> Bool: """Runs a matmul function on A and B and tests the result for equality with C on every element. diff --git a/examples/nbody.mojo b/examples/nbody.mojo index 694f81be68..eedb4150fb 100644 --- a/examples/nbody.mojo +++ b/examples/nbody.mojo @@ -35,7 +35,7 @@ struct Planet: var mass: Float64 fn __init__( - inout self, + mut self, pos: SIMD[DType.float64, 4], velocity: SIMD[DType.float64, 4], mass: Float64, @@ -119,7 +119,7 @@ alias INITIAL_SYSTEM = List[Planet](Sun, Jupiter, Saturn, Uranus, Neptune) @always_inline -fn offset_momentum(inout bodies: List[Planet]): +fn offset_momentum(mut bodies: List[Planet]): var p = SIMD[DType.float64, 4]() for body in bodies: @@ -132,7 +132,7 @@ fn offset_momentum(inout bodies: List[Planet]): @always_inline -fn advance(inout bodies: List[Planet], dt: Float64): +fn advance(mut bodies: List[Planet], dt: Float64): for i in range(len(INITIAL_SYSTEM)): for j in range(len(INITIAL_SYSTEM) - i - 1): var body_i = bodies[i] diff --git a/examples/notebooks/BoolMLIR.ipynb b/examples/notebooks/BoolMLIR.ipynb index 355dc77909..514770e9e8 100644 --- a/examples/notebooks/BoolMLIR.ipynb +++ b/examples/notebooks/BoolMLIR.ipynb @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -227,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "tags": [] }, @@ -239,6 +239,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -288,7 +289,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "tags": [] }, @@ -306,6 +307,7 @@ " fn __init__(out self):\n", " self = OurFalse\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -353,7 +355,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "tags": [] }, @@ -369,6 +371,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -429,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -441,6 +444,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -495,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -507,6 +511,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md index 4ee3854595..d94bb7bf4b 100644 --- a/examples/notebooks/README.md +++ b/examples/notebooks/README.md @@ -4,9 +4,7 @@ Mojo supports programming in [Jupyter notebooks](https://jupyter.org/), just like Python. This page explains how to get started with Mojo notebooks, and this repo -directory contains notebooks that demonstrate some of Mojo's features -(most of which we originally published on the [Mojo -Playground](https://playground.modular.com/)). +directory contains notebooks that demonstrate some of Mojo's features. If you're not familiar with Jupyter notebooks, they're files that allow you to create documents with live code, equations, visualizations, and explanatory @@ -67,6 +65,7 @@ If you have [`magic`](https://docs.modular.com/magic) you can run the following command to launch JupyterLab from this directory: ```sh +# Run from an active conda or magic shell environment magic run jupyter lab ``` @@ -74,7 +73,20 @@ After a moment, it will open a browser window with JupterLab running. #### Using conda -Create a Conda environment, activate that enviroment, and install JupyterLab. +Conda allows you to export environments in `.yml` format. (For more +information, see +[Managing environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) +in the Conda documentation.) + +If you already have a working Jupyter environment on a different computer and +server you can export it using the following command. + +```sh +# Example of exporting environment.yml from a conda environment named `your-env` +conda env export --name your_env > environment.yml +``` + +To create a Conda environment, activate that environment, and install JupyterLab. ``` sh # Create a Conda environment if you don't have one @@ -87,6 +99,19 @@ conda run -n mojo-repo jupyter lab After a moment, it will open a browser window with JupterLab running. +#### Using more magic + +Magic allows you to create an environment from a Conda `environment.yml`. + +```sh +# Create a magic environment if you don't have one +magic init mojo-repo --import environment.yml +# Activate the environment +cd mojo-repo && magic shell +# run JupyterLab +magic run jupyter lab +``` + ### 2. Run the .ipynb notebooks The left nav bar should show all the notebooks in this directory. diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index 1ce972b6b4..ea37cea474 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -1,1020 +1,1022 @@ { - "cells": [ - { - "cell_type": "raw", - "id": "7a924a43", - "metadata": {}, - "source": [ - "---\n", - "title: Ray tracing in Mojo\n", - "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "id": "e48ca293", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "id": "214584ac", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Ray tracing in Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", - "metadata": {}, - "source": [ - "This tutorial about [ray\n", - "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", - "popular tutorial [Understandable RayTracing in\n", - "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", - "The mathematical explanations are well described in that tutorial, so we'll\n", - "just point you to the appropriate sections for reference as we implement a\n", - "basic ray tracer in Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", - "metadata": {}, - "source": [ - "## Step 1: Basic definitions\n", - "\n", - "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", - "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", - "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", - "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", - "underlying storage with a 0." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from math import isqrt\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Vec3f:\n", - " var data: SIMD[DType.float32, 4]\n", - "\n", - " @always_inline\n", - " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", - " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", - "\n", - " @always_inline\n", - " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", - " self.data = data\n", - "\n", - " @always_inline\n", - " @staticmethod\n", - " fn zero() -> Vec3f:\n", - " return Vec3f(0, 0, 0)\n", - "\n", - " @always_inline\n", - " fn __sub__(self, other: Vec3f) -> Vec3f:\n", - " return self.data - other.data\n", - "\n", - " @always_inline\n", - " fn __add__(self, other: Vec3f) -> Vec3f:\n", - " return self.data + other.data\n", - "\n", - " @always_inline\n", - " fn __matmul__(self, other: Vec3f) -> Float32:\n", - " return (self.data * other.data).reduce_add()\n", - "\n", - " @always_inline\n", - " fn __mul__(self, k: Float32) -> Vec3f:\n", - " return self.data * k\n", - "\n", - " @always_inline\n", - " fn __neg__(self) -> Vec3f:\n", - " return self.data * -1.0\n", - "\n", - " @always_inline\n", - " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", - " return self.data[idx]\n", - "\n", - " @always_inline\n", - " fn cross(self, other: Vec3f) -> Vec3f:\n", - " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", - " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", - " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", - " 2, 0, 1, 3\n", - " ]()\n", - "\n", - " @always_inline\n", - " fn normalize(self) -> Vec3f:\n", - " return self.data * isqrt(self @ self)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2619eb1b-103b-4453-9725-4480e388452e", - "metadata": {}, - "source": [ - "We now define our `Image` struct, which will store the RGB pixels of our\n", - "images. It also contains a method to convert this Mojo struct into a NumPy\n", - "image, which will be used for implementing a straightforward display\n", - "mechanism. We will also implement a function for loading PNG files from disk." - ] - }, - { - "cell_type": "markdown", - "id": "acd55d71", - "metadata": {}, - "source": [ - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "53266408", - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - "\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ca218d22-0578-42af-a906-7f15a91c5bec", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from python import Python\n", - "from python import PythonObject\n", - "from memory import UnsafePointer\n", - "\n", - "struct Image:\n", - " # reference count used to make the object efficiently copyable\n", - " var rc: UnsafePointer[Int]\n", - " # the two dimensional image is represented as a flat array\n", - " var pixels: UnsafePointer[Vec3f]\n", - " var height: Int\n", - " var width: Int\n", - "\n", - " fn __init__(out self, height: Int, width: Int):\n", - " self.height = height\n", - " self.width = width\n", - " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", - " self.rc = UnsafePointer[Int].alloc(1)\n", - " self.rc[] = 1\n", - "\n", - " fn __copyinit__(out self, other: Self):\n", - " other._inc_rc()\n", - " self.pixels = other.pixels\n", - " self.rc = other.rc\n", - " self.height = other.height\n", - " self.width = other.width\n", - "\n", - " fn __del__(owned self):\n", - " self._dec_rc()\n", - "\n", - " fn _dec_rc(self):\n", - " if self.rc[] > 1:\n", - " self.rc[] -= 1\n", - " return\n", - " self._free()\n", - "\n", - " fn _inc_rc(self):\n", - " self.rc[] += 1\n", - "\n", - " fn _free(self):\n", - " self.rc.free()\n", - " self.pixels.free()\n", - "\n", - " @always_inline\n", - " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", - " self.pixels[self._pos_to_index(row, col)] = value\n", - "\n", - " @always_inline\n", - " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", - " # Convert a (rol, col) position into an index in the underlying linear storage\n", - " return row * self.width + col\n", - "\n", - " def to_numpy_image(self) -> PythonObject:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", - "\n", - " # We use raw pointers to efficiently copy the pixels to the numpy array\n", - " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var in_pointer = self.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(self.height):\n", - " for col in range(self.width):\n", - " var index = self._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", - "\n", - " return np_image\n", - "\n", - "\n", - "def load_image(fname: String) -> Image:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = plt.imread(fname)\n", - " var rows = int(np_image.shape[0])\n", - " var cols = int(np_image.shape[1])\n", - " var image = Image(rows, cols)\n", - "\n", - " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var out_pointer = image.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(rows):\n", - " for col in range(cols):\n", - " var index = image._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", - " return image\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", - "metadata": {}, - "source": [ - "We then add a function for quickly displaying an `Image` into the notebook. Our\n", - "Python interop comes in quite handy." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", - "metadata": {}, - "outputs": [], - "source": [ - "def render(image: Image):\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - " dpi = 32\n", - " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", - "\n", - " plt.imshow(image.to_numpy_image())\n", - " plt.axis(\"off\")\n", - " plt.show()\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", - "metadata": {}, - "source": [ - "Finally, we test all our code so far with a simple image, which is the one\n", - "rendered in the [Step 1 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "var image = Image(192, 256)\n", - "\n", - "for row in range(image.height):\n", - " for col in range(image.width):\n", - " image.set(\n", - " row,\n", - " col,\n", - " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", - " )\n", - "\n", - "render(image)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", - "metadata": {}, - "source": [ - "## Step 2: Ray tracing\n", - "\n", - "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", - "reading the code below, we suggest you read more about how this works\n", - "conceptually from [Step 2 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", - "metadata": {}, - "source": [ - "We first define the `Material` and `Sphere` structs, which are the new data\n", - "structures we'll need." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", - "metadata": {}, - "outputs": [], - "source": [ - "from math import sqrt\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Material:\n", - " var color: Vec3f\n", - " var albedo: Vec3f\n", - " var specular_component: Float32\n", - "\n", - " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", - " specular_component: Float32 = 0):\n", - " self.color = color\n", - " self.albedo = albedo\n", - " self.specular_component = specular_component\n", - "\n", - "alias W = 1024\n", - "alias H = 768\n", - "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", - "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", - "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", - "\n", - "\n", - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Sphere(CollectionElement):\n", - " var center: Vec3f\n", - " var radius: Float32\n", - " var material: Material\n", - "\n", - " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, inout dist: Float32) -> Bool:\n", - " \"\"\"This method returns True if a given ray intersects this sphere.\n", - " And if it does, it writes in the `dist` parameter the distance to the\n", - " origin of the ray.\n", - " \"\"\"\n", - " var L = orig - self.center\n", - " var a = dir @ dir\n", - " var b = 2 * (dir @ L)\n", - " var c = L @ L - self.radius * self.radius\n", - " var discriminant = b * b - 4 * a * c\n", - " if discriminant < 0:\n", - " return False\n", - " if discriminant == 0:\n", - " dist = -b / 2 * a\n", - " return True\n", - " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", - " b - sqrt(discriminant)\n", - " )\n", - " var t0 = q / a\n", - " var t1 = c / q\n", - " if t0 > t1:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " return False\n", - "\n", - " dist = t0\n", - " return True\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", - "metadata": {}, - "source": [ - "We then define a `cast_ray` method, which will be used to figure out the color\n", - "of a particular pixel in the image we'll produce. It basically works by\n", - "identifying whether this ray intersects the sphere or not." - ] - }, + "cells": [ + { + "cell_type": "raw", + "id": "7a924a43", + "metadata": {}, + "source": [ + "---\n", + "title: Ray tracing in Mojo\n", + "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", + "website:\n", + " open-graph:\n", + " image: /static/images/mojo-social-card.png\n", + " twitter-card:\n", + " image: /static/images/mojo-social-card.png\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "e48ca293", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "id": "214584ac", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "# Ray tracing in Mojo" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", + "metadata": {}, + "source": [ + "This tutorial about [ray\n", + "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", + "popular tutorial [Understandable RayTracing in\n", + "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", + "The mathematical explanations are well described in that tutorial, so we'll\n", + "just point you to the appropriate sections for reference as we implement a\n", + "basic ray tracer in Mojo." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", + "metadata": {}, + "source": [ + "## Step 1: Basic definitions\n", + "\n", + "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", + "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", + "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", + "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", + "underlying storage with a 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from math import isqrt\n", + "\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Vec3f:\n", + " var data: SIMD[DType.float32, 4]\n", + "\n", + " @always_inline\n", + " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", + " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", + "\n", + " @implicit\n", + " @always_inline\n", + " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", + " self.data = data\n", + "\n", + " @always_inline\n", + " @staticmethod\n", + " fn zero() -> Vec3f:\n", + " return Vec3f(0, 0, 0)\n", + "\n", + " @always_inline\n", + " fn __sub__(self, other: Vec3f) -> Vec3f:\n", + " return self.data - other.data\n", + "\n", + " @always_inline\n", + " fn __add__(self, other: Vec3f) -> Vec3f:\n", + " return self.data + other.data\n", + "\n", + " @always_inline\n", + " fn __matmul__(self, other: Vec3f) -> Float32:\n", + " return (self.data * other.data).reduce_add()\n", + "\n", + " @always_inline\n", + " fn __mul__(self, k: Float32) -> Vec3f:\n", + " return self.data * k\n", + "\n", + " @always_inline\n", + " fn __neg__(self) -> Vec3f:\n", + " return self.data * -1.0\n", + "\n", + " @always_inline\n", + " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", + " return self.data[idx]\n", + "\n", + " @always_inline\n", + " fn cross(self, other: Vec3f) -> Vec3f:\n", + " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", + " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", + " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", + " 2, 0, 1, 3\n", + " ]()\n", + "\n", + " @always_inline\n", + " fn normalize(self) -> Vec3f:\n", + " return self.data * isqrt(self @ self)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "2619eb1b-103b-4453-9725-4480e388452e", + "metadata": {}, + "source": [ + "We now define our `Image` struct, which will store the RGB pixels of our\n", + "images. It also contains a method to convert this Mojo struct into a NumPy\n", + "image, which will be used for implementing a straightforward display\n", + "mechanism. We will also implement a function for loading PNG files from disk." + ] + }, + { + "cell_type": "markdown", + "id": "acd55d71", + "metadata": {}, + "source": [ + "First install the required libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "53266408", + "metadata": {}, + "outputs": [], + "source": [ + "%%python\n", + "from importlib.util import find_spec\n", + "import shutil\n", + "import subprocess\n", + "\n", + "fix = \"\"\"\n", + "-------------------------------------------------------------------------\n", + "fix following the steps here:\n", + " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", + "-------------------------------------------------------------------------\n", + "\"\"\"\n", + "\n", + "def install_if_missing(name: str):\n", + " if find_spec(name):\n", + " return\n", + "\n", + " print(f\"{name} not found, installing...\")\n", + " try:\n", + " if shutil.which('python3'): python = \"python3\"\n", + " elif shutil.which('python'): python = \"python\"\n", + " else: raise (\"python not on path\" + fix)\n", + " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", + " except:\n", + " raise ImportError(f\"{name} not found\" + fix)\n", + "\n", + "install_if_missing(\"numpy\")\n", + "install_if_missing(\"matplotlib\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ca218d22-0578-42af-a906-7f15a91c5bec", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from python import Python\n", + "from python import PythonObject\n", + "from memory import UnsafePointer\n", + "\n", + "struct Image:\n", + " # reference count used to make the object efficiently copyable\n", + " var rc: UnsafePointer[Int]\n", + " # the two dimensional image is represented as a flat array\n", + " var pixels: UnsafePointer[Vec3f]\n", + " var height: Int\n", + " var width: Int\n", + "\n", + " fn __init__(out self, height: Int, width: Int):\n", + " self.height = height\n", + " self.width = width\n", + " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", + " self.rc = UnsafePointer[Int].alloc(1)\n", + " self.rc[] = 1\n", + "\n", + " fn __copyinit__(out self, other: Self):\n", + " other._inc_rc()\n", + " self.pixels = other.pixels\n", + " self.rc = other.rc\n", + " self.height = other.height\n", + " self.width = other.width\n", + "\n", + " fn __del__(owned self):\n", + " self._dec_rc()\n", + "\n", + " fn _dec_rc(self):\n", + " if self.rc[] > 1:\n", + " self.rc[] -= 1\n", + " return\n", + " self._free()\n", + "\n", + " fn _inc_rc(self):\n", + " self.rc[] += 1\n", + "\n", + " fn _free(self):\n", + " self.rc.free()\n", + " self.pixels.free()\n", + "\n", + " @always_inline\n", + " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", + " self.pixels[self._pos_to_index(row, col)] = value\n", + "\n", + " @always_inline\n", + " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", + " # Convert a (rol, col) position into an index in the underlying linear storage\n", + " return row * self.width + col\n", + "\n", + " def to_numpy_image(self) -> PythonObject:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", + "\n", + " # We use raw pointers to efficiently copy the pixels to the numpy array\n", + " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var in_pointer = self.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(self.height):\n", + " for col in range(self.width):\n", + " var index = self._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", + "\n", + " return np_image\n", + "\n", + "\n", + "def load_image(fname: String) -> Image:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = plt.imread(fname)\n", + " var rows = int(np_image.shape[0])\n", + " var cols = int(np_image.shape[1])\n", + " var image = Image(rows, cols)\n", + "\n", + " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var out_pointer = image.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(rows):\n", + " for col in range(cols):\n", + " var index = image._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", + " return image\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", + "metadata": {}, + "source": [ + "We then add a function for quickly displaying an `Image` into the notebook. Our\n", + "Python interop comes in quite handy." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", + "metadata": {}, + "outputs": [], + "source": [ + "def render(image: Image):\n", + " np = Python.import_module(\"numpy\")\n", + " plt = Python.import_module(\"matplotlib.pyplot\")\n", + " colors = Python.import_module(\"matplotlib.colors\")\n", + " dpi = 32\n", + " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", + "\n", + " plt.imshow(image.to_numpy_image())\n", + " plt.axis(\"off\")\n", + " plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", + "metadata": {}, + "source": [ + "Finally, we test all our code so far with a simple image, which is the one\n", + "rendered in the [Step 1 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 7, - "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", - " var dist: Float32 = 0\n", - " if not sphere.intersects(orig, dir, dist):\n", - " return bg_color\n", - "\n", - " return sphere.material.color\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", - "metadata": {}, - "source": [ - "Lastly, we parallelize the ray tracing for every pixel row-wise." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "var image = Image(192, 256)\n", + "\n", + "for row in range(image.height):\n", + " for col in range(image.width):\n", + " image.set(\n", + " row,\n", + " col,\n", + " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", + " )\n", + "\n", + "render(image)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", + "metadata": {}, + "source": [ + "## Step 2: Ray tracing\n", + "\n", + "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", + "reading the code below, we suggest you read more about how this works\n", + "conceptually from [Step 2 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", + "metadata": {}, + "source": [ + "We first define the `Material` and `Sphere` structs, which are the new data\n", + "structures we'll need." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", + "metadata": {}, + "outputs": [], + "source": [ + "from math import sqrt\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Material:\n", + " var color: Vec3f\n", + " var albedo: Vec3f\n", + " var specular_component: Float32\n", + "\n", + " @implicit\n", + " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", + " specular_component: Float32 = 0):\n", + " self.color = color\n", + " self.albedo = albedo\n", + " self.specular_component = specular_component\n", + "\n", + "alias W = 1024\n", + "alias H = 768\n", + "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", + "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", + "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", + "\n", + "\n", + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Sphere(CollectionElement):\n", + " var center: Vec3f\n", + " var radius: Float32\n", + " var material: Material\n", + "\n", + " @always_inline\n", + " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", + " \"\"\"This method returns True if a given ray intersects this sphere.\n", + " And if it does, it writes in the `dist` parameter the distance to the\n", + " origin of the ray.\n", + " \"\"\"\n", + " var L = orig - self.center\n", + " var a = dir @ dir\n", + " var b = 2 * (dir @ L)\n", + " var c = L @ L - self.radius * self.radius\n", + " var discriminant = b * b - 4 * a * c\n", + " if discriminant < 0:\n", + " return False\n", + " if discriminant == 0:\n", + " dist = -b / 2 * a\n", + " return True\n", + " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", + " b - sqrt(discriminant)\n", + " )\n", + " var t0 = q / a\n", + " var t1 = c / q\n", + " if t0 > t1:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " return False\n", + "\n", + " dist = t0\n", + " return True\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", + "metadata": {}, + "source": [ + "We then define a `cast_ray` method, which will be used to figure out the color\n", + "of a particular pixel in the image we'll produce. It basically works by\n", + "identifying whether this ray intersects the sphere or not." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", + " var dist: Float32 = 0\n", + " if not sphere.intersects(orig, dir, dist):\n", + " return bg_color\n", + "\n", + " return sphere.material.color\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", + "metadata": {}, + "source": [ + "Lastly, we parallelize the ray tracing for every pixel row-wise." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 8, - "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from math import tan, acos\n", - "from algorithm import parallelize\n", - "\n", - "\n", - "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "render(\n", - " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", - ")\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", - "metadata": {}, - "source": [ - "## Step 3: More spheres\n", - "\n", - "This section corresponds to the [Step 3 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", - "\n", - "We include here all the necessary changes:\n", - "\n", - "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", - "- When we intersect the ray with the sphere, we render the color of the closest\n", - " sphere." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from math import tan, acos\n", + "from algorithm import parallelize\n", + "\n", + "\n", + "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "render(\n", + " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", + "metadata": {}, + "source": [ + "## Step 3: More spheres\n", + "\n", + "This section corresponds to the [Step 3 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", + "\n", + "We include here all the necessary changes:\n", + "\n", + "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", + "- When we intersect the ray with the sphere, we render the color of the closest\n", + " sphere." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 9, - "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from algorithm import parallelize\n", - "from utils.numerics import inf\n", - "from collections import List\n", - "\n", - "\n", - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " background: Material,\n", - ") -> Material:\n", - " var spheres_dist = inf[DType.float32]()\n", - " var material = background\n", - "\n", - " for i in range(spheres.size):\n", - " var dist = inf[DType.float32]()\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " material = spheres[i].material\n", - "\n", - " return material\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", - ") -> Material:\n", - " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", - " return scene_intersect(orig, dir, spheres, background)\n", - "\n", - "\n", - "fn create_image_with_spheres(\n", - " spheres: List[Sphere], height: Int, width: Int\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "var spheres = List[Sphere]()\n", - "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", - "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", - "\n", - "render(create_image_with_spheres(spheres, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAoQUfVAQAAAACgHRVF0tExO2YZpqaaabWqTgEAwPdTxgIAAADAI9i4cTi//usXpaurXnWUxzQ2NpX3vOebueWWA1VHAQDg+yhjAQAAAJjz6vUig4OdqZ3AoOvq1QN5wQtWpqenvU+hHTkymQ984Nbs2TP2hJ/TbCYHDkyk2TROCwBQpqLVemABk87OziqzAAAAAEApzjhjIH/+58/OyEjXE35Ob29HTj+9P7VaUWKyk9dstnL33Ydz9OjUE37O7t1j+fmfvypbtx4uMRkAwPw0MTFx/O32vqwPAAAAAJ6gBQu6snRpzyO+74wzBrJp03BGRrpnOFX5arUiZ5wxcELP2b17LBs3Dqev75FPD+7YMZr9+yce8X0AADxxJmMBAAAAmBPe8IYN+Y3fuPAR31ev1zI01Nn2U64zpdls5cCBiUxPNx/x/f/lv3wjH/rQrTOcCgBgbjAZCwAAAMCsU6sV2bx5YRYseOSlhs8/fySLFj3yZCwPVasVj3ock1Y2b16Y7dtHH/G9e/eO5brr9qRlu1kAgMdlMhYAAACAWaGrq54PfvCyPPvZyx7x/bVakY6O2gynmpumppppNh+5bb3iinvzhjdcnomJR56qBQCY70zGAgAAANCWFi/uzotffPojlqqNRi2nn96fzs56Bcnml8cqtVevHsjrX78hU1MPlLGtVnLFFffkrrsOz0Q8AIBZw2QsAAAAAG3jKU9ZnH/6pxenv/+xZgjs+1qth0/MTk+38uY3X5FPfvKumY8DANBmTMYCAAAAUKmiSP7Nvzkr55+/8CH3L1vWm87OWhSu7ezhX5uiSF796rW55JIlD7n/zjsP5QMfuCWTk5Y0BgDmJ2UsAAAAADOiKI7t65oc+98Xv/j0/OiPnlVxKk6FWq3IS16y6mH3f+UrO/LRj245vv9ss9lK65G3ogUAmJMsUwwAAADAjHjOc5bnTW/amKJIkiIXXrgoK1f2VR2LEu3ZM5avf31npqePTcb+r/91Z/75n++oOBUAQLksUwwAAABAaYoi6e3tSL1ee8j969cP52UvW52isATxfLFwYXde+tIHJma3bDmYyy+/5yGPabVaOXJkMk0rGQMAc5DJWAAAAABOqf7+Rv7gD56R9euHHnL/yEhXVq3qj/1g568dO0azY8foQ+7bufNo3v72L2f79tFHeRYAwOxiMhYAAACAU2pkpCtDQ8cu9B8c7Mz5549k48YFFaei3Sxb1ptly3ofct99941m7drBdHfXkyRHjkxl586jVcQDADjlTMYCAAAAcNLe8Y4L8oY3rE+SFEWRhQu70mjUK07FbDA93cyePePH95X99Ke35R3v+EqazdbjPBMAoD2ZjAUAAADgSent7ci5546ko+Oh+8Fu3Dic5cv7KkrFbFav17JkSc/x2+vWDeaZz1x6fA/ZLVsO5L77TMoCALOTyVgAAAAAnrCNG4fz0Y++KCMjXQ+5v9GoPayghSdjerqZiYnm8du/9mtfzYc+dGuFiQAATozJWAAAAACekFqtyKWXLs/y5cf2+Vyxoi9DQ53p6ZnJ00qtJMUMfj6qVK/X0tPzvWK/lWc8Y2mmp4/Nk4yNTefyy7fl4MHJ6gICAJwAk7EAAAAAPKrOzlo++MHL8oIXrDx+X1EkylFmyoNOX2bXrrG8/OWfyq23HqgwEQDAYzMZCwAAAMCjeupTlxwvX+v1ImedNZiiUL5SjQe/9vr6OvJTP7UpN920Px/5yK05enS6wmQAAI/PZCwAAAAAxxVF8h/+w7n5z//5kqqjwKO6/vq9ecUr/m/27RtPkjxoeBYAoHIPnoxVxgIAAACQJLnwwkV5y1s2ZdOmBdm8eWHVceBR7d8/niuvvDfj480kyRVX3JN//MctFacCADjGMsUAAAAApCiSrq56arVjy8CuWTOYV73qrNTrtYqTwWMbHu7Kj/zImcdvHzkymU9+8q7jt8fHpzM9bVwWAKieyVgAAACAeWrhwu783u89LcuX9x6/vW7dkP1hmXV27BjNHXccTJJMT7fyu7/7zXztazsrTgUAzFcmYwEAAADmqeHhzvT1NZIkS5f25JJLluT00/srTgUnZ9my3ixbduyigqmpZtauHcrddx/O7t1jmZxsVpwOAJjPTMYCAAAAzCPvfvdT8rKXnZEk6egosnRpbxoNyxIzd7RarezaNZYdO0bzMz/zxdx88/6qIwEA84zJWAAAAIB5YmSkK2ecMZDk2B6x69cPH78Nc1FRFFmypCc9PfVs3rwwfX3HToEeOjSZ2247kJatZAGAGWQyFgAAAGAOe8Urzswf//Ez871tYHt66mk06tWGghnQarUyOjqV6eljpz+//OUdedObvpDxccsWAwDlMhkLAAAAMMeNjHTlGc9Ymqc9bUkGBxspvtfGwjxRFMXx/ZGTZPXqgbzsZWdky5YDufbaPRUmAwDmE5OxAAAAAHPQ0562JP/4jy9MX18jtVqSKGOZ31qtVprNVj70oVvztrd9ueo4AMAcZjIWAAAAYI7p7KzlFa84M0uX9iQ5NgXY1VVPraaEheTYpGy9XuTcc0fyC79wXr785R255ppdVccCAOY4k7EAAAAAc8DAQCMf//iLc9FFi6uOArPC7/zON/Inf/LtqmMAAHOQyVgAAACAOaIokte/fkMuuWRxVq3qrzoOzBo/+IOrjn/PjI1N56/+6obcddehilMBAHONMhYAAABglqnVijQaxfG3n//8FfnhHz6j2lAwy1x00eLjk+SHD0/mk5+8M9u3H8nERLPiZADAXGKZYgAAAIBZ5gd+4LT8+39/9v23ipxzzoIsXtxTaSaYzaanm7nuuj257bYD+a3fujq7do1VHQkAmMUsUwwAAAAwCzUatQwPd2bDhqE897krUhRF1ZFgTqjXa7noosVZurQnK1b0ZXKymQMHJvLAGAsAwJNjMhYAAABglrjkkiX5wz98RhYv7s7SpT1JlLFwKk1ONrN16+F861u784u/+KUcPTpVdSQAYBYyGQsAAAAwi3R11XLGGYM5++wFWb9+KJ2d9aojwZzUaNRy1lmDGR2dzDnnLMiOHaPZtu1I1bEAgFnMZCwAAABAm1uzZjAf/OBlWb68N/39DcsTQ8mmppo5dGgyn/zknXn7279suWIA4ISYjAUAAABoY0WRXHDBoixe3J0kWbmyL0uX9mRgwIX0MBM6OmpZsKAra9cO5UUvOj1bthzIbbcdrDoWADALmYwFAAAAaDMdHUX+4R+enxe+8PQkx8rZer0wEQszrNlsZXq6lT/5k+vyX//rtVXHAQBmCZOxAAAAAG3qmc9cmvPOW5gzzxxMo1GrOg7Ma7VakVqtyMUXL85b3rIpX/zivbnllgNVxwIAZhGTsQAAAABt5Pd+72n5qZ/alMQULLSTVquVn//5q/KRj9xWdRQAoM2ZjAUAAABoM8985tL80A+tztOfvjSKWGhP/+bfnJUNG4bz3/7bzbnjjkNVxwEAZgFlLAAAAECFiuLYUqgXXLAoP/Mz51QdB3gURVHk+c9fmac/fWm+8IV7cvfdhzM93Xr8JwIA85pligEAAAAqdOGFi/JLv3Re1qwZyqZNC6qOAzyO6elmrrlmV7ZsOZj3vOcb2bHjaNWRAIA28+BlimsV5gAAAACYt+r1IkNDnTnrrMG85CWrFLEwS9TrtTztaUtz2WUrs2xZbwYGGimsLA4APAqTsQAAAAAVWLt2MH/8x8/MypX9Wb26P4U2B2aVyclmbr/9YL7znT355V/+Sg4fnqw6EgDQJh48GWvPWAAAAIAZUBTJ8uW96ek5djpm3brhnHvuwgwNuTgeZqNGo5YNG4bTarWydu1QduwYzY4do1XHAgDajMlYAAAAgBnQ2VnLX/7lc/L0py9NcqzIWbCgK7WaiViYzSYnm9m3bzyf/ey2vO1tX8r0dOvxnwQAzGkmYwEAAABm0Lp1Q1m1qj9nnjmYZct6q44DnEKNRi1LlvRk7drBXHrp8tx99+HcfvvBqmMBAG3CZCwAAABAyf7gD56Rf/fv1qazs24SFuao6elmJiebed/7bsy7331N1XEAgAo9eDK2VmEOAAAAgDntnHMW5DWvWZdNm4bT3d2hiIU5rF6vpbu7I+edN5LXvGZd1q8fqjoSANAGTMYCAAAAlOSXfun8/OZvXpSiSBJFLMwPrbRaya/92lfzd393U9VhAIAK2DMWAAAAoERnn70gr3zlmXna05akKJSwML8UKYpWXvKSVVmypCcf/eiWbNliD1kAmK+UsQAAAACnUFEkGzcO55d+6XzLEsO8VeQFL1iZSy9dlq9/facyFgDmMWUsAAAAwCly1lmDedvbzs/atUMxEAsAAChjAQAAAE5SUSQ9PR057bS+vPzlZ6S/v1F1JKAtFOnp6UhfX0eOHp1Ks1l1HgBgphWtVqv1vRudnZ1VZgEAAACYlRYv7s4f/uEzs2bNYNavH0q9Xqs6EtAGWq1Wbr31QO6++3B+7de+mjvvPFR1JABgBkxMTBx/22QsAAAAwJNUFMnixT0544yBXHTRoqxY0Vd1JKCNFEWR9euHs3hxT848cyBjY9PZufNoms3W4z8ZAJgTTMYCAAAAPEk9PfX85V8+JxdfvDhLlvSko8NELPBw09Ot7Np1NDfdtC9vecuV2bdvvOpIAECJTMYCAAAAnKSzzhrMaaf15ayzBk3EAo+pXi+ybFlvxsen85SnLM5ddx3KrbceSMuALADMeSZjAQAAAE5QUSR/+qfPyitfeWa6u+v2iAWekGazlaNHp3LFFffmzW++IpOTzaojAQAlMBkLAAAA8CSdffaCbNq0IOvWDaWvr/EEntFKUpQda44r6xie6Mct+/HzQbscw2q+NrVakb6+Rrq76ym8NABgXlDGAgAAAJyAl7/8jPzyL28+gSJF43LyyjqGJ/pxy378fNAux9DXBgCYGdbQAQAAADgBRXFsuq0w1gY8SWecMZBf/MXzc9llK6uOAgCUTBkLAAAAADCD1qwZyn/8jxfmpS9dVXUUAKBkylgAAACAJ+BpT1uSP/uzZ+XFLz696ijAHPHsZy/Ln//5s/KCF5iQBYC5yp6xAAAAAI+hVksajXo2bBjOa16zzvLEwCmzbt1w1q0bzi23HMjll99TdRwAoATKWAAAAIDHcPbZI/lP/+nirFrVHz0sAABwIpSxAAAAAI+gXi8yMtKVM88cyLOfvSzd3U6jAOUYGGhk6dKe7N8/kfHx6arjAACnUNFqtVrfu9HZ2VllFgAAAIC2cfrp/fnLv7w0q1YNZPny3tRqxmKBcuzePZa9e8fyG7/xtXzhC/dWHQcAOEkTExPH33ZJJwAAAMCD1OtFzjxzMOvWDWXduuEsWtRddSRgjlu0qDsLFnTlnHNGsnPn0dx++8EcPWpCFgDmApOxAAAAAA8yONjIBz5wWc4/f2H6+xsmYoEZ0sqRI1PZu3c8r3vd5/Od7+ytOhAA8CSZjAUAAAD4PkWRXHjhopx55mBWruzL4KCL1oGZVKSvr5Hp6VY6OmpVhwEAThFlLAAAAECSWq3IL/zCeXnpS1elXjcNCwAAnDyXWAEAAADcr1Yr0tFRS1EoY4FqdHbW8qM/emZ+4ifWpq/PLA0AzHZ+mwMAAAAAtInu7o787M+emzvuOJgrrrg3R45MVR0JADgJylgAAABg3vuhH1qV5z53Rc45Z6TqKAAAwByijAUAAADmrVotqddrecYzluXNb95UdRyA44oi6eiopV4vMj3dqjoOAPAkFa1W6/hv8s7OziqzAAAAAMyoF77wtLzpTRuzYcNwVq8eqDoOwHGjo1O55pqd+da3duf3fu9bmZhoVh0JAHiCJiYmjr9tMhYAAACYt04/vT8vetFpSYqqowA8RG9vR57znBWp14vU635GAcBsVas6AAAAAAAAAMBcpIwFAAAA5p2+vo6sXz+UpUt7qo4C8Jh6ezuybt1wli3rrToKAPAk2DMWAAAAmHee85zlee97L83gYGf6+ztimWKgXU1OTufAgYl8/ON35Nd//WtVxwEAngB7xgIAAADzUl9fRy68cFGe8pTFWbKkJx0dFg0D2lujUc+iRT0ZGGhUHQUAeBKUsQAAAMC8cfrp/fmrv3pOFi3qSUeHaVgAAKBcLv8EAAAA5o2iSDo762k0arE0MTCbrF07lDe+cUM2b15YdRQA4AQoYwEAAAC4X2uOf76Z0E7HsJ2yzFbtcwwvuWRx/uiPnpEXvei0GcwDAJwsyxQDAAAAc15vb0fe8IYN2bRpOL29Toc8upmeFp6L08ntdAzbKcts1U7HcC4eXwCY+/z1AQAAAMxpRZH09zfy2teuy8aNC6qOAwAAzCPKWAAAAGDO6ugo8gu/cF4uvnhxVqzoqzoOAAAwzyhjAQAAgDmrVivy9KcvzWWX2WMRmBs6O+sZGGjk6NHpTE01q44DADyOWtUBAAAAAAB4Yl796rX52MdenOc+d3nVUQCAJ8BkLAAAADAnjYx0ZWSkOz09Tn8Ac8eKFX1Ztqw3IyPdVUcBAJ4Af40AAAAAc9LP/uw5+fEfX5uRka6qowAAAPOUZYoBAACAOWl4uCsrVvSlu9u16MDcUhTJ2rWDeepTl2RgoFF1HADgMShjAQAAAABmkaJIfv7nz8sHPvCCbNq0oOo4AMBjcGkoAAAAMKesXz+UzZsXZc2awaqjAJSkSFdXPdPTHanViqrDAACPQRkLAAAAzCk/8AOn5b/8l0uqjgEAAKCMBQAAAOaG9euH8iM/ckae9rSlKQqTYk9OK8lMHruZ/nwzoZ2OYTtlma0cQwDg5ChjAQAAgDlh/frhvOMdF6Rer1UdZRab6RJoLpZO7XQM2ynLbNX+x7Aojv1rtUqIAwCcNH+dAAAAAADMQp2d9bztbefnd37nqVm0qLvqOADAI1DGAgAAALNarZb09NTT2ek0BzC/dHTUctllp+WHf/iM9PU1qo4DADwCyxQDAAAAs9pZZw3md37nqVm1qj+12lxcJhUAAJitlLEAAADArNbf38hTn7okQ0NdVUcBAAB4COv3AAAAAAAAAJTAZCwAAAAwKzUataxbN5QNG4ZTr7veHAAAaD/KWAAAAGBWGhnpynvfe2nWrBlMb69THAAAQPtx2SgAAAAwK9VqRfr7G+nra6QoiqrjPIZW1QHmgLKO4Yl+3LIfPx+0yzGcW1+bnp56LrtsZZ797GXp6Gjnn4cAMP8oYwEAAABKpRg5eWUdwxP9uGU/fj5ol2M4t742CxZ05fd+72n5zd+8OD09VgoAgHbiNzMAAAAwq3R0FPnhHz4jmzYNZ2ios+o4AJUriiL1epFabW6VzAAwFyhjAQAAgFml0ajlJ39yQ571rOVVRwEAAHhMlikGAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEtgzFgAAAJg1+vsbGR7uTKPh+nKA79do1LJwYXeS5NChyYrTAABJUrRardb3bnR2dlaZBQAAAOAxvfOdF+WHfmh1Tj+9L729jarjALSVo0ensnXr4Xz2s9vyrnddnQfO/AIAM2liYuL42y4jBQAAAGaN5ct7s2HDsCIW4BH09HRk/frhrFzZl6Ioqo4DAEQZCwAAAAAAAFAKe8YCAAAAbe/MMweyZs1QVqzoqzoKAADAE6aMBQAAANreK195Zt7xjgvS0WGRLwAAYPZQxgIAAABtr14v0tlZrzoGAADACXE5KQAAAAAAAEAJlLEAAAAAAAAAJbBMMQAAANC2iiKp1YrUakXVUQAAAE6YMhYAAABoW894xrK89a1nZ/36oaqjAAAAnDBlLAAAANC2Vq7syw/+4CqTsQAnoNGoZWioM0ePTmVsbLrqOAAwr9kzFgAAAABgDnnWs5bln/7pxXnd69ZXHQUA5j1lLAAAAADAHDI83JXNmxdm2bLeqqMAwLynjAUAAAAAAAAogT1jAQAAgLYzONjIOeeMZMOGoRS2iwUAAGYpZSwAAADQdjZsGM5/+28vyMBAQxkLAADMWspYAAAAoO3UakV6eurp7KxXHQUAAOBJs2csAAAAAAAAQAmUsQAAAAAAAAAlUMYCAAAAbaUoksJGsQAAwBxgz1gAAACgbSxc2J1f+ZXNWbduaA7tF9tKolw+OY4hp5rXFAAwM5SxAAAAQNvo6+vID/7gqpx2Wn/VUU4hhc/Jcww51bymAICZYZliAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEnRUHQAAAACgo6PIM5+5LOvXD6enx+kKAABgbvDXDQAAAFC57u6O/MZvXJSLL16cmnW8AACAOUIZCwAAALSFokhqtaLqGAAAAKeMa00BAACAWaRVdYAHaacsJ+Kxcs/0/6fZegwfSzsdw3bKMlu10zGci8cXAOY+ZSwAAAAwi7TT5Gw7ZTkRj5V7pv8/zdZj+Fja6Ri2U5bZqp2O4Vw8vgAw9yljAQAAAAAAAEqgjAUAAAAAAAAoQUfVAQAAAID5bXCwM4sWdaXRcM04AAAwtyhjAQAAgMrUasmv/uoFedGLTsvKlX1VxwEAADillLEAAABAhYosX96bNWuGqg4CAABwyln/BwAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAAChBR9UBAAAAgPmpp6ee3t6ONBquFQcAAOYmZSwAAABQide9bn1e85p1Of30/qqjAAAAlEIZCwAAAFRi6dLenHvuwqpjAAAAlMY6QAAAAAAAAAAlUMYCAAAAAAAAlEAZCwAAAAAAAFACZSwAAAAAAABACZSxAAAAAAAAACVQxgIAAAAAAACUoKPqAAAAAAAAnDqtViutVtJqVZ0EAFDGAgAAAADMIddcsyt//dc35Oab91cdBQDmPWUsAAAAAMAccs89R/KJT9yZZtNoLABUzZ6xAAAAAAAAACVQxgIAAAAAAACUQBkLAAAAAAAAUAJlLAAAAAAAAEAJlLEAAAAAAAAAJVDGAgAAAJSqVXWAOcAx5FTzmgIAZoYyFgAAAKBURdUB5gDHkFPNawoAmBkdVQcAAAAAAODkbd9+JB/72O259trdabVM/wJAO1DGAgAAAADMAffeO5o/+qPrcujQZNVRAID7WaYYAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABK0FF1AAAAAAAAnryjR6fy1a/el+9+d2+mpppVxwEAHkQZCwAAAAAwi+3dO55f/dWv5s47D6XZbFUdBwB4EMsUAwAAAADMctPTLUUsALQhZSwAAAAAAABACZSxAAAAAAAAACWwZywAAAAAwKzUytRUK5OT00ksUQwA7UgZCwAAAAAwC42NNfP//D/fzLXX7s7OnUerjgMAPAJlLAAAAADALNRsNnPNNbvy1a/eV3UUAOBR2DMWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAACqxZcvBXH75PbnvvtGqowAAAJRCGQsAAABU4h//8ba87nWfz9e+trPqKAAAAKXoqDoAAAAAMD9NT7fSajXTbLaqjgIwq7Rarfzrv27PjTfus7oAALQ5ZSwAAAAAwCzSaiUf/vBt+Z//c0vVUQCAx2GZYgAAAAAAAIASKGMBAAAAAGaJZrOVZrOVVssS7wAwG1imGAAAAKBUrSRF1SFmubKO4Yl+3LIfPx+0yzGcvV+bT3zijvzzP9+Zb31rd9VRAIAnQBkLAAAAUKrZWfi0l7KO4Yl+3LIfPx+0yzGcvV+bm2/en//9v++qOgYA8ARZphgAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKYM9YAAAAAIA2t3Pn0dx224Fs3Xqk6igAwAlQxgIAAAAAtLkrr7w3b3/7lzMxMV11FADgBChjAQAAgMq0Wq186Us7MjXVzPOfvzILF3ZXHakErSRF1SFmOceQU232vaamppoZHZ2qOgYAcILsGQsAAABUptVK/v7vb8qv/MpXcscdh6qOU5LZVfi0J8eQU81rCgCYGSZjAQAAgMq1WsmxSTUAHuzuuw/lox/dkmuv3VN1FADgSVDGAgAAAAC0qa1bD+dP//TbOXrUXrEAMBtZphgAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAKtdqtbJr11h27BjN9HSz6jgAlZuaambHjtHs3j2WVqvqNADAk1W0Wg/8Ku/s7KwyCwAAADBPFUWydGlvzjprIH/zN8/LsmW9VUcCqNTWrYfzUz91Re6++3B27jyqkAWAWWRiYuL42x0V5gAAAABIkrRayY4do+nsrGVqymQswNRUM9u2Hcl99x2tOgoAcBIsUwwAAAAAAABQApOxAAAAAABtYnKymS9/eUduuWV/jh6dqjoOAHCSlLEAAAAAAG3i6NGpvOc938y3vrU7zaaNYgFgtrNMMQAAAABAG2k2W4pYAJgjlLEAAABAG2rd/4+ZNdPHfC5+jdvpGLZTltnKMQQATo5ligEAAIC2sXfveH77t7+Rc88dyVvfenY6O+tVR5pnijn++WZCOx3DdsoyW83c/6dms5X//t9vzjXX7Mrddx+esc8LAJTLZCwAAADQNg4fnszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "f53abdf2", - "metadata": {}, - "source": [ - "## Step 4: Add lighting\n", - "\n", - "This section corresponds to the [Step 4 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", - "Please read that section for an explanation of the trick used to estimate the\n", - "light intensity of pixel based on the angle of intersection between each ray\n", - "and the spheres. The changes are minimal and are primarily about handling this\n", - "intersection angle." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from algorithm import parallelize\n", + "from utils.numerics import inf\n", + "from collections import List\n", + "\n", + "\n", + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " background: Material,\n", + ") -> Material:\n", + " var spheres_dist = inf[DType.float32]()\n", + " var material = background\n", + "\n", + " for i in range(spheres.size):\n", + " var dist = inf[DType.float32]()\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " material = spheres[i].material\n", + "\n", + " return material\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", + ") -> Material:\n", + " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", + " return scene_intersect(orig, dir, spheres, background)\n", + "\n", + "\n", + "fn create_image_with_spheres(\n", + " spheres: List[Sphere], height: Int, width: Int\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "var spheres = List[Sphere]()\n", + "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", + "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", + "\n", + "render(create_image_with_spheres(spheres, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f53abdf2", + "metadata": {}, + "source": [ + "## Step 4: Add lighting\n", + "\n", + "This section corresponds to the [Step 4 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", + "Please read that section for an explanation of the trick used to estimate the\n", + "light intensity of pixel based on the angle of intersection between each ray\n", + "and the spheres. The changes are minimal and are primarily about handling this\n", + "intersection angle." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [], + "source": [ + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Light(CollectionElement):\n", + " var position: Vec3f\n", + " var intensity: Float32" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8b99f641", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 10, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Light(CollectionElement):\n", - " var position: Vec3f\n", - " var intensity: Float32" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" + ] }, { - "cell_type": "code", - "execution_count": 11, - "id": "8b99f641", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABm5ueAAAAAADcVut1c9NTmOXior3pKQAAUCGMBQAAAICKt966G375lz8XTk5WYbXqQtmmCSGE5vI2l7a1I9loe3kgPd7db6/a+tuurb/t+m23fdt224ZHj7bhb//tfxX+4A8+PvzJAgCwCGEsAAAAAM+91SqEO3c2oWnSUHXaa6/dCT/7sw/D6WkXxjZNqJ7fVAaLwWn+OD+Whq9pSJuGr2kgW4awbduGi4s2fPzxRfiH//AH4aOPnoyGwOUctts2fPLJxWR/AACur2nb/v9ynZ6e3uRcAAAAAGARr756Hv7T//TL4f79k7DZrMJq1YWoMWCNeWpa+Xp6ugqvvHJeVMXOk4evw1B2biAbQhecxnFiSNuFsTGkbcMPf/hJePRom7XHADcNbrfbEB4/vggffPAk/C//y2+HH//40X4vJAAAOz161P9/LJWxAAAAADwX7t/fhBdfPAshDIPT1167E9599/5kGJtWvg7HqAeyfc7ajrSH0LbN1fE8jG2KZYubJIRtrkLVGAbnyxY3WWj7+ut3Qgh9SBsD2O22D2S7MLYNjx51Yeybb94J5+frZJ592PvBB4/Dxx9fTL3cAADMoDIWAAAAgOfCn/2zb4V/79/7Qlitmqu/GLCu1024d69bprisdI3VsGnbIdJgdrgscbw/Fdp256btaQVtuZdser9c2ri2pHFsi6Hshx8+CRcX26vHT5604eJiG5482YZf/dXvhX/0j354+IsBAPAppjIWAAAAgGdO04TwhS88CPfvnwz2bm2aEH7qp14IDx+eXwaxtcrX/pw+dG0GAeycQLa212ofpjaj/boq2dhv2Kc/ni5b3AwepxWy8VheNdvddkFsk4Wx63V3f7NZZRWzMZh98mQb3n33Qfjkk+3VEslpxe1HHz0Jv/d7H+1+kQAAUBkLAAAAwLPh5GQV/pv/5hvhq1996XKp4WH163pd2we2VgkbQi2Inau2PHFsmxqzFuKW4+VVsfF+up9s329XhWztdmop4/j35Mn2slK2+3v8+CJcXLTh448vwr/4F++H//F//G64uBh5MgAAn3IqYwEAAAC4lV544SR861uvhs0mBqvN1TLCm00T3n77brh37+QqhE1vQxiGsGkwmt+/xnrEmcPGKZcr7tr68YZLFjdFCFtWxDaXx/Kq2dr+sjGM7R7nQWw8vl6vwulpt3Rx27bh8eOuivbkZBU+85m74dvffv2qojZW1373u++HH/3oUfm0AAA+1YSxAAAAANwar712J/yH/+GXwv37m3B6us72f02XHi7D1+kq2OvvBzumPubUhdpBn+FSxvF2WHW7T4VsCCFst2mfWhhbVsqmwWwXsrZtCKen3ePz83V48OA0vPvu/asljR89ugiffLIN/9P/9F1hLABAQRgLAAAAwI34znfeCJ///IOw2XQVsKtVE15++TS89NJpODlZhc1mddkesuWI6/u/NrOXIb5uKFtW1e43Xlr5miurZYd7xXbnpyFsfFzbTzaeW1bGpiFsCMMwNi5d3LbhMoztQ9n1urncb7a5XM54FU5OVuHsbBu+/e3Xw5e+9GK4uOj2mn30aBt+9KNH4R//4x9eXQsA4NNGGAsAAADAU9NXtIbwcz/3Svj5n38jnJ2tL/d7XSXBa14Jm1fADu/HMaO0IjZv299Ude11gt1hRWwcrM2Ol6FsbNsdyrZZv+22SW6HYWxcsjhdvni1iiFsDGWbq9vttg2bTRu221W4uGjD17/+8CqEffJkGz766En47d/+MPzGb7wXHj/OnxMAwKdF0yb/L+709PQm5wIAAADAc+xnf/Zh+KVfeudqyeGf+qkXw6uvnl2GsM1gH9jxAHZsOeKuX/543NgSw+P7zPbjT4+x2zCUbLO2/P4wyJxaoji9X/ZL28tK2doyxmNLGPd/fduTJ9vL2/YylL0IH374JPzWb30QnjzpAtrf+I33wm/8xo8Oe9EAAJ4Rjx71WzeojAUAAADg6M7P11kVbAghvPPOvfDtb78eNpsueF2v++WJ6yFsuhRxGb4OQ9dh1er8pHTXHrP5UMfZg7YPV9urMWuBbL2tO6f2OA9oxx+P/TVNer+rhO1vu3+nYSDbXJ23WnWh7GrVhNPTdbh//+Rqb9n33vsk/OZvvp88ly7kffx4q2oWAHguqYwFAAAA4KjOz9fhP//PvxLefvteODnp9n1dr5vwwgun4Y037mRVsMPliOeFsGlbfn88Ia0vMVyvhN21L2wtnJ1nfLne4bLF0xWx6bG077BqdlgNG0K+THG8Haua7Y71yxgPK2X7+3Gf2SdP4u02XFx0tz/+8aPwox89umr7yU+ehPfffxz+7t/9nfDhh0/2eB0BAG4vlbEAAAAAHNWDByfh3r2T0DQh3L27CV/84gvhnXfuh9PT1aAKtr4XbD2M7W5rlar1UDa1axniqYB3zrLHh1TGxv1fy3NjRerlo6uq1Hisu22vAuRhCNvvK9uFqLFStR3cjwFtbcnlGMZ2oWtZVduEGCY3Tden/zcLl1Wz8VgTQthezWu16iplX375LLzwwml4/LhbtvjDDx+HH//4cXj11fNwevo4tG235+xPfiKYBQCeDypjAQAAALi2v/bXvhj+wl/4bFivV2GzacJLL52FzWZ1GcLGJYjrVbBpKFouFzw3HJ0KRneFu+nY08se99evX2fYtmvp3bbSoVYJm7Yfozo27Te2d+zYPrJ5hWxfKRv7xMrY7jaEi4tt2G7jbXtZJdvvK9tVzD4Ojx9fhI8+ehL+v//v/fB3/+7vWLYYAHhmqYwFAAAA4CBnZ6vwzjv3w8nJ6ipgbZoQPv/5B+G11+6EzWYVVqsQ1utVtg9s2jcNY2MAWj4OYX5I2rUNG3cFu+MVsdNVt8O2OQFtnizGoDGdQ9/W9e/3b+3D464trXaN7XFf1/5xuYdsWvkaQqxs7atlh3/xWBwrrazNw+H47xqXPO7mHPeBXYXVqg1NswoXF21omjY0zTZcXIQQwjqs16vw0ktNuLjYhp/8ZBNef/1J+NznHlwFvO+994kljAGAZ5bKWAAAAABme/vte+G/++++EV566Szcu7cJq1UTNpsmnJysw8nJsBK2tgRxLYjdFZam7eNtw4rXY1XFlsePIa167R+Xx7s+w2rZ4Z6yw2rYsgo2v1+vlK1XyW633dixEjYeS/eOTfeQTfeZ7Stk22xf2e62q5Z9/Li9vL0Ijx9vw0cfXYRHjy7Cxx9fhP/9f/9e+Cf/5L0jvOIAAE+HylgAAAAAZmmaEL72tZfDw4fnYb1uwiuvnIdXXjkP9+5twvn5+nI/2FW2F2y/FHF3P4QunO3Gm1qWeHwv2F0Vq7VQdTzoHQted1fglv33k4en6XPK94ztK2C7+/28+srYMKiEjVW0fWVsuKpkTStgQ+iraMvgdqxKtt9jtq+W7fepHe4hm7aVzzn+df1Xl9W028t9ZsPle6kJJyercHKyCl/4woOwXjfh8eNtePx4G37rtz4Ijx5t93ztAQBuhspYAAAAAEZtNk34b//bb4RvfevVcH6+DpvNKluKeLXKq2DjssS7liQOYaxKde6esMPgNB3v0KWJ51x3+nhuuO9pfbniettYRWw/ztQ+softITvcL3afPWTLKtm0MjZWxfZ/3T6ybRvCkyf9frLdnrLbq9tHj7oQ9sMPH4cf//hR+B/+h38R3nuvrzYBALhtVMYCAAAAMOrLX34xfP3rD8NmEysTXwh37mzC6Wm3DHHcD7ZbkjithO0rYMtK2PFq2Klq1OHSwHnf6fB1btg7Vhk7nE9dbb/aEPpq1aJ30ac8p14Rm/aNe7jW2soq175PXvUa28ce7/pL95+NFbHlsXgb95vt3h8hbLfNVSDbNKvLua8u+7RhtWrDatUtaxyD/s2mey7rdRO+/e3Xwx/8wcfhH/2jPwxPnlTSbACAW0QYCwAAAMCVpunC2H/33/1COD/fhJOTvhJ2s1ldBa4xJEuD2HJv2BDSUDaOf+iercOq1mHgOqfydvpac/apHZMuJVwbq1QuTdy1DYPWvm8f0ubnl8HrMGRN28rgNl1KuOwTj9Vu+/C1Sapj89ejC5Tby8C2uQpc+yrq9qqtC2e72+49tr0MZptwcdG9587P1+FP/snXwu/93kfhN37jR+HJkyeTrzEAwE0TxgIAAAAQQgjhp3/6xfBX/sq74XOfux/u3z8JJyersF531bB9ABuK2zyAjeFiHsKOV8PODULHKl93LXk8Z5ni/H59ueKxec1VW4542J6HpOXx8SWL592OVcSmVa398b6aNQ2Ny6rXvFq2O2e1Gp67WjVXSxPH+/k+t+3luTGMbS/3I27DatXtJxvPW61CeOONO+Gv/tV3w6NH3TLG3/3u++Gf/tP3ZvxLAAA8XcJYAAAAgE+x09PVVUD51lt3wy/+4ltJNWxzuTdsrILdtS9sHo7uDka79mh8ieBhxe3Ydcrjsc/wuvmcxuZQ63OI4XLDbdYel/ONbX1Q2ib3myJATcPMvnq2D0aHj2PFa3+NdPniNhkrtufHu6C1vnRxfB7DJZLz4DetxA1hWHWb/jtdXIQQwipst+1ln+52vV6Fr3/9YXj8eBs+/vgiPH68Df/P//Pjy3H7fWoBAG6aMBYAAADgU+qFF07D3/ybPxNeffU8bDZNePHFs3D37uayInG4FPEwhM3vT4em3fG0bao9Ps73ha0HvOPVsWMhbH9uPo/6vGrmBLS7wsDa8bFK2PTxoRWy6f6tadvYnrFdWwxky/vlX1fd2i1tHAPgWO3aL2PcVbi2YbuNbV3fi4ttaNvmMkTtK2TX6y5YjUsXp7frdRNOTtqw2azCN77xMLz11t3w8ccX4ZNPLsKv/dr3w+/+7k+m/wEAAJ4CYSwAAADAp8j9+yfh7GwdmiaEhw/Pwle+8lJ444074eRkdRnCdvvD1vaFre0PG8J4IBuPdbf9HHYFsOV5UxW3c5cnHlsauZxP7XhtfnPkVa+Do1kFbH9OWgnb7w/ba5Pzmqw9jlt/nI6d9hne7/rFKtzY3l5WtcY9YJvB+f3yxDGY7ebfVbN275/+9eirZ2PAWguD+7mnyyOvkorfNoTQhpdfPgv37m3CRx9dhI8+ehIePjwL77//OPzkJ0+uqmkBAG5C07b9/7U5PT29ybkAAAAAsLD/5D/5cvjOd94IJyercHKyCq+/fudyb9gueO1u8/1gx5cl7sbcZ+/W9Njlo0FIuivcnQ5jh6HqdfaJPcYSxande8e2g375/XbQ3oebU4/7c/vAsx3075cZ7s8p2/P75W1/P+4LG9u22/w2XU44Vsh2+8rW/rrq2e02hCdPtqFt2/DkSXf+kyfbcHGxDY8ft+Hx427J4vfeexR+/ONH4X/+n38r/OEffrLfPxIAwDU9evTo6r7KWAAAAIDn2IMHJ+H11+9c7f/6uc/dD2+9dTecnq7DatWEzabfD7avhq0HsF1lY30p4vkVqnl7fk53J1ZQjlfE1gPc2vWHbcP24fzq8zyeqUrNWrVr7Xh5rN/rNa+obUfP7faRrVXU9mOl7U3TVbmmFbKx8jUeS61WZWVsmyxTHEKsli2D39Wq/qLH57ReN2G7DUmlbRNCWIW23YYQuj2QX3zxNJycNOEzn+ne6xcXbXj06CL86EePqmMDACxFZSwAAADAc+w733kj/Bf/xc+Es7NVODlZh7t3N+H0dBU2m7gccb8s8dhSxLU9YkOohaLjIWna1j9Ow9zrLE28XzVuU0xkuiL22GlsX3WatVbbhlWw/f220lZWuw6rYYdt5fFdFbJT1bF5Wxe4ppWweQVsXi1btsc9ZscrZLvbrkK2u91eVco+frwNT5604YMPHodHjy7C++8/Dr/zOx+G//V//Vfh4sKyxQDAslTGAgAAADznXnjhJHz1qy+Hr33t5fDii6fh9HR1uRxxtyRxfVniWAFbC1+brGK1u90/hC0rVueEsGPLFefXy+cxNpep+dSOTyn7jS1BXJx1WXVajlULaaeqZNNxxqtf88rWcq/Z9rI6tuyfV8725wwrZbvjzVWQ2lfIdhWwbdvf9nvDdsfLvWPLZZXHtG187v1r0N2uQghddWzcTzb++CCEEF555Tz89E+/GN5775Pw+7//0fRFAACORBgLAAAA8Bx6++174b/+r78R7t3bhNPTdVivu5A13ubLEc+piC0D0OlwNO031l4uR1yOuzv0nRcCl4HrWMXsZctI+25zzolBY9c3rXzNg+QYMHb326vnNWzv5jzcL3YYcPahZdmnD1TTvun99C+EcFn1mreXIXPs01W/dsfT+9O33TLI8d9+tWrCxUUbVqs2NM3q8rmvLgPg9urYkychrNftZf/t5TW7HyDcvbsJr756Hv7JP/lh+Nt/+3d2/2MBAByBMBYAAADgObDZNOFP/ak3w8OHZ2GzWYU337xzWRW4DptNH8DGithyb9jaHrH1qtR5FapRLSwdVr6Oj3lYINvPoR68jgeuuwLVssq2Jl1eeGz8vEK1DDLb7HFfvZpX0Kbt9erYtH1qT9n+WJxXfFyvhA1ZhWs6Tgix+jVc7Qcbb+M+r/1yxvWK2L5St39fpMFuvE2D6f61XYWLiza07fYytA3h4qLNqnbffvte+Pa3Xw//8l9+EL73vZ+U/0QAAEcljAUAAAB4DpycrMNf/svvhC9/+aVwft5Vwnb7wubVsPND2H32bA1hV/iZVrsOw9hhn/5a/bH0WmMVsbUK3DI/HT6uB6yHVMeOjTdclji2t5W2/rnEYLK/ny9zHMPZGMz2laVle61fmyz122Zjx2rcNDhNq3rTtv7+VFtcmjjtk7825W0awtb/vbeXr9U2NE1zuRfs9iqU7ZZL7ipl423ThPDuu/fDG2/cCf/H//G7wlgAYHHCWAAAAIBnWNOE8Bf/4jvhK195Kbz77v1wfr4Op6ddCLvZrEK5L2wawoYwHsZ2Y++qgt0dgNbG6s8bjl8LZ+dcuwx+y3ml59SODdsOC2jHimK789pBv3RO+RLGw2WI06rapmkv75f7pvaVr3kwWz7uxu3P6QPS2L8PgueGsiHUgtjtNp97ueRxf5vuJVsPZfNjq8tzVqFf0jiGsO1VGLvdds83hrLxPf+1r70cXn75LHzyyUX4+OOL8Ou//sPw/vuPx/9xAQAOIIwFAAAAeMasViGs16vL+0341/61V8N3vvNGOD1dXVXExqWI+79w1ZaGrn0oG8J4der+QWh67lj16+4QtqzIHbaV182vXw9f0/Nqx8fM7TO+SvHYAGMnNBN9xo41WVsezOZLFKehbD5OU9yPx7r2OEZ9meKh1aoLZeNt27Zhu41jNVmwXNvvNi5vHNuGoW/ySlzeX6/L596Ei4sQTk6a0DTdYJ/97L3wxht3wvvvPw4ffvg4/It/8X748MMnVyEuAMAxCGMBAAAAnjHf/OYr4d/6tz4XTk5W4eRkFX7qp14I5+fr6rLEZUVsGsKmQetUGNvdDoPWWvha9i0rYseC2XLM+ljT10wf5/eHx4aP630OMTVGuuxw35ZfO6+Q7ZcXjsfGKmdjWzpmXjE7tkRxvE4zuF9/PB6K1itlxyti0/C6bI8VtXnlb9p3dfUabLd9/+22CU2zvbwNV/vFdssUd6Fw/ExsNt2yxmdn6/ALv/Bm+OEPPwl/7+/9Xvjoo4s5/9QAADsJYwEAAACeEZtNE+7dOwmf/ez98M1vvhLOzlbh9LQewq5WoVoNG9vKcHSsErZejVoPRLv7ebAaKxrnLoM8J4Qdv17ft+w3fDzcS7be7zjygLXJ2mPoOjKbpG8f4uYBbRrullWuaXtbnFtW1OZLH49Xypb369WzcWnhvF/cm7YLRrsq1P7fYrUKV5Wzq1V7Faj2AXb3ntpu28u+fcDc/cig61tW2cb34XodX7Pm8lj3GWqaJrz11t1w9+4mPHhwErbbED75RCALAFxf08afy4UQTk9Pb3IuAAAAAEz4Y3/spfC3/tZXw8OHZ+G11+6EzaYJ6/UqbDZlCLvKql/H9oUt20KYF8BOh6Hj18iPT507Pvau6+f3x0PjvG2B9HWH5D/JJW21x8N9ZtNjtSV6++rYet9av/x+37+831W+TrfHsco9W/N+3W1/LH/c3eb3t9sY1LaXlbBd+8VF36+7393Gx93tNmy3ITx5sg0XF93jJ0+6448eXYSLizZ8/PGT8OjRNnz/+x+F3/3dn4S/83d+Jzx5YsliAGB/jx49urqvMhYAAADgljs5WYU337wbvvCFB+Hdd+9fLkncBbF5NWwMX6eqYIdhaVpJWqs0re29WralgW3+N2/P2HScQ0LY/QLY6fD12JWxtT1kyznk1a1Zz6sx+r1VyxC5vWpLK2bHKl/Ttnyp47TydriXa3nN8YrZfh5xeeR6NW2/Z2ysok0rZPt9ZbvzuvnE93i/322slI3v/VhVG59TdxsrZPvK2PW6u9ZmswohbMPJSbfX8sOHZ+HJk2147bU74YMPHof3339c+4cBAJhFZSwAAADALffWW3fDf//f//Hw6qvn4cUXT8N63QWx6dLETdMtwZqHsH042weh0xWr3f2+f/94PBStBa/9XrR50Dt2vbFlktP5DNvqQXHZPm3Y72mEsePLEg/7lRWt/f12tH2qCjbeDtvaav9h5eyu6tjydvxYWT1bexz7x/ux+jXtk1bLpn+x75Mn/W2slO0qZNvw+PE2bLdtePRoGy4utuHjjy/Co0fb8OMffxL+3//3j8Lf+Tu/M/PfCgCgozIWAAAA4BZrmhC++MUXroLX1167E1599Tw8eHCSVcJ24WsYhK95CJsGn/XgtAxexypT87ax8cbGrVfI5veHVbL1ELa+ZHI51/I1vbw3+dovYaritTcMVmO/vuK1Vtk6rJgd7vka+7bJWHEOY9WzTXHNehVsWkE7HKdWRZsfK/8d456xsZp2tSr3lc33io3nxr1i07l3/UJ2P34m4vlt2+8j292uwmbTvU7375+EV189C1/84oPw3nufhPfe6/+jKgDAXMJYAAAAgFtmtWrCr/zKF8If/+Ovhjt3NmGzWYXz83VYrZpif9hyeeIyjB2vTh0LRWO/7rZWCZueNx3Gju0VOxXApn13z2UqWD28MnZZYxWxtXn0fdNgOj7OlxjO2+ISvulY8fWKlaZpcBsrX7ulhWP//Hhc6rdp2iTM7NvTeZXH87a02rYPZ9M+/Tzj/dinPxZvmyZcLXPcv1ZlFXD/eLsNoWlWoWnay79wuaxxCOt1d3tx0Q3yhS+8EN544274B//g++H/+r++X/k3AgCYJowFAAAAuEW++tWXwxe/+CC88879cOfOJpyfry+XJa6HsGUA2y1TPAxf8yrWMtycDkdr/eqhaz2c7edSPt4VwtYqYPM9YVO7lyZ++lWxQ3NC11rfYeVsH6622etTjtm393vLpv3q+8zWjk9Xyc6riM379fvAttX2sT1ju+cfro7H93wI3VLFafXsdptXycbXsb/fXJ6XLve9ChcXccnkdfjsZ++Fb33rlfDbv/1B+OEPPwkAAHMJYwEAAABuke98543wV/7Ku+HsbB02m1XYbFZhtQqXtzGAjVWw+f6w/f2xqtUQatWw+4SwIdQqbg8PYedVynZ9hvKKzKnjuy0Z1O7aH7a8dq1//5q0bX48D6HLMLVrK6tc0+rZfMy0+jUe7+/Xwtp0jC7YrIWuafVqH7SuVl1FbLzdbvP27ba5ClJDqO2B2ySP89cxBq7x5dluh8tA969LDG7zfWnje/ynfuqF8NnP3g//2//2r4SxAMBehLEAAAAAt8DXvvZy+PmffyN885uvhLOzdTg5WYX1ul+WuKvWS/eJHQawZUg6vjzxdFVqebzss0/gW4awacA6tjdt+Tg3Xhk7L1C9ierYqWuOB69jfcrwtVYtO9wLNm2r96mFsvVK13ysYVgbw9f2MuRsL/drTZci7m5jn7gv7GrVt5eP4/khpCFsN4uu+jUPZPNlkstwv7der0Jcermbd3wtVpevb18d/NWvvhQePjwLv/7rPww/+pE9ZAGA3YSxAAAAADdsvW7Cl770Yvirf/Vz4eRklVTE9iFsH74O94ft7w+D0hCmKmPHq1Brwexq1R3Lb+vXLIPg/v6cOdQqXscCzV3h6nXC10PO3VUFO3WNOfvJDpcf7l6jvr227HBs627rSxMPlyOO1567PHF+vx+rXi3b72PbhjJgXq36QLZ8nL9X+2WKu71g+2rWGODGoDZW2cbnmr5eIYSrHzp0YWy8XhfKxj5f+MIL4c0374bf+q0Pwo9//GhQaQsAUBLGAgAAANygn/7pF8O//+9/Mbzzzr2rpYm7PWK75Ym7qr1QhLJ5GNuHst2YteWD5wagZQibhry7QtjpSth5VbG5uW1zjh3S7xBzx55TEVvrNxbM1tvT17lfnrhcrjj2abPQtgxQY994LPZLlwiOFaZdJWy6bHFZXZtXvna3fVVqus9rXN64e9ydN1Yhm96f+oFBeny9jj80WF29Bt1yxd3j2Df9UcKf/tNvhB/84MXw9//+74cPP3wSAADGCGMBAAAAbsBq1YQ7d9bhrbfuhm9/+/VwdrYO63UXxKb7wqZ7wo5Vv5b7tIawO4itLdlatsVz0nA3vx0GsYdV45aVsPuEsHPCzyXD10PNqYhN+02Ft2PLGPcVr7E93S82DV37kDYGsnH8PpBN+8ZAtOwXw9c8+ByvjM1vw2X42Vzd1sbq+8T59P3S+2N9uuWO43u7D3zjMsfx/b5ex6C3uayO3V7uabsOb799Lzx4cBL+8T/+YXj8eBsePdoGAIAaYSwAAADADfjMZ+6G/+q/+lp4/fW74c6dTdhsmiyMjUumxsrYekXsPssT10LYcjnivi0da7gXbb1ffs00sJ1TCXuMytg5xw/te11zAtep/mWf3VWxtfaxStl++eJ879haYFtWxpZhat+nv3a37G96vNwztg9i27bfHzatfI1/8XF/2/eLVbVpn/5xE0LYXj3OPxsh9JWxzdVzi5WxaSi8Wm1D267DanUW/tJf+mz4/d//KPzqr34vPH4skAUAhoSxAAAAAE/Jw4dn4exsHVarJrzzzr3wUz/1Ynjw4CRsNrEatimqYUPxV1sWuB6Axtu54edYEFuvot21PHE5h2Zwv7zu1Nx2t+86tk+fpUyFqVP9d+0jOxbapksVx/Z2dI/TsjI2/hun1a99QHt5hdEK2mE1a74kcr5nbL58cl4tm441vfzweIVs/x7u+sQlkftj/Z608TMY96kNIVz+OCJcLqccfzTRhtPTEF599Ty0bQgvv3waPvzwiSWLAYABYSwAAADAU7DZNOE//o9/OvzMz7wc7t7dhNPTdXjppdOwXjdhs1ldVcOmoeywIjbft3VsKeBa+Fn2i3aFsGll7NgesfXK2/rSxMmVdzwea7vusSnHCmt3Ba1j15qzj+y+e8iOt/XvjT6cLPePTc8p94hNK2jTQDZWtcY+sfq1q3SN1bVtcduN1e0Z214uBxwrZPNK2K6KNj6OoW1/PM43rZZNHw8rY1eX81hdzad7bbbh4qI73jTb0DSry+fXhrZtw3rdXffNN++EX/7lz4Xvfvf98Ku/+r3RwBsA+HQSxgIAAAAs7K237obXXrsT3nrrXnj11fNw9+4mrNddhV2/N2xcdrgMOssK1f62Nx6OdrfDILbeZ6ridbxStzyeX7NWDXudIPZYIeySVbJzg9ap8/atiI3Hpitl8/fOWBVsWqWazCjZezaeG++n10/b+71p8z1g+yrcdJ/avK0frz8vPoe0KjfdZ7YfJxTnDCtlu790+eG4d2zXd7ttLveUjUsq9/vNxv1k1+smnJyswoMHJ+Hhw7Pw9tv3wvvvPw4//vGj+j8fAPCpI4wFAAAAWNhf/svvhl/8xc+EBw9Ow8nJKpyedksVn5x0YWtZERurXtP9YfNK2GFoOlYZ291OLTXcPcr3op2ugq0HuPU59A4NYK8bvi4Zuu5jbB67QtexPvtUxI611ytly3C1fn5aGZse65cBHlbV9lWwXZ+muO2ramNlbD9eU1TExgrXfnniWMFdq5ZNq2trttuQBMfbIvBdXc5lG2KVbNuuwmrVhu22r5B955374aWXzsKv//oPw6/92vfHLwYAfKoIYwEAAAAW8rnP3Q9f/OIL4fOffxDu3j0JJyersNmssvA1hq7p0sRlEDt128mD1RCmq2FrlbRjoevYsW68sQB430rYfatgdwWs1wlgr3PuIevTXrcaNh6fE74O+6bhZt+Wh7DdsTb5t22zc9J/3rTSNr1OH862Rf/xCtn+WmlFbfojg3itthg7rZYNRXtfDds0faVrVwEbrvaN7apg4xz75ZVXq27cLiwOYb1ehRC2VxWyd+6sw+uvn4cvf/nF8P3vfxR+9CMVsgDwaSeMBQAAAFjIz/3cq+E/+A++FM7P1+H0dBVOTlZhtVpVKmGPXxFbD2Lzx+l4+V60aejaXIVSu6/fPe4dqzp2qn3Xsev03deusXeFteX5c/eHTY/tXxFb65MHsrHProrZscraYYVsbCsrZOPSyOkPB/oK2bQiNvZps2rabqnhGKi22Xs439+20/WN+9heznJwmx5bhW5P23B524amWYXT035/289//kF4/fU74e///d8XxgIAwlgAAACAY3v33fvhT/2pN8JXv/pyODtbJxWxq7BadcsSlxWxZRAbl1zdVaXa9RlWrMb2/rbc03XXdfK2EMJVYDt2/Wj/UHaftjnH9unzNO0KW8f6Ty1TfFhFbNmW/pvloWVaydo97veEDcXjsbA2r5CNgWytQrbf27U235DMtX/fbbf9nrEhhKsgNl22OK3YjdeJPzIIIVwFtzHY7SqC420/0XhOv2dst4Txet0tY3xysgrb7Tpst234/OcfhNPTVfjN33w//NEfPa4+FwDg+SeMBQAAADiipgnhnXfuhX/n3/l8ODtbh7Ozfmni8eWJhxWxc5YLjtcrg9A8hM2Px8d5sLp7qeJ0nLwytgx/962GPXYIe90A9tDzl1qiOO133VB2rC0/NwahZeia9u+XCx4PYcvAdRjmxmrYEPplhfPbdJniPhyeug1FWwjxfR7bu/d+rG7t38uxqrbr016GsOk+tyGs190VYtAblyvebJoQwipsNm1o21Vo23V455174eHD0/D9738sjAWATzFhLAAAAMCRvPnm3fArv/L58NnP3g/n55uritjNJq+ITStjYzVeWqk6J4gtK1zj/SgPocqAdVgZW96OXTsUyxb3lgxhr1she0jffe0a+7pLFJd9ll2muAxp82rWMsAdBrJ5tWw6fn6/XJZ4WBk7vI1Bbb60cfe4W8J4uGdsXEK4C2Hje7/2GoTL/WGHyxWn92OIHMfableXz7vfT/fOne5+F9QCAJ9WwlgAAACAa2qaEE5P1+HVV8/Cz//8G+H+/ZNkaeJ8OeIu2OzDoPTxPhWx3XXLsLW/X97WQ9mmGGc6iC2v3V9jKmidG7oeu0L20L5LmVsFm/bfVS27b6XsrrZhABuD1fg4DWRj8Ng04aqKtAxr8/ZcvmRxP3YasKZBbLmUcf84H69eGduHs+k5/fu7Td7vad/+L+47G69T+zHDxUVzVQV/crIKFxfrcHraLVX+5Mk2C3YBgE8HYSwAAADANb3wwmn4z/6zr4S3374XXnjhNJyersLJSbdH7GZT7g1br4iNy6fOCWRDmKqOHVbIlteI1a1zg9+xQHa/EPYYlbBzQtXrBq+HnL9vwla7xq5K2FqffStld1fA7qqazZctrvWdul8/N+772u//Wj6P8UrYWKEaQr/McHosLqccq2LTAHW77feA7fXnxT1js6OX+8f243bX32yacHERwmazSvp2fb7zndfDV77yUvg//8/ftVwxAHwKCWMBAAAADtQ0Ibz44ml4/fU74UtfeiG8/vqdcHqa7g8bA9CmCF5jqFWGnbVANK9sTfsP7w/nVxujv99kt+VyxMMx8pC3uNq+r97MtrnjHxKiHqtidm64umuMOUsZj/UZO7Z/RWzZllaeZj2yitR4P69ILStk0/OiNDAdLk887Fdet/xs5NW8+fzSitn+WrUfOaR7x8aq2LQiNlbP9j+s6Pp1n/3ttrtt21V45ZXzcHa2Di++eBqePGnDRx89USELAJ8iwlgAAACAA52crMLf+Bt/LHz5yy+GN9+8e7UcaRfG9ksU53vF9hWxfVi7f0VsHqaWlax53/F9aHdXxpbh7OXII/cPeTzWNtW+69gh/Y5t7Lq7lh7e1beZOF6rfB1rrwWyU33y44dWyDZNmwWz41Wz5W0aiIbK43I/2XR/165tuGdsdz/27f/S6th6CN223R6x8TPdV8w2oWlWV+c1TQhnZ+uwWjXhF3/xM+EHP/g4/Oqv/m745JOLAAB8OghjAQAAAA7w5pt3wiuvnIe33roXXn21r4jtg9Z0X9hQDTjH9m4tq1ijtAq2DGJLZYhbq36drsStB66HL1O8q/+c9l3HDun3tI0Fpof03acadu7441WzUxWyaSVq1ycfZ3huDGa791S/X2xZzdrvTTs2VtqvrIwdPqd0n9nh/W68vno2jj/8DLdhteqXPI4/qlitmsvlj/uK+K5CtgkPHpyEJ0/a8OqrZ+GDDx6HH//YksUA8GkgjAUAAADYU9OE8G//258L3/nOG+Gll84u94hdh/W6CZvNKqxW4SqYjQFNba/YuH/rrsrU7prHrIiN1+7DpDRU2hXIPv0Qdk6wemj4eszQdp+1Z+dUwZZ9pyplD90zNrbPC2TrFbL1Y+NVr/39YQDa3cZlf2Nb03RVrGnFbNneBaFpZWysiM2XSo7VsNttm+wf218z/Sv3lY1z6pYi7o+VFbIhrK4C5bgf7vl5G155pQm/8Atvht/5nZ+Ev/f3fi9stwEAeM4JYwEAAAD28NnP3rv6u3//5GpZ4j5wrQWq9cdpEBtCXhFbVqPW24fzG1bX1gPZ2De/DcW5/RjjdoWZc4LYpxnCLlkxu0/AOnbuEqHsIW27KmTTitW+knS4V2teqZq+Z8erYodVtWWlbAxiu2WB22S8fux6GJzPLT6H+LmIc4n9xvZv7v/6CtlyT9kuEI6VseHqxxp37mzC2dl65N8BAHjeCGMBAAAA9vAn/+Rr4Zd/+XPh/v3TcHa2Dqenq7BaNWGzaQZLk8bliocVqmPB53R1ai0krQVHwyrX4fWXr4hdKoTdJ0xdMng99Pq7wrf0nKnliceOjwWtZf/rBbLl4zRUDSEGk8Px0z71CtqxtjIMLn+M0O8Xm1fYpnvHdifEKtjutju3q14NSUVu/Jx0QXIMVlertNq2ueofK2TTvWPX61UIYXt52159V9y9uwnn5+sAAHw6rHZ3AQAAACCKlW2np6urADavjI2Vr2kIOxWMltWp5V6vaUDaV7CWt8Ogd3r54/yaoXJsVyi7RBBbjjv3WK3fTQexY/aZ266++4bZtX+Xff/tyh8HpI/rPxyIPxoYe0/NrUTtx8k/K/04tc9WM7hWfd/k4bVjlXu6rHi51Hf/eY/nNIO/9Tr+dVX0Jyer8PLLZ+Fb33oYPvvZewEAeL4JYwEAAAD2cHKyCufnm3BysgqbTblEcbpUcR/OTAWx4wFUupxxJ6+MHYam/Tm796HNb4fLJY+HrYeHd/3jueHsnGPpmIcGsM01/657zbl99zm2z+t8vX/T/D2aL6mdBqmx73Ap7fy8PrBtquPM/wwN3/P5+eNB7PB436dcjrz8IUYZwqaPN5vue+Phw7Pwx//4q+Fzn7tf+fcAAJ4nlikGAAAAmOErX3kp/Lk/93b48pdfzILY9XqVVMjVK+bKirrpALa/ZhlA9e1Ndnz+Xz7HfIw54et1Qtl92qba5x4/1jnXGXfufqDp+bv2jJ1aunifZYuPt0RxP/9+yeLhcsPd/eEyxf3xuP9ruvdrPJ7uDRvFftlbN/R7yqbLFfdBbz9m+tmKyxGH0H02ymWLu+v0yxt3n6F0uePuAt0yxuFyn9j2as/Y2BZCV10fQginp+vw9tt3w7e//Vr47d/+IPzu734UAIDnjzAWAAAAYELTdOHJO+/cD//mv/l2ODnJq2HHK+aaQcg5VoFaVqKW1YXpXNIKw3h8vNJ1PASemk/y7Gfcn/N4n7ap9l3HjtH/mOaGrOU5z14gG99T/X6rMURNehd9+vY+pO2D2OH84rE+HM2D126/1jZrjwFuGcp2Y8S9X7vrdcf6/t212tHq2a5fGdA22fziDzO6fWW72y6o7Zcr3mxW4Y/+6LEwFgCeU8JYAAAAgAmf+9yD8Nf/+pfCm2/evdwnttsrtt8HMl+atNw/Mr0dBjkxrKvvqZn3zfuFEKphcHre3OWK4xxyh4Syu8aZaptq33XskH5PWzmvXYHrVL+p481E+5y+hweytWukwWoMQMv+aXsa4vZ902NpIJtW1jbZ4+HnJvYJ2XXiZyZWwsbK2K6qNQ1Sw9W8uuMhbLfNZRAbP3tdINy24Sp0DSG9XYWmacPFRff8T07asN2uw8VFG05O7CYHAM8rYSwAAABAxWrVhPv3T8Ibb9wJP/uzD8OdO5vBvpBp9Vst6AyhFrimVah54Br1bc2gvb8/Nu6cPTXzULe8/n7h69h5Y/33CWfnHp/b5zaphaPX6bfkNXc9To4UYWqsPM0rZfvANF2SuK987ZcrTq9ZLmGcVsp218jn0SYD1MPZ/NwyKE4rY+PzSUPdpumrb/vPVK2Stl+uPAa8/T6yq3BysgpnZ+tw5846PHq0vQprAYDngzAWAAAAoOLhw7PwX/6XXwtvvnk33L27KfaJba6WJO5vYzCbVsPuDkb7ar08xC2rYPN9YsuK2/rjeRWx3bUOv197fGifucfmHF/q3Cn7hmi7KmDLflNVstetkL3OksXzwtk0BA3Z3q4hpMsN75pbugxwWuVaq5LNf2hQ7iEbg9SQnVNWxkZxb9h8P9n26rl0t81VwBtvt9tYfdtVxm63bQhhdXkbQtuuw1e/+lJ4++274R/8gz8I3/veT6qvJQDwbBLGAgAAACRWqxDeeONueOutu+Gzn713uadjk1Wz5XvDhtAFOeP7vNaqX2O/YQXtVP+QharpGOXj8tplxW48flj4GiaOHVL5um//Q8LUp1E5OzdcHTt31zlTfcaOHRq+Xuf6w35pNWutLa1w3TXHco/ZONZwL9ryuv2Y6RjlfrLp+bX59p+jPvgtK2TjeGlFbPo5XK3a7Pvk7t1NaJoQXnzxNLz//uPwk588USELAM8JYSwAAABA4uxsE/7G3/hj4YtffBAePjy/qojtlhRNq2Lz5YrLytjh8sW1KtU8WE2rZePjWoXsVGVs3+cmKmLnBrFjweh1KmUP7buUcg5zlwfe1X9XlewxA9ldAe28atnacsUhdMsRD5crro0x1RaXLy73jC1vL89OrlFWxKYhany8WvXX7faGLfeX7a6dVs124WtfIdvvS9uN2e0huwrrdTx3FbbbdQghhK985cXw5pt3wj/8hz8If/RHjydeewDgWSGMBQAAALj0+c8/CG+8cSe89tp5ePDg5KoiNg9Zy3AzBkx5+JZXnabhaq0iNa2ErVWvxvv5HNI+ZTVsfr2puc29X7qNQextCGHHTIWoY/33CUIPaT8kkJ0X2JaVsGN7xsY++R6vwzFr1bDltfLrlVWt49fMPx55KNsFxiHkgW7ap19uOd72n9G+8rb80UTbtoNq+/W6CXfubMKTJ9vLwBYAeB4IYwEAAABCV/H2l/7SZ8PP/dyr4eWXz8Lpab5H7LAqNt8Xtl4Fm//1QU8Z5HZqQWrfPqywnaq8La/VjZOHw4fdP+TxWNtU+65j+/S5TdL5zlkWeKrfbQlkx86thar9/XQf2RiOjs0lXco4/eFCWiVbVsemVa9pUDqsnA1ZKJt/RuP+sF1la14ZG7JwNV4nPrcY5HbVtc1VhWzXv/s+adtV2GzasN2uQtuG8ODBSVI9CwA8D1Y3PQEAAACA2+LsbB3u3t1cLku8yqrW+uWB079hZeyuZYm7Pvl183ApbS/3fx0GrrVrHjeILT2NILaZOLZPnznnX/fvOuaef0hgPTa/ff595ho/P38P5++x4Y8Uwsjx+o8ZhtfKP2djbfnnIp1n/bMaP99lZWx6Tj/f8e+K7scT3W2693RaGbter8LZ2Tq8++798LnP3RfKAsBzQGUsAAAAQAghhCacnq7DnTubcHKyGlTC9qFJuPqrBTjD4KcfP4RayBOy9v5+eqwJ4yHvdDVuep0ykNp9f59jtcdjbYe0zz1+7PP2HXfuMsTl+XOqZPetkN1nrLLtOo/H55NXxnb98orX/tx0ieN0ieLudlgFG6tT08rX9Brp9dNK3Frg21fKNlfVsfk5+bldxWz985fu5dzvLV2GsF217MnJKrTtOnz5yy+GH/3ok/D7v/9RuLi4qL6WAMCzQRgLAAAAfOr9iT/xWvj61x+GL3zhQdhsyhC2thzwWAg7Jygd7glbq/YbjlkPWfOwdXidshpxaCqkXCKInXu9fY4do/+xHBrOzgllp/qMHRsLRucEuPsGsmPn1u+XwWhbbAabL1uch655MBuy8dIxu8A2DX7LsLa8Tn/tbrxy39d07n0gPAxg+3nFZY3TZYrjbRrIbrdN2Gy6pYvPz9fh7Gw98sMOAOBZIowFAAAAPrViQPKVr7wU/sJf+Gw4P1+H9XpVDWLT/WHr4Wu+dPCuIDIPZdP24e0wWB1bTrUfOx0jbRufW9n+NIPYXYnTPonUbUuv5oSsZf99q2uPNeZ1rz1+fi38LLLX4vMwPJ72q+0hGwPXGJKmlbXp3rH5GGlbDGrz68T78a+ryg0hhrrpmLXPZBrk1qpm00A23p6crMLp6Tqs1002DwDg2SOMBQAAAD61vvGNh+HP/bm3w+c//yCcnq7CZjNcnjgGJrHarbZfbD2AqVe2jkmDqPzcvLo2XfK0Xh1bhlrp7XXvz3m8T9tU+65jh/S7SfuEsrv6Th0fO1YLSue0XefxdLjb/3ghr14dOx7FJYrT2zRELa9RBqoxlM1/+JBXuZYVsfnj/NzVqhtvu+0/u7EytrvfTaBWGdu2eSC72axCCCGcnq7Dgwcn4U/8iVfDD37wSfiN33gvbLejLyUAcIsJYwEAAIBPrVdeOQ/f/OYr4fx8kwUiZdgaQrxtskCnDH/mLCmaV7iW1avDILUW5NauW59v2feQ8HXs/LG+gthp+4ayu5YtPvZesXPO2/e6lRGzas8+TE33ji2XLa71G/Yfzq2vaC2vv/t5pOeWlbNl8FyrfO0D5RDKgHe1ai6XMB7++GO1asLp6Sq88cady3lc/zUHAG6GMBYAAAD41FqvV+H8fDOoio1Lg+bhSFoZW1a9Hnuv2No4wzF3Vclejljczr2/z7FjtM05tk+fpzHGdZf0nTPGoYHsPu3XDVunzt99P75dx/aOjUFnery8TcdJx0/75XvF9vvJ1pYnrlXI9tW03ffBdtsmgWo/z3xZ4iarjN1u80rZ9bqrjt1uu/tdZew2nJx0FbJ37mzC2dl65r8DAHAbrW56AgAAAABP29nZOrz11t3w8OHZYEnisaA1rVRNA9R994odU6uYnQpxywrYkVF3Xvd45x72vPfvf93nFP+O4Zhj7brOIceP+e+/7+ORUbP38rC6PO1TWwJ87LZeAT7+GUmrW8c+a+l4eaVrfZ5j9+tLm5c/pBh+58Rli+OSxefnQlkAeBapjAUAAAA+db70pRfC3/pbXw0vvHAaNptV2GxiRezqsgK2uQpMumrYMiypB0X1MHcqgBrer1fV1sOasSBnqKncnwrTjhHE7RvOHho4HvucQ5TX2beqdM45zYw+c887tG3X47Fzx+5ftjQhq1Tt94JN+/SVqekSxemY6VK+sU/aPyT7wqaVsN048dy8IjaeE6ty+4rXUPTtKmD7fWLzOcTPZvf90l7tFRtCXiEbb9MK2VdeOQt/+k+/Ef7lv/ww/ON//MOR1xsAuK2EsQAAAMCnxtnZOnzhCw/Cl770Ynj55bNwdrauLj0cQhqi5lVteYAarvpex3io2wenw+q/9PxhBeDuUHas/XkIYp9WCDt1/X2D0znnzA0/j3W9pycPV9P2bp7DADaENCidGm9q7H7p4VC5TZdAri+HXAuHy++Qfuni9ir4je19v36J4/iDkPh3crIKd+9uwtmZRQ4B4FkkjAUAAAA+NV555Sz8zb/5M+Hll8/C+fn6cp/Yfq/YNAAZW1q0Vpk6rGrNw9wQynC1DGDn7BE7XhUbx+vtqoSdCl/HxpnzeNd4c65x6Fg3HcCW0vnMDT3nVMkeEsjODV6vGyLvXylbCzzT9/KuEDWteo2VremesGWIWo4dq3LHqoL7z22bnN9XxMb55J/5Nns8DFr7PWPjfrGrVXv13ROrZuMesm3bhjt31uH01DLFAPAs8nMqAAAA4FNjtWrC2dn6siI2XYa4DF6H1alj1XO1Stk0iNtVNTusiK3vEbur/7CiN5/HPNcNNMfC2TkVuce+7m1y7PkdMt6hFcxzAvix4/W+Y+/p/H5+bh6C5j9kGLtGfr3yRwnlDynqP6bI94AtP2f1pcrz+dWO1b5v4g9BusdldexmswoPHpyEd9+9F1544aT6nAGA20kYCwAAAHxqNE0IJyery4rYvBo2hiFjQUk8vxbidMfy0La8bnq/r+Qbjpe21Spv02vFMfJAalfANuf+MR7vMtV/KsA9pN9tsM9c5/Q9VsA993U+9Brz3ntjn5vxH0SUIekwAE0/W+WY6ePpueXXLMeoB7LNyF/cjzrv13/vpKFsk1XHbjbd3rE/+7Mvh9dfvzN8sQCAW8syxQAAAMBz7+xsHf7sn30rvPPO/XD37iYJYftwJFaklUFJrWouhHqgMwxp0xBoGD7VqluHFXnjyxOXwdKuQCm3Kwzd5/G+19jn2tftd9s0Yfm9WseuMffa+87xOM+pacLV8sIhTC8fPH+Mvj2EuGRxfnz4+c33hk3HjPe79nwe/WezX6Y4H79fXrlfuji9ny9THG9jKHtysrpcXv1Zfe8DwKeTMBYAAAB4rjVNCOfn6/Bn/sxnwjvv3A937qyvwthhZVpZkZqPU96vVfONnVN/XO41Obz2WCVfrV/yaMb9sf6HqJ2/VBB7zCBq37GOFaIeKxR9GsHuIebNK+7Fmu4LGwPMWt9yn9j0duq6aZ/4OekedyFo7Xr9e6MPZtMx8qA130M2vW7ftw9f43XT4134mrZ1feIPRvowdhM2G4sdAsCzRBgLAAAAPLdWqyb80i99Nnzxiy+E1167EzabVVitVtkyoGWVaW2J4nR54LzidbjEcB+KNsXj3u6q2GHl63hVbj+XypX2vL/r8dzQ9bYGscc+/zpBaB72Tfc7JJDdp31OeFr22fV47jiXrU2sWu37pO/zWgDb3w7HTIPT3ffz6w1v84rWPqDtw9x0TvXPcn/+atWG7TbeD2G7TStkY8V+F+B2QWy4Wq745KRbYh0AeHb4GRUAAADw3FqtQvjpn34xfOtbr4R79+LyxOWSxH1FbBqqdveHlatXRyvh6FilbLpEcRnWpvfTYLUPfobt5fHlHHP8mwxim2ue/7THrV3naZ533XPL8/cbq/Z5232N6THGfhSxe7z0RxX1z/Gc74H8+6Upzhv7UUiTLKPeL1fcBbP1fXYBgNtHGAsAAAA8105O1uHsbB02m9VVkJFWxvbBbJOFILWgJu3XBzO1UHVXIDNVDTsMYsvrjodITZia1+77+wZo4+HV7rbrXmfOOU8zLD30WnPPu+5ruKv/nLZdj69z/TD6ucv7dG1jlejlbfl5rT2O/YefweGPLsYep98d48eGbX11fr5kevodFb+zYnXsF77wIPwb/8ab4fXX78x4rQGAm2aZYgAAAOC5dP/+Sbh/fxPOz9fFssTDitfdIct4pd5+1Wn163bjDAeqVfalQc7+17+OOUHcMULB64556DnH0oTbuY/rTRt7Xea9Xk1T30s2XO6/Gg33ka2PUd6P545fP19GuTs/XVY5hLjUcfm5zpcyTveOzfuMfe+U4ey9e91/0j07U2cDAM8CYSwAAADwXPqLf/Gz4TvfeSO89tr5VVVsPZQt//ox8grYXeHt7jB1rAI2D25qt8PxkpF3tM25v2vM6wSx+7bv2+eQvkvrw7n9zrnO/rH7hp1LhMbHHLMWsvZ7t8ZQswxQY8gaP7tdYBr7dvNLx4lj155Dfr3hjzLGPpvpDyW682PYmt6GsFq1lX1mY7V+XFK9CW0bsiWKT05W4eys+5EJAHD7+fkUAAAA8Fy6d28TXn31/Cq0mFvtWq88jR13hx/7Vsp25+TLrg7HqC9RfLyq2NsY6tzGOS3tus/5ps8/bLypkPMY1537mSl/LDHVv/yhRjn+2HdM/rhepT+cy7BCdr1uwv37J+HFF0/Cev1p/KwAwLNDGAsAAAA8lzabVTg5WQ2qYstK2L6tD1jSfSRDqIUq9fCj7zMMg2p70tbD4Tygre0VW85vfE6HVMjOqYKduk7admhV7L4Vsbc1jDpkbsd8ba5zzti5x3i/7LrG+PEyJM1vx8PR+v3hjyHGrj/87A1D2+7+sJp9rNo9P5ZWxtb3ju2rY1eXe8feD9/85sNw/77FDwHgNvO/1AAAAMBz5TOfuRs+97n74c037yYVseN7xYZQC0THK9uiuZV7ZVgzPuZY8Jtfr7Yc8u5Q9piuO/6xg9hnQRPsIxtC/jrUX5Om2b3fa9mW3kZjfcu2Wt9yzv2er/nyxuU45XW6+93zHFb+5sswd+15W/8jjHSJ43AVzJ6erq/2xAYAbi9hLAAAAPBc+frXH4a/9td+Kpyfr6/2WOz2XgxXezHWKtSmqhjHA9pdFXXxvFrF3tg8htcqqwDjtStX2vP+1PlzHu8ab1/PYxC7hEPC3do5c9uuc/1955oHtjGcLEPXsX1er1qSoLUMSGP74MpNHpyOjZH27ecZLvenzecVg9S4d2x3Tnxe8bPfDj7vq1W43Cu2C3Tj/rGxOnazacLZ2TpcXGyEsQBwywljAQAAgOfCG2/cCd/61ivhZ37m5bDZDJf6LJcCLQPY4dKh+fj1QLU+l+HSpGNtcYD+tt4+vxJ3P0uFOGPjHut6z2L4tGSAeaxzDx1zmcrfPABdrrp4boVsDGpjtWt6bryff87bLASuVfIOq2TzZcn7itj0NmRLFter5QGA20IYCwAAADwX3njjTvilX3on3Lu3Cet1bZ/YeqXp1LLBeTDat1d7TwSz3W29OnUsAM7n2GRjHF4hO2Xe89zd59Ag9tB5PkuOGcgeK5xcLuQ89NrzwtHx8/OxmsuK1RiOxlC1b4/VqmNLKI+FqOPzq58f51MuWxzPGauSTQPYWoWsLBYAbrfVTU8AAAAA4BhWq27ZzpOTdRLE1ipS+2CzD0Br1arzTQexfVhSr5S96p31SSvkhtfYJwQd67Pv81wy8bkNQWyT/D3rrvscbu/55RLC5W35uSnPK9vGQ9H0szh2fv9+qX+XhMFnvx+r/l2QX7vvE/e/jkFsF8auwsnJOnzhC/fDT//0C+HkxH/qBYDbyP9CAwAAAM+0pgnh5GQVTk9X4eRkVQSxeaCRVrvWqlDTx4dXmw2rWPM5DPtPVeiWYW3tWrvmsr9Dq2KXdOzrNcXf2LFju8mw9zYEzWNzmJ7b1OexrHSfc87YONc7p1al2lSOpz8MKb8byram+AFJGtCGsF434dVXz8Prr5+HzeY2/PsCACXLFAMAAADPtNdeuxN+5Vc+H954404RxjZX1WRpiBHCWLXasGq0tjzwdDhaq24rj+eB8FgQnFfVZT1qV91xfKp917E5x5e89jEdcq30nGMt59scaaxjjXMMS82lH7dp4jLB3RLD8XHt+umx8n4I+RLDtbZ8vO5+H6CW1w6Dx/nYcb/XfLnj9Hi8Xy5TvFp1fVerJmy3bVYd2y3H3obz83V49GgTDqnqBwCWJ4wFAAAAnmlnZ6vwxS++EF544TQJYUPIA46Q3O/bL1tnXec6OcdYMNtfOw99l5hD/bpP4/xjTPo2jfE0w8/bFLYurx6KHmXkUO4LOxaejs1rPGgdPk5/jNGOXKSs4B2r7s3HHe5/vVo1YbNZqYoFgFvMMsUAAADAMy3uFXt6WlbFxn0W0wCjGQQf+e2wWnVs6eCp9jwwyatWx+ZRVr+my5nW7aqQndNeO3ZoqHPdqtNjjrvEGOlYn8bga9/3yZxq7RlXHfmszRt7bDny3T9+KD+/aQXrsF//nqj9yGNO8JpXw6ffW91fX+Wf7xvbh7GrI/5YAwA4JmEsAAAA8Exar5vwmc/cDW++eTdsNumyxHnQUi7522nCsEL2OurBaD1oKXpVquBqIfFx5nSIZz3hMf9lx1vO0wgX53wm68fm/cBhGLw2k336H2wM51IutZ4uZbxaPTv/rgDwaWOZYgAAAOCZdO/eJvz1v/6l8Oabd8Pdu5skkA1XVWSrVVqF2kyEorW9XfebT3+NWpjSFP3yUCedXxnWlCFy5cr7TXSRJYpva1XskgFVE663hPB1zz/m+EvPZa5d8xgery8hPLdf3j9+1sb6xTG6z2o7umds+hkv97RNj+XhapudW46TnhN/dNLtGxv3jp2qogcAbpLKWAAAAOCZ1DRNuHt3E+7e3STLEefha60KLR8jv51x1X1neTX+nAC4NrfDws9DU5nyvNscht7maz8PbvfrV1aL15cjXnoO04/H22tzb7LnlH6Hjf3II23fbFbhtdfOw8OHZ0JZALhlhLEAAADAM6lpQjg5WV3uFbvK9ootq2DTqrJ8GdDhnpKHVMR2t/k+sfWlkfNquPT89Pr1kPhYAesxxrztntbzel5fv6Xtft3mB5v5sV2hbO0zPlxCuHbN6R909I/LoDX9QUYZtu6eSy187Stju/b1ugnn5+vwMz/zUvjyl18I67X3JQDcJpYpBgAAAJ4pq1UTvv71h+Gtt+6G+/dPkqWJh2HrWNhxXLsqXOuVrXngMrdKdjhO/f6c/ofY5/xPSwjcLT/79M99Xlz/NZhegnj5cfMq9toJfftw+eJyjK5/07RZEFv2yytju4B2s1kJYgHgFhLGAgAAAM+U9boJ3/nO6+FLX3oxPHhwkixRXO4J2y9RvP9yxPsrK2Lz/SCHlXFpe9KSHRu50jGnfYRxPy3zua2e10D3eM9rLPyc2kM27gkb+9X7x/damx1Pv4f2CXP77602O1armI/fL3GP7NUqhM2mC2QBgNvF/zoDAAAAz5zNplueeGxp4tqSwHkQmi8BOjw+31Sg2l9juDzp9HjHChSvU536aQs1edYMPyZzfsxw7Gseds6uZYrzH5WkFf/l/tj9/bhcOwBwuwhjAQAAgGfOZrMKm82qEsTmFbLR9F6N5RLBU2FGV7GWVsDVTC0vWns8HszMDVYEMHAsuz52uz73SUt2rP49M/xhSNqnrJqth7dNsly77wIAuG2EsQAAAMAzZ73u90fslimOe8bWlvPsz5sfus43FgKnFbFjyyTPr7KrdRw7+XkIY56H5/C0PI9LFA8tUek6VrE6p/9Yhfuuz3htf+j4o4v+tqzqH1+muAtiu7auMvaYlfUAwDEIYwEAAIBnxtnZOty/fxI2m1USUDSX4cN0APG0wpxdfdKK3O5xXiG3XBB5WwKaJedxW54jz4rp4HKfH0Ec0m966fSxx2kQG8/t95BtwslJ90MVAOB22Nz0BAAAAADm+vN//u3wjW88DG+/fS+rii2D2bRSNV/acxhQHLoHZL6fY7nXYxqs1IKTOUscPwthyrMwx9vs01HVels0Tb/EeOVoOOTfY+pzPH69JjRNW6mkr8+l/x5pr46l3zfd8sRdEHv//kn4xjdeDj/4wcfhn//z9/d+PgDA8amMBQAAAJ4ZL710Gt588244O1tnS3vWlv7sLB8Wzl2udNcYtdtKz10jzb/o3p6F4FW4ye2TLlm+u1/t8XDJ4r5P/iOPzaYLZM/P19ebNABwNMJYAAAA4JmRLsG5WpWVsWWVbHfOMNi8fqhY7g+bj50vN1zfZ7Jcovg6AewxHPsaz0JweyzPawB8u57XeEXr8eyqVt9x9sHjlOFq/v1Vr+zPv++aq8rY1aoJp6ersNn4z74AcFtYphgAAAC49V555Sy8+up5eOmls2rwOuawitW4FOgueZ99A5v8vPrJh455fZ+mMPU6bldgmdtnbrf5eRANf2jSL1nc94k/UvEZBoDbQhgLAAAA3Hrf/OYr4c//+bfD/fsnYb1eVfaHzatja6arZedqiuAj3SN2WJlbr267zvX7eVyvj6Dm5s0NQI8dlN624HVsPrdtnlO6/Vz76t3h/rP9jy7aHXvX5uPGcco9Zbv9Y/PvoFgZ260ccPizAQCOy/8sAwAAALfeet2E09N1EcSmPZrB/WMVhnWhyTBYue74++9xK0Cd51kK8T6tbubfaFcAepNLIe/TN/9RSe2HICpjAeA2EcYCAAAAt95q1YTNpkn2ih1WoKYBbRlEHJJLpMFMvD9cUnjXwPvPY5kMRTBzfE8jULxNwfLTncucYHTY5za9XvOMVevH77Cyor/23ZZX4Mf9Y5ecNQCwD/+zDAAAANx6TdMkVbEhdJVgTagtS9w/Titkx8PIGOi0l3dqIVAagNRCk7HliWv9a66/fPLz5rqh2tKh3G0J/W5yHruuvczc5lavzu93W/4tp78Hxr534rE0vLVnLADcLsJYAAAA4FbrqryaLGTIA8/pfWLnGMtjxtp3h6fjSyWPBbXH3VP2pk0FXE8r/FrqOscY96YCwNsTPB7TcfLU8UGWymsP/ZyPfffVfgwCANy8zU1PAAAAAGDMF77wIPzr//qb4Z137oX1ehjEHhpgtm29f2zvj7chDVbnBMCHzKdy9nVOfk70r/3NjpGOdZvGuelr7HPNufOZP++xitZa874/ttjf8V7v+P1TOTJxnSY0TZusFqAyFgBuE2EsAAAAcGu99NJp+NrXXg7n5+skiM3DhqdRUXrda0xVq8lMlnasUPdpu5llgJcfe+Kq7fTj2rz6ZcaPE64eOsbTWe24C10HrZXq2NUqhJOTVbi42Ibt9mnMDQAYY5liAAAA4NZarZqw2ayu9ouNyxWHkAec+1SBzQl4ek1WDVseq/WfQwD7tLVh/4CxDYedt2vMpR3yPG96DhMjHTBUGtBeb9zbtaxzfUni+KOUJvs+fPjwLPzczz0Mb7119wZmCgCkhLEAAADArbZa5aFDCGEiID1u0Dkcqxkcfz73aTz+srLHOe+65gSsxw5gD3HT11/S/s9t/0D2eq/f06lyvY7xL5v4XXRysgoPHpyE8/P1U5wXAFAjjAUAAABuraZpwmq1uqqILUPZrk/tvPp4XcgSk5Z2Yn/J4bFyr9qx6w6D4rHbZ81tXKr3umPX/pa83k2OVTvnOm37HJ9jbIy+vR6S7nftecsZT3831MdL25/uZyX/QUi/t/Zq1YRn9/sGAJ4f9owFAAAAbp2zs3X4zGfuhtdfP88qY6fC0OnK1OG+oW2bn1M+nj/2dP/xMYUk8xxjz9ebtk84d+vLMsPx5jh/nOtWq15/yeLjXOsYxr86+j1l+z22l50LALCbMBYAAAC4dV5//U74j/6jL4X7908uq2KbpOqruw0hZPc79eQhVq/VgokYnDRNCG3bJnsw1udWb989h6kxl1cGmrseL3HNfY8f2ve2OXYQu2uJ5evO4ZjnHnjFtl6Zmh7vbneONDsYna56HfadV2Fbjp+fs1Roe8he2gDAcixTDAAAANw6q1UIp6ercHKyOmhf1v0Dj/FOAo1dnoVKzpty7Ndm6df6umHwMfrvGG10uN3XuU74WQtT97/WcV+Lqa+m53MvawB4NgljAQAAgFunaUJYr5ukKrbJjg0rYmuPa4FIWVE3Fo6U1bHzKl8Ho3zqg5Bj7jX6rIW+Tzu03Lcqdqmlhg+p3B3pPXNp4TQorYem9YH6Cty5lbb7GRvvmNWx5ZLo6VLuAMDtIIwFAAAAbqEugO33i833jA1hLGyYWx03DF92hSLPXrjxrIWXczwrz+lZmefSrr+k8vQPJ9pK+DpsG44xvnzx2LLEY9cfP78t2nYvmbzv0sdj+iXdn7kvLQB4LgljAQAAgFunaUK1Knas7yFq1XRz5vXpMS98WuY6x+z/tB0yv6X2ir1u/6fzWu+qaD1mxerx92ktQ9cDR7nGucPvpb6yXyALADdvc9MTAAAAAIju3t2EX/iFN8Obb9692i82hHxp4vFwoQ0hNKFtY9/ucdajnQpU8/679mOstI6f8Nwbvtbzji1xvZt0E0Hssc47ZB77LFF8vWuPB7bzxpyqgq89Hq+QHZ/fPu1TjlcdCwDcBsJYAAAA4NY4PV2Fr3zlpfDKK+dhvW6SpYnLPVz3Nx3E5sp+go2lHRKu3qZA9mmEpUuO8TTGnT/e3Gr13Xs/d/vCzr3myJGd5+1/7u4li3ddcw7fWwBwO1imGAAAALg1miaE9Xp1GcSGrDJ2zK6KtDIsKSvsYlhzSDhyO5YAPdaSs9cd57rL6B5aVXqTyxZf5/pzX5NDX9d9/p2WrM7dNdacwDJdCnj4ea3dH36e43j7VczW9p9t23YkhG0H5+2e11jbsHFsfmV7/7XUCGQB4BYQxgIAAAC3StznMAadcwPP8ZCjHvakYcfx95Gsy4Of64SXhwSih/S9yaBzHzcxz2fltUktFajOeXzgVXYMM/XDil3LGk+Pff2QvT7+db532uJ2miAWAG4HYSwAAABwizRhvW7CatVchbJXR2YEC334Uqsqq1fG7Rr/uksjH++8pxH+Xfcax6iOvU4Ilv4d27HGn3v+dSqZrxvKH/t9MHep4PryvfXP9WFz7KtJy2AzBrnDOQz7Dq8/VqUaj9Vu8+rf4fn542FF8BRBLADcHsJYAAAA4Nap79l6vHRhV8XcssaXSb2djhnWPc0ne6xQ9pjh7txxrhv2HnvMYzo8RK3dP+T8Ocfmtu2+7rz3T33/2/Flj+cQyALA7SCMBQAAAG6Vrio2/u0fKOShRVtUwfVLF+e3hzlGpV46r0NDl2KkkftzHh96nWONmY5xzAD0On/HcswgdslweE7bsd5H6ecyv99/Fmo/XsiPj+8POz/ELb830nmkx9O55VW25XfMtLTa9rDz5x0TyALAzdvc9AQAAAAAVqsQ3n33fnjttTvh5GS1Z4DQhlrVbAwk0rHatp29B+2xtG2cQz/Pvu3TqP7vdf2+t9WxK1KnxlsiIL/u/MfPv27omB4vA9KubXpp3+GywMcLuWtLDpdz2bdad84xAOD2EcYCAAAAN26zWYU/82c+Ez772fvh3r3NVUXs3MAyD1nb0LbN4Nw0AH26Yeh4oBjnUQts6+c/jXBy1xwOHePQ8Z7lQHaf1Oy6FbH7BrFzq2J39dmnSna6knzunqtzxxse6yvl86rbvCp1uGfsxNDFeXP2vB0PZPN51eZRVvmXlbqp7jvxWf3sAMDzwzLFAAAAwK2wWjVhvW72qlwtQ42xIGSsQu0YlXmVMyaWV91zpMk57htELeFpVVw+a6WA+bKz8/ofo88xr3eMax5yfn2J4uFS42Ofjfrnblel6e4Adnw55Kl51PeCnZ5DWa27z/Llte8eAOBmCWMBAACAW2G1asJq1QWxcwLZsZClrEKrHbt8dMAs69fcdex2LSs6p5Jxn6rJqfZdT3zfwPJWvZAVh8zxGEHsvv82x5rHPlWxRc9K4DjVp2wbW154+PkfHhufx/BYWc06XA65/j0z/r20+7qVWVausfu99uldCh0AbhdhLAAAAHArNE2TLU3c3e5a6na6LV/ys789fjh6WAh1e9zkpA4JL2/bi3jonG4iiD00fD9elWz+Q4k8LC0rSculeacqX8cCz/r3wPwfTkwvj5z2a4uQdRjkzplDbaz6OPnrVVsGWSALADdPGAsAAADcCl0Q2+1xuG+AUO6ZOHf54n3Gn3POIWNePqocGw+gRkbco/+hIeAhFZjHCBzHzrnpUPY6c1gyiH0ajlMlO7dafezzPfeaw0rU8YrZYQAc23eHwuPt03Msv8Pq7eMVxFOVtwDAzRLGAgAAADcuVsSmlbFDw8rWWjiShhbpUqX5kqPXSSrGw5Ty8VhlW61tKlDedy7DY8dMZm5TIBvPe5rB7HWvN/fc6wSx+/wb7RO6zzUVzNZCzvoPKGpBZvrZn1ryd85ywOV3wjCk7dvGlimeE6CW5/djt1lb+hynfpAxrJrN+wliAeB2EcYCAAAAN+rsbBXu3t2E1Wp3Rex1K1wP6T/nvLGquF39x8KYHWfPusb+bkOCc4wQcInncazAd+75NxnE7nu9fcbZf4xdy4rXlvwdWx44P29svOFcdn8+h3OonV8PiOe/t6ZC39q1LVEMALfD5qYnAAAAAHx6NU0I3/726+GLX3whvPLK+dW+sZdHs77D6rFmcKxtQ2ia/ljT9Mfi/bGAoqygm+qXjlXv217Nv96vPz6lbdvLpZuPobzmnDmM9dm3PR4LM685p9+cMW6LfebztILYuWPserzPeGXIWe6xWg9D82N92Lp7Xu3VbVnZWp/H/FB1+JdXrpbnlHOsVwKXFfxpWz722A9AyrkAADdPZSwAAABwo+7fPwkvv3waTk76/0yxa6niKWPLku63/O+8atXp6rr+vKmlUnddI54z77wlKjevE74dcvzQ695WNx3E7tP/kNd8v7B2KkRM7+/+bNWCyX7c8SrU9NrjcyjnsW8VexmI1s6fV20/bIvBcfk6CWEB4HYSxgIAAAA3ar1uwmazquwX24axMHNYkVYLVeK55b6PtWVP9wsx9g1R0rmU/cplVtNquPE5zg3ldgVl1wlvrhMM7hPIDv99b7995z2n76Gv99zQdYkgfvoHBv39vBI0bR+rlh0LJtP+tc97rbq1HHdYhV/OefgZq31uh1Wt+fMdm8/wOdX2nE2vne8/249hnWIAuA2EsQAAAMCNm7sS71S1XC202FWFVgtiho/HAqVh+/NRmLZPKLdUmHvsaz0thwTHc/of+tyP/ZpdJ8yvf17mfWbaQUi5r/Glg6dD2bHvjWF4ms91YiaDOcz5burGzX/UUZuH6lgAuH2EsQAAAMCNWq2asFo1O/dGrYcT9Wq1dDnSPKDYHQiVlbZ5ZVs96NgvzBlW7E2FzOW5Iz1H2mvH5gRqxwhk5wST+4aXbdj/nKfh0BD2GEHsIf8uh7Rd53F+LK8gHVa/jleH55/FWhA5XmlaXmP43TD2XTGsrq893+G1+nPGKndr803b2pHnMB3gxkrZ4WoDAMBNEMYCAAAAt9Ku0GEY3gyrzaYeJ0f2ms+wfff58yvWalVzhwSw+7rpcPOQ6990KHudYHjuObcliN3X7h89VM+a+FFDd3/uZ3W839g16n3KELneli4TXF5/9w8t4rnpe2kqiC4D3GHVsOJYALhdhLEAAADAjeqqt5qsgmssLJkX6NTCkvpYY6HT1DV2hR7D9lqgU7+tVcDN147cn/N413i7zpsab25geWiC1BZ/SznWdea+Foe+pksEscd4P132LELLWqVprb0MIPu2qc/w+LLltf5lVexYRWrtxx/18cpzhnvIjn3+0znV94wt3wOCWAC4rYSxAAAAwA1rRpfSrIWofSXZsCqtVjHWByvTeznuqpbLw6JhWx/89Ncbu0Y9WJm63jAcGl5//PzDHSuQnXM89rnuvMvQdN8xr3v+rnHn9Dv0+KH/Nvtcb7+xxoLVYehYO3f6WBpApssOj3++2uK8/DM7Npcy2E2OZAFrfm7+nVT/rghFn3QOte+PfCnlesgrjQWA20YYCwAAANxq+RKe4/usTlWU7g5ax/tNhSa7xrxupVr93EMH3BWq7RtY7tO+7zWOFYDWxtz1d2z7jPs0g9h9gvYpU++j/Fj5Q4KxStDa+bWQdZ957Q4/621TP/QY+8FGeW5+/ni17tjj2li1v9pzAwBunjAWAAAAuFHdMsX941qoMF5RmgYRaYXseOXb5ZmV88vrtoN+NXlQUlbD5fMcPod6IJY/p/p1y+cyvD/HnED2kJBvV2h4k6Hs07BvuDun700EsfsG+ONzHFZz5sfGQshy3No4terU8lj/WSq/I8auOwxSxz5rY6Fpf53h90L6I5N8z9m02rb2vNrs/Lzvs/hZAYDnnzAWAAAAuBHrdRPOztZhtWpCCPV1iqer2fIAa6wyrBb+XB6pXXHnvMeXDE6vXx+nHi71484fc5+Qb+rxXEuEPPuM+ayEsofMc07/2xjETqu9l3eFmrU+Uz+EqFx1cj718fKlf/PrlgFuPkYtuC2P19pqcynD19pzqv+go5zz6EsAANyQzU1PAAAAAPh0+vKXXwxf/vIL4TOfuTM4Vgsxyvtpv7LatG2b0AUUTWia7rY73h1rmq5vXpGb9puee3luek5s70OadA7dbTy/u+3nlIx21S+OWbvmyOxCHm6Xj+f0D5VzauOM9d11bJ8+tf77nLOk6yRf1w1hp44fO4idM9ZUwNpm9+thZB461oPG4R6xfZiah6NjgWd5jbJatV7dWp9nPk4+tzIg7StZd88rn0u8358/XgmsOhYAbiOVsQAAAMCNuHdvE1555Tycnq4netWDoqnqsUHvParFapV8aTizq2Jtzhzq1YHj/fPr5MFUbS673caw5pA5tcnf03ad684992kEsXNNBa/zxq59ttLAsjZeLTAtr1f/nMTbtnpsGPQO51+7ZhmkltX55fljlaz1vWTr4ezuMcsl2QGA20ZlLAAAAHAjVqsmnJysLpcpHgYVsYp1WP3WhLZtQ9Okx5rk3Cb0Va6xX1p9mvbvQ5WmGauKjWPmVazpfJukZDW2D6tY47n99Ye6a+2qup06d3j/kMdTbWGP9l3Hav3m9J06t3RoBe2xk6254x0awk4dm9te//HDdR7nlbBpYDi2Z2u+Z3I5Tq1KtaxuLW/LH1Xk3yfptafnU59X/j1Se47pHMs9XvO/MHG/nE8bttt6pWw5NwDgZqmMBQAAAG5E04QsxAxhrDKsXvE1r1rukDCiDFTmXLt+3TK42X8e/f2xPlPn73u9ZcY4ZKxjJkjtgX/Hvv7cvocev24Qexy1sDS21/rEfmOf8V2ftfLHGsNjV2eMXqv2eGz/1jIUHZN+/uuV9bXrT4W8af8y8M7DYADgdhHGAgAAADeiaZrLQLZ+fKpyLQ05yvayIi4ZsRrY9CHNWCiTBz7pOWU4k7aV444FRWWYVFYGDkOsw8Pd6cf7th0aEO8TTB47GH1a9p37rr5zjl+3vfb+2PWe2f2eKt/Lw8/GeADZt4/vFRvPK68//r1RjtkOHpfLG49V66bPoTbHMpge2+u1Ns98SfKx8/PK2vy1qP97AABPnzAWAAAAuDF9ENsHP1OhaLyf3vbnD/vXxsrHGAYYY1ln7fpTIdC8MWoBSv28Mkjqz0tPvn54dhy7xt03ZH1WQtmbeF5LBLFzzis/c8Pqzdrnozs2/MyNB531a459Hssgc/AsJr9f6sHwruvUx576Thj7YUg+Zn38YUA89l2363sFAHg6hLEAAADADcr3Wh0GNMPK0FAs+1mvSIsntaEMPvKxpgKbsaBsaknVNuszrOJL5xWK+8MQpgx35oUrS4R746/FdOi3VCh7W1KmNhw2p7n9D319rxvE7hvaD4PZ/n5/WwaY43vI5p+PYTCahq3lZysMjtW+F8rPZz7HMDpW+XyHVbPjFbLDaw73jS3HnN43dvjc4g9cBLEAcHsIYwEAAIAbMwwO6oFMH1TkS5Pm4cmw2qwWqqRBSH5suN/irsqz2nV2Bb/1QGl4jXoIO1ZtOJW87ArWaqHevknOPtcf63PINZ9mOFte75BrHiOEDQceO1YQW/vsVEYpPpfpWMNQtv4dUKuuzT8fte+D+g8g5n0vpG3lMsZTcxv/jtj1vTXePrUkcajcT1+XznZrD1kAuA2EsQAAAMCNGmYFfXhRC23ibVm5Ogws26J92FYLUOrZRW0Ow0rVXaFsPr968Do1Xm3sWng9L1DbZSyo2yfs2+d6u8afe+51Q9NjjDE25ty+hxzf999mbtsu5Xt2rIJ0KgRtR/uk7bUAdmze4z9qiNfaVS2b9+3HGtunOn2utWWI82B0eLz2fVT7fqsFt7XXtg3b7dh3EADwNG1uegIAAAAAu4OFPPho2yY0TRnONBPhZXdOvN80Xd90z9p4PPbpx0uvNzy379sdi9cuj4eQn5vf5tePc+r75/Ppr9Pfr7yqIV0Gev/HY22HtMdjYeL4oX3nuIlEap9rHhqO7zp2nXB2/z5TYWNtafE4Rj2Urf0gIw1i8wA3PycNT2tzKZ7FyHWGgWt5bm0J4XQuY8sU59W7wyWK8+feVbimAWtZHTusgH3vvUfhn/2zH4f3338cAICbJYwFAAAAbqU0eB1Wd9XCyzScjMf7ILUce+yaMfisHxuGp8Ox+zmU49SD2Dy8HTsvvVb5eKxtf8cKZMPIsTnHD+17W+wb/N7GIHbOeWVleB6O5v1rQeYwGK0FpbVj+W39hDzszM/rxxvuN5sGp2NzGOszttR5bfw0iE3nMz6PWoBbn0vbhvDRRxfhe9/7SfW1AQCeLmEsAAAAcKPyirCygqypVMA1WShRVozGStSy6rWsIs0DjSYLOuuBUF6R2/VvQ6yKjeFvWh1bKsPcPPitV8f2zyUNgON1++fd9w/ZmMephh0LRccC2V3Hpsac6pu6DQHtvsHrvucdEsJOHZsbxA6D16nHw6rRvNo1D0THK2HT8fLvgVAdPx17uH9qbQ61AHQsZK2Fnul31fgca8fGAtThX63qNVwtOZxXxoarqtl5/64AwE2wZywAAABwY9KAJn08DHtCFnaU7bUKsXLfxnKc2lzyY8NlRtO51SrS+vY269ufM7x4bZ5Tzz9tm2e/YG28be74+45znUDzpgKn61x77mtye4PYqffj9GcsPTD2+cz71M4tvwumjqXBbdq3dk56zVowO3wO+XPLr52PX1uaOb1Wfs3hD1Pi91E+Xvr9InwFgNtKZSwAAABwg/Lgo7vfL008VbGW7+kaH7fZbVntmu/jGrLrdNWmfdtwnnnFa1rVms6/XEo4FfedjVWxwyWU4/zztnSP2HjNYXVsCIdXxJaPp9rCHu27jpV9on2qXvcJofaZw7EcK9jedfy6IWytffd8ys/u1ZEkWB3eH4altYA1DyPLz38tyKx9nwyvOQw6+3AzD053VbXWKmTHq3XLtr7KNe4LOz5WXxmbV8tut+lrnoazAMBtoTIWAAAAuFFToUkZKpR9i5EG/Yb3a0ue1h/315muiqvtEVkbqw+R8uvVA+fy+QyXIk2DpNp4+wcy+4R2+4yRHps73pLB6NjfUtc7Vt9jBbFzx6i/18c/W/1tLSwdO1Z+Pmvt/TjlcsDjIWk6XjlO+Rmrfb7K51QcGRlv/LmO9a+9BuPfWenr071vx18rAOC2UBkLAAAA3IhhAFnu8djv9Zr3HdszNg0/miSw6Pd0LfdeTcObbr/ZfNx8vmWfco/Y7lp9xWp7OUYb+mrW/pqxSrY7vw1pVWu/d2wcc/j88irfJtvDduQVD8Nq2PJ51s4fayvPnXNszvGyX3Qb9ojd5Zjh9Zw++x6bG9ruPneq6rUMCct9Yuuh7O72YSiZBr5lW22MWsXr2F+5d2s5l10VsbU9sId71+bH8qrZWA3bV852lbDp/fFlk0f+qQGAp05lLAAAAHBD2uR2uJ9i7S+EWlXZrr1d28G4/Tht0m8YYIzNYdinHZxTfcbFc8yvUa9yq12jfC75dYchWXrebtcJ8fa5VjujT63/bUqZ2nD4vJYKYsfmMta2+z1Sq9bsbsc/l/Vz65/z/Jzh8sTpvMr+ZbhaO5bOuZ9DW1yjDGyHr0UthM2PDb+Dhu39fNIxhp/9NtSe167vi6nvHwDgZqiMBQAAAG7MWOiaBw7Dytfudri3at8+PK9tyz1j831p06rZNDSpVcim1y6rVmOla6ycjdWy6T6x3fX6trFrROW8u7Z0HmmFbqjuQzv9uHyewznV28bOn3Os7LOr39g5qSWrZ6+bcO0bPB/z2D7h7HTbWBVsPJaHh8OwMr1f/wFBft1aAFoLXYf9huFoPTAdBqO1ELVcLni8va3MqVZZW/+Lla99ZWy/p2y/X2ybVM3WAuD6sssAwM0QxgIAAAA3Yljd1QeVaRBbBjXpUsGdMhgdLkOchplxueJ+ieDhsXSO8Vh5nelQNgzGiUsUxxB25FUJ6RLEsS32r82ttlxx+tzKsDa9zrSxQDaMnDs15pzr7Rp/jrkJVLoM9NKOFcLuOn78IHa4H/JUEJsHnP05tcA17Ti2PHEtTE3D3XbQVo5Z3o5VwebB7DCEje3p8x2GxWPhcT/fYWjcDv7S5zD2WpTPJfXRRxfhN3/z/fDee59UXhcA4CYIYwEAAIAb0wcwbXa/U+7rmv/FcLM/N6+UHQtha2FtGV7m+U4aJPYBbJ9txrY8SE1Dmy5ALgPRsWukr0u9CjbdI7YMavvXZhg2TweyY+HrPsHrrkA2TBw/tO8hlg5h9x3/aYWwY+37BbHxnDSIrYWtZd+xwLXsU1sqOA99p/ZwHQtiQ3bdsft5lWwf+A6P10PcfI7l65DPrzy3/pzG/mr/Rl0Y+8/+2Y/D48fbAADcDsJYAAAA4EaNV371IWpZYdbdji9f3FWfpsFtv3Rwek65NHEektTG78PRWLUbb/swt72aQxoo9+Fx9uxDLQBNx+orgectV9y318bf9/FY2672MHIsPT7Vp9Z37jk34ZBwd845h4a0ywWx+WdtLHwd9i3vj++3mrbvXp64Nr/aX3/tqSrZPCitn19+P9XC07E+U8sV98sPp0sVl33i8sXb7b7/9gDATVnd9AQAAACAT6d6FVitQixWmI0HH+mYaVCUX6s2h/rein1YUw82xsYfXwZ1WK2XnF3c1oOnPNSaem5lcDbVt/rsRtr2ad91bJ8+Y+fcZOjUhsPnMfecqT67Xve57fsFseU5ZXAZ+4+9Z8v3Xxp05tccjjM2n/y29lmavvb49YffS0mP7LkNr9FWxhpW6g4rXUOhXg073h8AuI1UxgIAAAA3pBYupPebLOzYbtNK1hDSatDuWBNWq9oSxMPlissx8rCkXC44BkB59Wnali4RXAtI8iWE071w61Wo+VLHfb+xKtjhWGlFbW154lCcmz/vetsh7buOlX129Zs6b8y+lbTHTrj2GW9OeL3vsXkh7FQwm4aMZfiZh5HDKtg49li/w/daHWurVdOO9RmrUK19L+VtedVqHpB2x7rq1vI6/Xm1a6dVsWkVbF8NW1+ieKzqFwC4DVTGAgAAADdiKpAog5r0nP7cwYhZn/y88SVOy7HT8cs51EOOXVVqeUAyNY/x516GYrX5lFXC4/Oeev12t03ZFRbOGW9uv7naPf+Ofd19+h96fJ8gtt5v7L2VBqr9seE545Wsw3HLfrve7+OfmfHnN1aNPtyzdRiYjo1bzif+G+fnlZ/z2nMcC3nL5x3HHy5/DAA8O1TGAgAAADdiWFVWCyiaq70R456r/b6vZYVsVz3WVceWwUlzNV53Xr8na+yTVpLGc9K5hqLaNB0r7lGbVsyGrKI1JNdJb+OYXd90D9vLK4epKtQ4Rlo52587eMUvx99VETtnz9jauXOOpcen+pT95vS/SYekY3OD6UOOz22vB/DDAHReRezw/tSxehXtWNVreu1+7GG/WoA7/je/UrasSs0rZMcel20h2Qs2Hbe/Xn+d/txYTRsrZvf7kQoAcNNUxgIAAAA3Ziw4me5bVpD1wUUaLpVjl+OX1xlee1iNVhsrb68vEzoMo2qVuuOVebW28jnUzy2rZXc95/p19g/9dh3bp0/ZP/7dBofMZe45u17b6waxl62V9/XYeWNBbO3c8nMw9jksPwtpeznP9NrTVfXx+6HNrpE+rj33cu7D8co51J/TcC7D74Vh/9r3TZucn86hfF3ycQCA20VlLAAAAHAj8j0Vu6qvWDUa90cMoasgTStLY2Vs7J/uoVruMzsMTGOfNhsrDTH7yts8cIpVsX0VaxvSqtx4m841XFWVxnNiwJJW6O6uhE0rcuv7xKZ98mPDatm5FbJz2qba02Njx8s+U/12nVdznUraY4Zac8fa1e+Q8HteuD5cRrt83J1XBrH1+8NjZfswuBwLPOvVquk1837zbof7uQ6rXuvjj/VNH5fVrvl1Y3Vrej/vV+4Z22Z/5XdOfC3SYwDA7aEyFgAAALgxY4FGGRaV4U3ZXgY1wwq4dLxhJV65V2N+/WFINNa3FjL1x2vVsMPnVJ/nsMJ1eO36cyjnXbte+hqUc5jXFtsPCQv3HWcf7TX+jnntuX139dn32LC9vpRv+l6p3w5D1Px9n96vvZfSc8u5lOOUn8vac8nHql+vdt2peezz2sTPVP07LG8bm0c+p7YYsz5uMfOr8y8u2vD9738U/uAPPhbIAsAtozIWAAAAuBHD8KOvbI3VYF0laV+Rut02YbVqL/eGLfd4jeM0xXj5vqx5qBLDjLxCtt9TNu+b7jUbK1776tZQ7P+aXy/V7xvbn1+reE2rWuM5IQwrgssK2XTu/TXj65RXxMb+5bV3t4VK+9xjY8fH+s7pf9P2TcDmhrSHHJ8frA+D1zJ8HFa8Th1PA8LyBwLjFbLT+8TurlSt9+vH3XVb+2tHqmdre8NOh7LpPrC1yth4nbQKNq2yHdsrNvXJJxfh//6/fxg++ODxaB8A4GaojAUAAABuRBc+5Mt0pgFE7JNXmJXVovUwpT+3/hcqezCmFbnpdcs5p3NI29MAqQyB+nPi+G02XjynHy8PsdK2YXsevA6Xhy2fZxiVP4fsSDa/3e27jqXH54aYbdj/nCUdOp85/ee+dmPHhm3l+ySE4XtiGJ7W3ze1914ZbqZ98/d+/h7N51arAJ9apng8YE0/g/G5lZ/BsfPK13A4j+nPYvndNN6v/8u/B2NbDH3Lz3l5/XYwLwDg9lAZCwAAANyINHgoA4fdQWoI+V6x/eM+VOkrTmOVbFetGkJa+RrPSfdcbdsQYsFoOl5aqZpW2vZ9h4HXeBVsvM1eldDvLRvP76+ZH+/vh6Rqtzw2nM/uCtnu9Uj75PMbGmvvx5+ubJ3TZ+ycmmNU0R4z2Jo71pyQdv6xNHzM29vk+DAIrT2+TkVsGrjmQWb5w4G8vf65D4NzxkLkqfAz/4vXHq+2Hc5rV0Vs2t6HpbGiNq+sHY41Vk1bPh8A4PYTxgIAAAA3os2qwcrq2O5YCCGsVnmlWL88cT1Mqi1TnAay0+d0bd3xWt9y+eA0CG5HlikeBpV9QFsGtdkrlATE+f0ykI39++WNy0C2X/K5Nn7f5zpLFO8KVPcJZaNDQ9WbTqn2uf6cvvuFsOPttUCz1j4exM4Jamt9h+PkFbG19jIk7foMA9jhvPetlh2Gr7XvpN0hbC1cTZc0rt2WAWz/45S0MjZ9XWv/pqpiAeD2skwxAAAAcEPyAKL8u+pVtNWCkMHIO8ZKw530WN5vOH4ZZPXtw0CkNu+0f37bzSm+LuW4tfP7x2NLvtbmnE+8vlRzOf/6azwdAu4KD+cGR23Yr/9N2neuc/pO9Rk/Vv83G6ssrQextQC1Ns6wWnN8CeK837BPeW7Zfzoc3b08cdk/PT4euNbaxkLYse+nsSB26rz8b0zbhnBx0YaLi2fhMwIAn04qYwEAAIAbsd12IUJX/dWFsrFCs237ytim6StIu8rYskK2GyMWdca+sSo2ve1DkbxSNg+cyuWK82V900rbdJniYeiZL5PcV82G7Fh/m+rb8uWNQ6hXwg6XMu7vp+eUx8ceh6JKtjbOVPuuY+nxqT5j/VPHWJJ4rusEXvuEtIccH2+vh7DD92yt31SfstK1v9/3rfXb1acW0E4HpOM/6Ki1j58/dt2x8LR/nC87nF9juDRx/zj9/kuXJM7/8ueUPq+Lizb8+q//MPzhH34SPv74YuQ9AADcJJWxAAAAwI2ZClJqgUq8393WK8b6pvbqNg178jGGgVOsFsznWIZRY9V8w9AkvX79eYy/Fv3xMuiqXS89UF6rfO5l5WTtdWyLx8O2qfPzY3MCxjn9dp17nXHmjHudceb23f947TMT+0+93/rb8cB2bKxh+Jp/9sbCw9q808e1z9buufZzzudWfo7L74R8HsPP4Fhl+vT31HC54nqFbAi18LY29vjnrm3b8Id/+En4gz/4WHUsANxSKmMBAACAG7HdtuHiYptVgHVVr32Q0rYhbLddVWjT1Ctj+71lmyzA2G676zRNvu/sMNBpioCkKfqkj5vktmxLn119r9hoWF3bXp0XsorZ2JadXfRN+7Qj98cel+f2j/t9Z8eqZMu5jbXPPV7rN6f/PuMsbd9rzum/K+iutA7C97Egc07VbBm6DoP+2pjDwLYdnDPWp3Y/n0tbuV79dvh90hZzGKuA7a/dV7a2lQrYftyyMjathI3n5rdplWz9Lw1u83/TYeANANxOKmMBAACAG9GHFTFcGatWa4vH8XgtFCr3WMxva5Wn6XyG184r08rgauz8MiAaziMdpwxy6/3qlaq1x2m/smq3Nu7wdR0+xzwIKv9thnYlRO2MPrX+tzV5OvT5HN6nfP+n7d3t+Pts/Lb+Ph+Olfcvr1F/X+aPh2358sX56zA252FQWbtu7Xpx/vnnNBuhcp38OdYqd/v29Dut//7Jr5tfe+r7qZ/77u8iAOB2URkLAAAA3Ijttg1Pnmwvq2Oby31f476JIdlDtkn2j22ujjdNE5qmvRxrWBnbBRuxf9e369OGWO0ar5GfP6yI3W6bsFrFECSthO33nu2OpxWx/W2/5+v8vWLj/XrVbK1v2ONY/ji+zvk80j59W14lO9Y3bQ8jx+f22XVO6Zh7yB4r6Zo7zpyAduRIJUQfD1fL9lq/8WWJ4zn1+2UgPKciNgzau8r2XXu5Ds8t92Udu01/CFKeGytW+9u+vb43bL7nazwnrYQtK2Tr1bB9xezFRX0Z9vTfIK+cBQBuK5WxAAAAwI348MPH4Q/+4OPw8ccX1XAlhOkwpz8+DGTKtqh/XN8LMh+zq2xL28vbsSVEx8esj9OHTvXnmI9Tr9Kbeo61+Zfzq70m9SrLdnBu7fWqXGXiWNrnuslSe8S/Y81jbt/x42NVk2kleNmetvX/xtMBX/29UI5Vhq/1vmXl7Njnov5erYet6fXLMDW/ft43bS/HL+eez7Et5ldeu/a9Fc9pi3PSa5fPr6zsH74mtTnE5dgBgNtLZSwAAABwI37nd34Svve9j8LZ2Trcv39yWaXaXlXBptWwsXq1u22zxyH0oUSs8KxXzfV9+z59NWw/XpP17UOR4d6xtb5T1bBd5W9f7dqfG6t8m8vH+XmXvS7HSI+HSp+wx7H08f5twyrZsf7lsTDRp9ZvV/+bdkhwOzekHTlSBJ397VgIGyr9p0PWss8wxBwuFd73nVsRW4an02HrMMAc75Nep6y0LatVY5/pyth0H9iyurbcGzYUj8vb/lr1Y/m/Q/lvF0J/7mHvPwDgaRHGAgAAADciDU9iCLFaTQUuMYgoA9Dutgspp//665ZjN1fnp2FiLZiKSyXHIDJd9jiEPCCOYoAaQ9f0ev1147WbbIzYvxsnPTftm/YpX5M0xM3Hi9fsnlMY9EnnGK+RzzsPZfPgqL0KtyfeBVev9Txzw9wlXSf4mnvu+NKztRA2bR+GrtMB63i/8aC1NscyfE3nkI6Ttg3HGAtu02u31fmWn+t0TvWQOD8WRqqTh8FwGUaPBcdt8Xh4PA1z8wB4vDo+fb7f//7H4b33PgkffXQxmDcAcHsIYwEAAIAble+h2CSVr+mesbEqtg9sQ8jD2b5//EurX/tK1bxyNt1ntlYBWz7O95ztg8zhnGKwWoaYubbom7fFkLR2fG6F7LDfMGyth6LDtu68kMyrHsoOn+PVCJXjZZ+pfrvO22VOte4x7TP2VN96ZWt3f34IW/YfD2eHj3cFtVP3a4+HS/jOD2Knq2l33YbB9dIK2BCGFbLD5YjrlbH94+E10tvhvrHp/X51gPI9Uf7bffe774fvfveDAADcbsJYAAAA4EalIUQMWvslPmvVsn0QmIezTSUEyQPZrk9fGTrsG67a+9s8gMwDq7yiND0nD1TL0LUevo61ldWvtUB22GfYL4bbIQyD1b5PvUq2+Fe7HGMslO3/PVLdUswh7A5bDw1nd1kyeD1k/GGQmh0tDswNYdP28YC16zv9eBjE1sPRvG95rLY0cT5m/dzx42Hkuvve1uY0Vu2a359erji298sPt21Z9dpePU77jbwTiufaDt4bAMDtJYwFAAAAblQfTISrULZf1rcPX8vgtA978krW+jkxWIzXrI/Rh48hlGFiHmamgW4MPNvsnPRaZRBbLnWcXGVw3TSkza8xDGTT/sPrh6sxaoFt/jgM2uJzHy6rXAtl+3PSccrz4rm7LRXOXtd+gVgalu4adxiyDscog9OxMLUcZ04wO1YtO3W8nEc57/S8/PM6dp2pELUt+o8Hr2Nj9efnYwznN3a/DGGH3znlddMQt/Z4+O8XBto2hIuLtnoMALh9hLEAAADAjdpu23BxUS7X2VeJxdumiUsVd8Fn97i5Or5aDZccLv/icsdd3z7YzMOStMo0hDQcjZW45dLF8bZt27BadX3juTV5gNVcjXnZGvrwNoQwWjW7634YOTb+uNwPtqySTcethbJTywCPh66HBK1zU6hDQttjJ1zzxpuugu3HmRvMzg9hp4PVsaC2dm7atwxsp6pmy/Z0DlNVrOkyw/k5Y3/D89JAtL48cUj6lhWubWWM/i/vk96G7Mcn6f20Qjf990vn8tu//UH47nc/CD/84ScBALj9hLEAAADAjcrDjX5/2HqwWu7B2oeKZb9aGNNXi5bhYhw7hDSELR/ne62moezU+Ol58Zw06OwD3b4Cdvga5cfzQDjdWzaGnnFe6XLD+bLKZWVuvmxxbLscZTBWv9xx+tz712f4mtRD2SKDDCELL5vBa7GfYwer8687fF4jPWeGsOmx9N9n2DYMV2ttZShato33qc+nDF/TPnnV7PBzOXwu9UrYsXB2/Hm12djlOOXzCUmwnfdP28f71L5z8teoHek/rCROn0vZ9uMfPwr/6l99GACAZ4MwFgAAALhRFxdtePKkq45tmn6Z4r4ytrl83IWAq1VfDRtCCKtVrFhNg9xaMNJcjV2e043TXp7fV8aWj2MA2e1v2y9zHEIMTuI18n1iYzVvXz1bVrtG/TkxOK1XzZZhar1PGabGpZbLoLkMZdNzdrcN29MQtv4ckzObWp9639xNL1V8WNA7Fb72j+uhZrxurX0sJK0FtnOWKR4LYYeBab1v7dhUpWz8HM4LYut9+iV/+9taleuwMnZsyeC8Mjat3i8rXdM+ZYVsrQI2/YsrA9TeU2PBMADw7BDGAgAAADeqDz/aIggZhjYxzOzO6ytA+6CnXhEbj5dVo3nAVdvbtJ9jWYla9s2P5eOVlaLxnFpVbBrIptWztb1i0+vUqmX7a5YVq+USxMNgOK8CHi5dHJ9XOn79uabzDdm5+esWBnOo/VskR4rXd8lwdhiO7nt+PXQtH9evc4wgNp1LbX7lPPLz0hB1fB5xLuV8y+dW65OeW/v8l8+t3qctrjt8PHbueHVrG8afU/p6tMn9udcox56WjgkAPDuEsQAAAMCNurhow+PH2/DkyVhlbB+2dYFjrFaN+8bGkfq2/pxwVUkbb5umuaqCjRWyITSX99Mxm6s9YvvlkWN7P49+D9k8DO72ju2P9W29WDE7vi9sP+ZYhezwfri6ZtxXNz3Wh7J93/Lc3rCtr64d61u2l8dqx/tQtzS+1+xghJn9ljQerE2Fr+XxNPhLH5ehZ/3c+jn7VMOWj8uwNB4fX743D2/z84YVqnn7nIrY+rF5lbFp+9i4+ZjlfrDp+enj4V6w9YrYWAkbb8sQOH3t+tcmr8YFAJ4dwlgAAADgRsVQog9JyqWGmyIwyYPPqDuet8X2dNng2K87lvfrl/MNIQ0vy4CqXB44HzO/XllhGkK+z2q8zcdLK2j3rZAdPv/YL46R7/c6rJLNH8dzavu91itlw2Wla7mvbD+/PthOh8z7pPNP2/epnn0a5gewfduuEHY47vC9mreXYWqtLQ33ps4tA9XaNcfC17xP+VyHSxYP22tB7dj820Hf8vrlcxrOvRbClvOfqnZNrz9W5T9eETv+Hhne/+iji/Dee5+EDz98MjwJALi1hLEAAADAjXr8eBs++eQiPHmyCavVNmy3q6Iytq9W3W775XvL6tbVqgtAY5gbA724bHA8p7Z3bAjpnrP9krl9ZWz3OA2BY5Vtd4000EqrXLv9Yvuq1jYM95XtA56+4ref45wK2TKoTZ9D36983Aeu9eOhaOvb0yWPx/vWj5Xhc/64NkZpOnkd36t2X/stHzve3lbaao+nlzKeCmCHbWP9d4ewafBYnjN2vLw/fFyGn/058XM+Xf1aOz6vMjathE2vM1UZW9tLtqyEjcfHKmTT86b+hkssp/8mfRC83Ybwe7/3Ufi1X/t+tmc2AHD7CWMBAACAG/VHf/QohBDC3bubsNmsLpcUTitk+2AjVnWmVbAxtMyr1posXOmXGY7L99b2lu2rP/OQq39cVr/mfWLA2YeledVqH8jGILbckzWqVaf25+XVrWl7SPZeLc+Jffsq2bzvWFVsP+9eWikbx+73h6211+ZW7htbVs2G4nWsh57DSuD0uR7fVEBbu3atf962fwjb359XCZuOkx4bq36tB6392FNBbPqcyrml18znuasyth3cDkPU8jph4tjY9crq4Lx9uq0MhtOlhUMRFNeeY/3fOH0N4ioCAMCzRRgLAAAA3Kjf+72Pww9+8El47bXzcH6+DtvtKlxchLBe93vHxkrXGE7Eata0gjU+zpc47oPSWKHaV8Y2lX799eqVsSHEcLXfhzYNR9PgNVxec/ic8xBqWDkbj/VVtGFwfHg/TBzLlyWe3hc2f5yGrOOVr7srYuvHasfzvukSx+U59WPLKoPU8WPj50yFr93j6QA2bS8D0OE5tf7j1a9z+kxXyw6XIh4GoLUgdm5FbO0vr2StLQ+8a+/YfG/YWuCaV7KmfdLq2LJaNn88XJZ9+D7IK2XL5w4APHuEsQAAAMCtkC7pGYPSNBzplvDt+saAsA9Y86A29u2D2Sa7Tfd5HQZETRaK5JWx4erccu/WWhCWh7PpcsMxaGmyILevnA1XbXlla7xeCOkyx7tD2H7u8Vi6p+vw3P46c0LZdPzh3rjpfNNz8nCxf9xU+pTGQtqrM+utI7nv2DWmTAVjtX+vQwPY9NgwmO3G3zeEzdvLfvstWzwe0o5VvqbPc6q6NA9O8/77LF88Ht7WgtXy3D5MDVlbGq72Y+TfQ2XAO1yaeFz6mn/wwZPwz//5H4Uf/vDj6ZMAgFtJGAsAAADcuBhwXFy0lxWnfShbr2Ltqk6bpr28TUPXPGSJe8mm1awxJK1VxvYB6lRImy7124RhgJUvRzy1PHHxSoRhGNm11QPVfDni7vqxf0iuHSrnDK8XH6dLJ6dLF6dzGoa58fwQylA2PzYVzMY5lq9l3rc/Vtftnzu0KwA7pG/937B+/ljIWjse/13r7d2xWvuuELbW1gd/40HsrtB2LHwtxxj2mT4+nNN4qDp9my4hnN+Ohbvl/rB5pe1w/OFesHloW+5TW/47l//W3XNvwwcfPA7/9J++Z4liAHhGCWMBAACAW+HiYhuePOkC2S5kDSGELjxtmn6p4hC6MK8LbMPV/rIxsOyXM+6XHY7HumWF26uAtg9y8+WJ06Ak9ulDob5qN+4bm4aLfbiSh7/9ksN9IJsvTxyS+83V9eL56TzSpYxjCJsHq+1lmFqOHWY9jkFsfp20Txg5t2yvHSuPj/UZ6zvnnOubDmPHwrPp86fC1/7xIQHs8LyxIHPfEDbOuxb2lqHirmP1gHYsWJ3b1laC0dqyxPHzPB7S5ucOj/XVrnn4Gs/pQ97xv/R1Tf8d89e7nG8AAJ5hwlgAAADgVqgFF/n+r/mSwmmQ2gcmw2WH60sT90sD9yHIcKnh+m1fOdtVYKaVsf210mP1ythyeeJUHCMkwWh/3fx4HsKmywqnc++vF6p90wrYfAnhdB59yNuPm4e1+fl9lWr/moXs3O5YnzYNl2XOlxdOQ8XyWN/nGEHtMAHbFYrVjs8LYPvrpcdrAeqwTy2Ezc+pBalj54716Y+nY7bV9jRwjWOU7eMVsfXr5vNti/PG2/Nr1ZciHr9fC4ynA+JyueLaeeW/Z/Kvmfzb5XMGAJ5dwlgAAADgVnj8eBsePboI5+fr0DTt1ZKcXfVoCCFZvjZWyeZBXF5BG6tCuwravio1Pu4rZcPVddJK23T8+LjrFyteu6rZPmTt5hgD1vQaMdScrowdVsjGPjEAjQFvfD3icsflefH+MCRN+/XnDccZ9knb+nHTtjR4ja9/HiaX+uumbW2lrR9vOMblLLLDxw2vdoew9Q71cPbq3qBP3n9+ANvf3zfU7B9PBbfDkLZeOVseG6uMnbtc8Zzgs/usjZ+TV8jWlirO76d986rX9C/f47pWDXtx0S+7PrZXbHy9av8WcR5xDADg2SWMhf+fvT+LtSVL7/yw/1qx9z7n3CkzKwdmZmWxKlldZLHZYg9kd5Oi1HRDIyTZpiDoQYAmCGoIEiABhl78IL3YEOwHPRmGX2TDgB/9YFmQpbZlww3J3aAFscnuapPNbtZAZk1ZleMdzzl771jLDyu+tb41xY597rl5p/+POIyIFStWxI493Mr92/9vEUIIIYQQQgh56ngPXF46XFyMuHnTYxhEXLTSsDrVWs8lm88bW87zOnesnic2T3AmoVju8+q4IEq1bCnnTdVJ3joZq0Wr9NfCtTxOJ3Pzc8j1lHPKJnGZxk0SNU+11klaxGss55StU7xJxNUpWn2dKVGcX3v+WPR46XHm13ZImF4nc0nFJQK27HeshNXteuw5oZqWrX71ceUx5fGtvvm+tojN78HScsXtfel8vWPKfu2+9f65benfO3cpf+u0bPZsF9egnwfnPM7P97i4GEEIIYSQ5xfKWEIIIYQQQgghhDx1nPP43vce4MaNATdvrmEtsFpZAA7WAoCdkqoi+LxKigK6DHA5v2xKsYo0THPHaokoZZHlLyVmZX/algRtEqE6ERuO1wnbfN7XJIll7F5CNiVj0+OSMeRx6/SrCJ1wHxDH6aVkpW84l5SFLiWtjC1omVYnavWYdf9WYjbvo9Gljet9vrvvSXFI+B6Sru1t393fkq9pvSVaawHbautLWd8cR+TiXN+WoG2NkUtSxNTnfDI2b+slYg8nZNspWJ2Alfd63l6mY5Etyz7jWKdp289l/YLS1/Tw4R5/62/9BA8e7GOlAEIIIYQ8f1DGEkIIIYQQQggh5Jlgt3O4vDQYRwfnhkmilinXtAREXJRzwUobimNRHJ8nY3WCsxRfur0ttPRcsfkYeXo0nV/KFev0apmQTQlWud4yseozmZrOX6dadZpXzw0rfXvzwuo5Yesx82Prx5u3p+tENV6ZIpbx071si9k5QXoVUXtIuLb79oVqr21ewuZj1q/LWqTqMQ+J2JZYLbfL13l/f5nkbSdvy37leWvpOidx28K1116WKC7fz/W5ysfXTtzmIriVlk0/4kifHb7Yrq9FtkXIMhlLCCGEPN9QxhJCCCGEEEIIIeSZYr/32O8dxtHCGAdrg9QbxzSX6DiGVKnMCyukZGvqm+Z1FQmYxGiaMzaNoZOv5dyxIleCJE6CVISmFo2SnBWpDJWM1fPJeu9j31LIeo+ZZKxOtGoJq+eX1ePGu6TkauqbxKtI1OVJ2SR2S8mr710+P2w+HrIx6rb0HJVytyY//vFoDzA3br2vlpBlv558LfctEbD9/kvKGNcSNheEbQlbS868BHASknnSFUjJWHkf1kL2aonYMu3akqfHzRXbmju2PVdsOWdsEu/1C0HfCy1+ZQxCCCGEPP9QxhJCCCGEEEIIIeSZQgsN50yULdamEsA66RrkpIiMer7YVqo2T7np8cpjwzW1JFaaexZIgrNM1/q4T0vWOiGr70Dqm9KpWvzm/XQSFajnXU3jJer5Xeu5YnvbaUxk55THqxOveTLWq/VUqri+Zq/aysfcenwlfkbULmepyG33a6VAW8e2BWzaPixh6/2HReySssU9Udt6T/REbH6NuaDNH0tqmy9X7IuxUiK21Z4nZufGL9dbf179SSnjQ/3ylG26X6jQ93McPT788BE+/3xLIUsIIYS8AFDGEkIIIYQQQggh5JnBe4/dzk3JWA9jHMZRJ2NT+d6w1MnVfL5Y6ZPmek0p1TA/bEqMyhyxOnkq2zKGrIfEbJKl6Xok7SqPJVwTkCdh9bYIWWkP6GRsKtUs8+SW/cK+fJ7ZlAxO5YzbxwCSgG3PC1vOL9vup8fLjy/7y73JhWmZmk1jzomovnEtJe8xLJOwuahcMsZcWeJ8uyUq6zGOFbD6+KtI2Nb+cr0nbg/NCxv6hGuR96s+pp2abSdl85Srbk/HtNKv6dheMlbSsfqYVjo2JPfHsZ2I1s9lTzjvdg7f+tan+Pjjy/4AhBBCCHluoIwlhBBCCCGEEELIM4P3Ye7Y7dbh9NTBWhsTskGQ+ihOgSAAQxnfvKSwbpeUqxaxUh447QuSNZdTprmdBFSdjNVJziTJcrna2tbJ1vYxModrq9+hdVT7Upo2zQ1b9w1tZaniVj89Xistm6gTs2HbF9t5cjY/T7q2FmUp5DlpWzMvTJtHzArZqwnYsm8pSMvxe3I139cuQVz2ke3Dydh+WWItXMvz1eK2PHfrmP4yP39r2dvXWs+38xLHui0XsaWULa8v3dP0fLeea5HFInUJIYQQ8mJAGUsIIYQQQgghhJBnBu+By8sRq5XBOK6m0sQ+zhcrMlaSoKl0sYlzq6aSxiYeA+i5YJOIlfFElMj+vCxyPh+rlODN5Wu7bHE5D6z0KbfzdjT6lCLnahK2v29u+1Db0vZyX2t/r99cX9WjkLz9sZazTMjWnVrHlTJuqZxdKmZ7ErbcnpOwdR8taOvtnnztj1FL0XTtLcE7J1Pz9lZCNs1Xm4RrmZIt07NpX52O1cI0P0/dr7xP+ba+R+kxyfGEEEIIeXGgjCWEEEIIIYQQQsgzwzg6/PSnF7h1a41bt9YwxmC18rFscJKxQVZIuWFdJjiVHE4li0NfE+VuKilsVAJNHyvlikN7kriSsBUp20vG1qWJpY/34TqAVC5ZPw6Rv3kfXSq5LkkcKEsYI543rcu1pnuYSgTPS1l9TF+ypva8f+sYfdxcn17fEnlcB7odiRZp/f1z7b7RVm/PlTHuC9j8uL5cDddxnIRNx5SiVfct+wHtssTlWC2ZunRfWYq4XZq43adVrlgf3ytbXJcpTv2TRE3naT3fredXP1bnPL797Xv46KMLPHy46x9MCCGEkOcKylhCCCGEEEIIIYQ8MzgH3L27g/dhzsU8bZbEZErB+lheWERL2G+icBGJmsoSl8k6+atLDCfRqkWVLlfcT8ZqATufhPVZCeI0lyzUPn2XkmCVvmV7f70eMx+j3T/0S7LT+1S+WKPLDefnSDKvPG6+9HCvX9FLyeQ5AfY4HBq3fo7ax5T9WoI1bfclbEuuto5pidnDfWopm45N5+4JWz1Geb7D5YKXSNpj+7UlbV6GON/WKdh8nLxMceqbn6d4Jqv7pe+tPueHHz7CBx88BCGEEEJeHChjCSGEEEIIIYQQ8szhnMdu52CtwWqV5hk1xk7rPopB2afFn5Q1lrHCEtMxSYCW8i/NOZvKE6e0bRhQyheLOJXjwjJJUknESiJXJ2F7CVnpL0lgnZpN12qiDNWpYO8lTRv6iOSRY9N6LlPlMcr+sEz3N80Xm0o6637q7mXPifQP60at58elY8pULbLnRz+/+px6X73/8WgLWL+gT1+s9vensXv7WlJ2SdniOekq261jjilJrPvJdkrItuWr7tNf9oXrXEK2VUa4TMRKe52azedu1T8KGccwTm9Zku5deX/z+zGOMkY1BCGEEEKecyhjCSGEEEIIIYQQ8szhPbDfO6xWBs4NmSjJ060yv2s6LsmZPNGq53pNYxh1jBZOZQlixO32nLGlzGonYvV2SqSm9nyJbpuWqildm65NSIlU01hHJnKTcNXbKTmbtvN+6lnLriEX5Om+lAnXtK3Ftqn66NdGec6sJdt/VTPbNmJzoqwnbttitdw+XsKG9ZaILYVrPkZPvB4jYvX1tlOv+fWW5Yrra21dc3ldvQTs0mTsoUSu7+zz1fGlIC63W89l/rjKxwTsdiMuLkaMI20sIYQQ8qJBGUsIIYQQQgghhJBnDuc8zs/3AIDNZohpVWstAAdjbBSF1nqMo51SoTaOIenLcYTqqxOy9Xl12jRPyaaEqfSTZKyWlHqOV9kf5qUN8lLKK4tQlTliJSGby1fEdUnRhvPo69PlkFOKF0jXVCdjy9Srzx57LwGbH4PYL52rnIs2F6uSdE2CNj9WEEnVE7C6b7lPP4/T3nrnEczJVxm/16cvYefEaz1mS7Tq9rZYbbctKUesZerc/jkJW4rJkCSfk6CHpGpKsYbx2ttXT8TmZYdbqdd2WhYxzdqXr7Volj+duv2jP7qHb3/7Hh492tcDEUIIIeS5hjKWEEIIIYQQQgghzxxBxo6w1mIcPYYhlQkV6Zfki5lKB5soDSX5Ws8ZC+h5W7UYkaSsFpe1iMpTsmWKVCRrOCafC1aO14lYXbI4F7F5MlanU9P1aPR5Q4suF1wmY4V63DIZ6wsBC9RzzOZzwsr4+T0BdGK2vM7+sfk50uOp28syx9fPfAnZvowLx/b6Pa6Erdvq/m1he5yIbcnXsl89Rt3eTpDWyd2erE1j+ez886nW3v6yz9wx8nmTL/W19J7T+n6k5+7ycsSDBzt8/vkW9+7tQAghhJAXD8pYQgghhBBCCCGEPHNcXjr84AfneP31Ebdvr2NqMyRIHawVQWhhbUi/WqvnbvUYx7Cu554EQpLNWtOYn7GVOM3TsUIQvD6Omc8Z66cUL+K8r+XcsGVCVtolKauvo27Tc6z207KpPUlVnXzVaVrpK/eun4xtzRWbZG1YT8fLPdHH5LLYFNupT11+OJe5qT2upWfyqtWJm+Mu6dOTcf2+fSnblq9pvS1tl5Qnrrdr6dqSsrKvJ2HLZGyaK7YtQLVQlbbWnLE9iZrvy8XokkSstOtEbLktfXV6NSVk0195H1rPW34ffXat3//+Q/zO73yE/X7BC44QQgghzyWUsYQQQgghhBBCCHkmEfkxjg7jaLJkrEhQETdJjgYp6JxvJmJDUrZMu+V/Mt+rjJUEVp7Ibc8dq9O1Kd16lTlj87lZ9Rytdb/yfHmyFtmx+TgozgXkqVc9Vn6MpjcnbCv1mtr19eXnbSdj2xJTp2njVT4Br9UTr3PnK5OQcwI2bPckbP3YexK21TYnYvPxWsI09T0kYluJXN3eE7FaVOpj83FaZYznShwvScSKCC7Fbl36OBe3Sdj2n6Na0raStvu9w+WlAyGEEEJeXChjCSGEEEIIIYQQ8szinMflpYMxBsNgYK2BTsaGOWShUq4pPTqODoDNyutKWhXQadZ0Pp08lb5hzteUGHUu7y+J2nzM4xKyrTlj5ZgkoFOiVfrpxGuSlSklW84lW+4L1KlX2Zb96hFnbaGfjKvH0ueejvD1HLOCnFdv589NmaDVtCXt46Zjlwjduk9PGC8Xr2m7J28fJxnbEp7LyhXXfXOxqI+Tc6SEbE+EzrVpGRrGL0sDt0oGzydi6zSs7iOfI+WcsWUaVidiDz3XtVROsrcUuoQQQgh5MaGMJYQQQgghhBBCyDPL5aXDJ59c4tVXN1ivrSobGvanZGyaMzbJVDPJjlZCNiVng/Ss03giP2V/kKiIAjWXU+35ZYNAMgjOWI7zk1QuU7RayAKlnC3nka3bymPKdizYF7Z7idb6mLn2XOLWade0oefnTW15yrCmbVv78+pejfY4fZHaa+/PK6q3a5nbTlrW4x4jYct+bVGbS9t2ujW9r+T4w+K2J13nhaxe1mWQlyZidYliLWLLvrnwLf8OS9h+wjhsezx4sMMHHzzET396Xg9ECCGEkBcKylhCCCGEEEIIIYQ8s5yfjzg/P4cxwK1bKwyDzBPrEOSohfcp9aqTreMY7IcstcCVpCmALO2aJ2OTfA1LkbR6Ptl8nlVApEsSvpLo0wlZKW2cp17N9DiCmNSp2bRMJZl1GlZkcJ6wBeYkrE6zln3DPW3ND5tKM+vUaqLum4/Z2leOl+6jmY23ti2oSK+nk4yV9nrHUvmqt48vW7xEwh5Ky7b719u1rG31aUnJOWHanzM2JWT1djkHa1r2E7Hp+LaY7c0Zq/cfuqf186avCbh7d4u//bc/jmMRQggh5MWFMpYQQgghhBBCCCHPPM6FuRWHwU7CMggMa6X0cBKrQiorLEsRo+1yxbKepCvicTJOOGcaS/qGa8zlrCRzk5BNCVlJ8co+LVDz8+YJ2/R4WgnadExZnliXNNb7gHkpK9siUvUYiSSm5PH3JK4+ppSz+XY+dtZyUNKmfsDxUnaJhA39+h3nhNyh/bVgzc83J2BbbdcpYXXfnmQF5L11WL6Gvj35mgvalrDVcrOWr7mobSVi5ySsjNEqT9y6h+oZmH3ceixCCCGEvBxQxhJCCCGEEEIIIeSZxzlgv/dYrRyGIc2fmuaSTDJW2qVPkjBBUqa+JjtGyxKZzzUIVEm2pnLHQJCYSXCVZYsR27WQzb2NHK/njNWk623L117qdVky9urbvbYl7a195f5en7n+NVoMH8ucaM37HWr3jba6zyEBW7fnx7XGakvUuk228+NqadqStC1Bm4/fEpM9OVv+LSlZXEvacl89r6yslyJWy1ItbHUp4/I9XD+nrf3lYxpHNyX2KWQJIYSQlwHKWEIIIYQQQgghhDzz7PcO5+d7WGsmUSpleR1CsjNPWoZ9QXSk8r46tZeSm2VyMpxDpEtLluTlgVtjiTzVc9emtlRyWI6RNKxO5ko54rQEdNniND9uWtcJWDlfuC/pmnUSVvaFpcjrNGdsezs/Jr/vZco2Sel0bL5PJ23Tdi4A6xLGqaGXfF0qVI8lH9bP7Gv370vZ5fJV769labqulmCV7VrSzu9vCVa9ne+rxSuQJ1rLeZ8PlSee365lbJ1yTelXnXj13mMcRZLqPj7bzh9zfe/L+96Sxs4BDx7s8Lu/+wnu39/Ge0AIIYSQFxvKWEIIIYQQQgghhDzzjKPHdutwcuKwXluVjM0FkZQP1vOwln1DnyRp5U+EaBIrKblaCiZJwtbJWC220vyqklaVksPlUqddpX+Qn3op8nNJMjati0idS77K+PUYrf69Nn19aLS3+ucSS+Rvu4+mnKM39q7OLWMcou9u2zt6/VvXOi9g83McK2Hztrx/e7svYnuCVZ9Hv070+6fcrt8zvjl2fo29pOyhlGzeV5cjbgnRtF1K41K+5uI3fw7TPSzvR/lYRQZfXo54+HCPH/3oIS4vaWIJIYSQlwXKWEIIIYQQQgghhDzzPHiwx/n5CGMMhkGSsWE5DEH2DQMAuEnmORhj1VKnOP0kOG0lWLT4szbf1ssw92tqS4nY/rJsEwGbkq2pNLIxaSnH1ilYuYY6Jdtq14lZuQ8p+VqmXvV2utb8nKj6iSjW902na7UYzPvoksLl48ufH52iLZ+7Y8XpUg6J2tb+toBtS9dyf0u+tqVqfcycgJ3rMy9ol5Um7knYJXPIHpeMbZUl1mlXnYQN+yX9midk85RsOxnbez7ytpaU1dd7eenw27/9U3z++SW2W4pYQggh5GWCMpYQQgghhBBCCCHPPOMYxMhuF+Za1BJFzwub5nVNc7+GfQa5ANLbJkvFAsj6JWml069l2+GEbGoTeZnGTyWF66TsdESjLRDka7qOXko2pV/FGqUSy3LtZd88uapLA+cljhN5yrZMvqZzllJLb7SStVMvX/bNSyQ/OfoSNevVFHW+20cLvLl9pVjV47ak6/x2GrPVp1+eOL/OQyI2f+xzIrYlfY9LwuZiVtp6JZNTclbPDavFb16WuH7u58sTt++jcx53725x9+4OhBBCCHm5oIwlhBBCCCGEEELIc8NuF+aOHQYD721MyIZUKQC4aZ8BEJKx1lp4L8t8ntPgS9zU1wOwsFanZn1MwZZLIIlAaTsmGasTr+V2/ddKybbGyNOwIrd0Yra1L7TnSdn8WlPiNW0j65fkbNkGaFlcpmaBJFJb6dmwX78KTGzP99UmdEl54hZzwjXv1+5YNi+TrmF/a18p/MoxryJkewJW+pd9W+K1LVnTeKmMeE+o5hIUqFOwuWjNt8v0a94WtstEbEq/1olYvVx6b+dEs76WcXSLX1eEEEIIebGgjCWEEEIIIYQQQshzw3brcH4+4uRkgLX1vLA65VrPFSsSJSVidWpNp2it9ZB5W0O54DKJlydipU+SN3ru19BetyVqSRP61ctWn0SectX7RZD2ErTo9k3liMvtJFHza9Jj5e36mDwdqyVtLz1bPsZqTzwujnoN8qtMR7b3z7XXArbc7qVnH1/CtvrNida0f4l8Lccox6/3zydk8/MtWbblZ3pfI+ubtnVJ43wc5/R1Y5a5PvoaPv30Evfu7bDfszwxIYQQ8jJCGUsIIYQQQgghhJDnhrt3d7h/f4/NZpjmiw2C0Nok+YbBIIi5EFe11k998qXMHSv9BGuBcUxzxspfKZiAOlWap1/LNGq7rZ2MzeeRTY8xLVtpWedM9pj1+PncsOU6IBJNzymbrqucRzbvkyRtOVYSrLpkcZ2O1aWNa3mZC9ZSQMc91XFPgrY47+0r22qR3JKy7T7HlCs+LFjzY2pB217vS9h2enaZhBU5CmA2GRv6pCRsWWZYJ2XLNknISkI1zRmr9z1OeeJc6Mp17fcO3/rWp/jhDx/Fx0gIIYSQlwvKWEIIIYQQQgghhDxXBLHisNs5rNcWxqSyopKG1WV5hyHtq5e50AzJWp+lbq2V+WgxpebyNhE1IZFbJ2RlPN0m6VqdwG0nYdOcs+k8aY7ZPM0qbXlSt+7TWsfM9tI+S9pb+8r9vT513zo9e8W6xLPUAm0uDVkeOydfw3Zb5payL1+2RGF+vjmB2Be17VSsXu+L13QuKTl8WMTmf/l4rbRrLm7zFKzsk/by+JSM1SJWt/XvUUuU9xLD6fwffXSBTz+9xP37O4pYQggh5CWGMpYQQgghhBBCCCHPHdutwzCMWK9DqlUSsiJgtcSStFsQn8jELZCnRzHNETuOfkrG9gRKXdIXQJS0eo5Vkbj5vKtBAgdpqqVwnYiVa5Tyy1q6ymMMc+fWc8WW7a0+dVK2nYQtyxPLtlxfOq5OzErytUzNpj4mezzpPuk2/fjz9rTvyQmvnoBtCddWfy3x+vvb8jWsLxWwS8oXzyVh0xgtQdsSoYfSsksSsvpHEuX+MgnbSsz25pFtzR1bylhJy/buX4m+H7mI1dcGfPe79/CHf3i3PQghhBBCXhooYwkhhBBCCCGEEPJc4T3w8OEeu53DZjMACDJ2GGwUrsY4GBNEbSlfU59axqa2JEjDdpqX1jWmfUxlgtN2StAaWAsgplx9FKt2qpCcb+s+eUJX0rRJkOZz5krKNiRxUbWX60mCikwzhdRM+0vZqkWrenbic6QFa94u16CFbHou5Lx6fxwlE+71Pn3vH5+2NO2dt91WC9RWn1y66vX6GpYL11a/voSVMXoStp7btS1Vgb6wbQnZdopWi9dS0PbKE/ekbJ6YLUVsmYhtMV+eOL9fMqbIX0IIIYQQylhCCCGEEEIIIYQ8dzx8OOLy0uGVVxyGARhHC8BhGIJMHEdAhImIoVa5Yj1HK5AkbEq4AnlqNc3HGsRLkpetMsVBxOqxEMVqq1xxKGkcxpbSxknO6jQtsn1l+WEtYQFM8rVVYjhJVr1vTsrm27pNH6fHKsVsfkw9Xmt/6teStNmRM8L2GJaItJZ0bR2bb/fla9iuBW4pUvN9tVCdO/awhM3Fak/QttOweV/5cUI/9VofW/bRZYpr+bpUypYiNklT2V8+F737mUvqdnniIGMdSxMTQgghBABlLCGEEEIIIYQQQp5TvAcuL0cAHsNg4b2FtQ4hfRrkbBCpITm73xsMA1SyVIsSN4lESdNiKlOcesi2llZJ5va3U3tdprgsV5z6mEIWt/7y+W7LuXJ16eGyRLEuOZzvS8dpiTpfwhiQeW11Yjbco/xc8ryFvkat+2If4mMQtBzW0qwlZmuRuiQpe1iczQnaUri2+i8Rr2m9J20fLxXbl7K9JGy+71BJ4p6E1cuWdJ2XsX3pWiZle4I2JFV9sWwL9f599Y19dRL3hz98iO985z4+/fQShBBCCCGUsYQQQgghhBBCCHku8d5jt3NxjldjHMbRTOWCU5JVUqmpzHASQ7nE1KWMw3FpvlcRSDIPq6zXidg0Pyy6ZYpzIZaSsbpPXyCmvmUiVsbOU7WyH+o4dPZh5jgc2dZv1/PNto/Lj09yd67vHNeXUGwL2WXyNbTNC9he+5LUZlvClgI19Wnv76Vo6xRo3V6XMq5f77WA7ZUrPpykrUWtTqfKMbW01feivr8t2vc//xtHj+3W4bPPtviTP3kwPyAhhBBCXhooYwkhhBBCCCGEEPJc4hxw9+4Om43FZjPAOTulLUMqVkRn6GuQUp8hIWuMQ0jQApKiBSy8r1OoQC1epA1IfWQOWH1M2aaTnHIuaddpU0niHpOITaWJfTZmOx3bTr+mssyI+3WyNU/25uWXdWJW9olc1o87rafkbHnfUl9TiLJ+35K5csY9Dkm5Q/18saMvaHviNew7Rr622urXaV16WPbNydqeqNUp1yVlinsSVsvYQ3PG1vPA1glZ3UeXItZ/PRE7d5/7ZZnTNfzkJxf4vd/7GA8f7kEIIYQQIlDGEkIIIYQQQggh5Lllt/MwxmO/d1OK1U7zNSa5mCdhU/lfKQ0c5mg1MekaxIpRqdaQVi2TgZKSLY/Tc8ameWHTusx7CmjxpZOsPutbtiNLm9ZtQbL2Uq6H068iaVv7k6BNIreUi2mc9PjyUsZa1pbnyqkTtNJeCtr6OGC5WO1xOC3Z7tAWsL65P1/v9WkJ1zDmYZF4qFzxvKQt9/XEbpleLY/pidgkdeeEbesc6OxPc8K2xG1PxM6Ti9jysY2jx4MHO9y9u8VHH1089uuOEEIIIS8WlLGEEEIIIYQQQgh5rnHO49GjPfb7YZKjHpJ4lZSstWYqL+xUQlYEoYX3DsMQ1kOSVeaezZelzCmXOj3qPSbRKwKzXpZ9yzQu0EvIzs8Xq9O45Zit7bo9T77W6dgkboVeYlYkLlC2p2Na++ptLXPbtuu6JGzJ3Hj5Pt9oK/vVfQ4J2VKA5vtq+Voee0jQlqlPvd6SsYfae4K2J2N72ykdmydlZd7XlnCVZKzMCavniC2fh/L927o3wPxjcM7j88+3+O/+ux/j/HykiCWEEEJIBWUsIYQQQgghhBBCnmu8D/M0GmMwjh7W+rg0Ji+VWs4dq5OyxpiYcA1JWR/lriRgRQQG8aPnlpX9qdRvEltGSR0DFKlZkZGSwpXt1LeXji1TrqktjYtO33w9Cc52WvbQtk7B5v10+jVvV8+gGkMfV4vOum2u//XSkq7tfe3+ZZ9DAjat96WhbpubP3ZO3Jb72/taQlK3t/fPS8z8+Na2fq+VcrY8l0hYPSdsaivvXzsRW0v+/LGWfeXa9nuHhw/32G5dPSghhBBCXnooYwkhhBBCCCGEEPJcM47A/fsj9nuPzcbGsqcAJsET0q7WuqmMcJCjQRKW88amZKy1BsY4lUIVsVqWGRaJY2MyM4wRRKqkY1tzx4brSOlX6VemZ2XM9hyy7UStnGNJMracKza0B8HbS8v2luUcsXlCNkmwvFyxyYRXS6yWsna6808sDdujfZ6e3Cu329I1bc+nX/O2vP+ccJXt+pilMrYlVNNYbeFat83NHdubM7aVlJW2lJDNk7HlXLH5/T6cMC4fm15P5wrr+72LKVxCCCGEkBaUsYQQQgghhBBCCHkh2O99LBO6WlmVjA2WRMqUOhek6zAEkTeOutyvpGYx9ZW5Y1M6FsA0ruxDTNDKOKGfmZKzPiZow7GpxK+1dfo1T6iiSOTm6VmdVE370ny45f5ULjhPx4qcnq5Q7Zvbrtva45R9D+1r7e/1W3LMdVFKvWLvgqRlSwL25KA+fq7tahK23J/3bZUqPiRfgXx+5rAMx5SidU7Q5vI1b5Oka5mQ1ZK2FLZL7nV9n+vnrZbHHrudww9/+BCffbbNfgRCCCGEEKKhjCWEEEIIIYQQQsgLwW7n8dlnO9y+7bFeazmIKeUqctVgGBz2e0DmlA3zxgJB1vi4nZKcqT0JTJlPNkmcPBkb2lMitp0YLROqIlXrVGsSsL35YpME9vGx6/2hrUzA6rlWl8wV2587Vq5fz+uq+6b71ErIliWT8/uTe03TaK9lWJkUXsqSlKO8Lg4dW17fIfHa7jMvFkuB2jtuvkxxX7oC6ccEvQRs6FNL2KvK2L6UTeNJIlWnYMvj1Z1cJGLTPagfo74e5zwuLkb83u99gnv3diCEEEII6UEZSwghhBBCCCGEkBcK59IcsgAm+YooKMfRwXs7pUgdjLEqEVtKJRGYSYKWc7fWUjQdnydiocZAQ3DqZGsaU2SutKV9IlW1nBUpm1KwIlhlv0gpudZ8O60DiCI2T9UCdVo2tGmBrcsT67HCerofad0X+9J+fb/kvO32nCTfllrZwxZ2TtTOiddyu5ea1ZL3kIDV48zLxatI2HLbV2PNlSRut7XLEWthe1jGailby1h9jb3n4tC9S48vfxxyjnH0+O537+Ozzy5xeTmCEEIIIWQOylhCCCGEEEIIIYS8UIyjx3Y7xjRsKAUsc7da7Pcew+AwjinVaUxIxxoT0q4pWepjqeHcnYmQRSFD86Sp7NfSFhD5Y6L80WWFRbBKOeJQ/liuqSxTnNDXLfPUyrXJNYsQPSRl9XouWFPqVRKtuk95PWVCNhe96ZgkVsukcS7HZJz0HLTaWxyWrIcoU5b9fS1hO1eKOI13qH1OuJaidmnZ4lqwtvfpuVfn5Kvu258jtpeIzUsQJ0FbS9kyBZvL2PZ9P3QPy/vXWso8sd/+9j385CfnIIQQQgg5BGUsIYQQQgghhBBCXih2O4eHD0VYiiw0k9B0k6gM5YpT4jOUKzYmlSe2FlHOhm0PY0JMVZcyBtwkfFOKtS5TnCdiwzmgxq7LFev1UjSW5YfLMsVJFJf90jlLOayTu+V6ul5dTjmVMZZzyf0Oyzwh25Oz+phyLC3SSlGrH2PZd47yXi497vAxffGXb/eTmj1pu3zu2FxGzknWer/P2tui9tg5Y9vCVqdj8759AVuWJdZzxMr2nIidv3c+69cupRzO9e1v38OHH57j3r0tCCGEEEKWQBlLCCGEEEIIIYSQF4pxDOnYzcZhtTJYrQyMsVHkjKOf+oVlkKwe4whVJliWUNt5yjRIVBPLrBojKdaQdJWxZQxJq6bSu2XJ2XB8ELtSarjelqUWrDJ23jecQ8tZPSesLitsoqFMEltLw3x/LlZF3CbS+On49Hjr8sR6HNk2lTTFbLp1+eSwV5Gv+hp6x7fae/I13z5GGub9+ynPtoRNbfn+Urjq9bpPS8jWAjNPwYZz53L2+Lli6/a0PXdP8/veuqdz9wrxc2O/9/jww3N897v324MTQgghhDSgjCWEEEIIIYQQQsgLycXFiP0+WKDNRqSljbJUErOCrA9DmmtWkrKSfvXeYBjkOAPn9Haap1ZEZUjgyvhJTLaXfjpHmitW95Ht+i+VH5a+rT+5rrk22dbtZapXl10u+7eW9Xqe3M375KlaTS1njWp/LMN6FFr4tdvbffsytk5mlu2H5Wt+jlKqyjE9WdsTsEBbtgKIP0Jo7S/ngW3tLyVsr1yxpF+1hA0/rLhaWeL+PamvVcvg7373Pr797Xu4e5eJWEIIIYQcB2UsIYQQQgghhBBCXkhE2Oz3QaSuVh5Amit2HEXQ+riekq0inLSEDMJWUn46kSrzuuZJVRP3AYiitU42SqnftF+36e16zli9RNGWxpYyyu2+rXV09rX2H9Om2w/ta+2f69uiPn55meL2jn7isj42F6tl/56ArY8/RsJqQVoeU/ev+9aCtp+EBfL5lFNCtT/faqu9TsEiE63peFnX+/J73n9OyntZ3/NczIb1/d7h4mLEZ59t8eGHnCOWEEIIIcdDGUsIIYQQQgghhJAXEueC3Ly4cFG2rlZ22pcvg3wxqk3miJXSv3bqE8RuSM+a6Rxm6pOSsc4Bw4BYdjgJJUnk9hKySepKqV6drO2lX8u5amWZz+96OBE7n5At54X1xb48Mav7l+NNa6pkci1JdYK2tb/dfkjuXpW2OM16zMjW9v4wblvYLps79pB8le1e/2UJWZGu9bEtQVvK13BsX8r2JGw7IZuP27qH5b1emiKu5XA4z49+9Aj/w//wES4vRxBCCCGEXAXKWEIIIYQQQgghhLyweJ8SsPu9B+AmkeoxDEHujKOPc7uOIwDIHJRpPtgyIetckIXWBmkqydiwHc7tnKRhRSBJ+WPpo5OyJlvqfTJHrN6XL+V6UIyDRn8cWMcR+9Jj0KWC6/levbq2vD3RMq2l9ZxLyfaOuX76MnaJfAXSfar7tUvp9o45XJY47Uv925L2UGliLWXbwlb3y8VtuzxxX+L2U7O6Xd/L3n0vn5PymNZ9lOVu53D37haffnqJe/d2jXEIIYQQQpZBGUsIIYQQQgghhJAXmstLj93Ow9oR63VIpg6Dh0hWkTwiSyUtOwySTA2p1yBWQ0I2lCGWNhf7SBpXyhdLGlaEZRJKQEq/1knZcq5YoN5uzSHbGucqc8YuWV+yXLYvSeVeqlb6LEvHPjn6IjaudfvqPrkw1Ou+0ZYf05Ktve2erG1JV91vXszOtfWSsXlbS9C2krFlSlZfV/s+9e9l6z72rnscPT777BJ/42/8GNstE7GEEEIIeTwoYwkhhBBCCCGEEPLC4xyw2wXRslo5AHZKzHpY6yaxGdpE0gIpxZrK/vpKKlqbkqlpDlk5cxKN5b5QjhjQgkjStGWbCFa9LUud0M2XKZkrpY/La6rXMW2n9SB2DydkE+UxyPrq5KxI6Ryj9uXH1rT6Phly2edn9rX7HhKwur0UrK22x5Wwuu8h+QosKVOsf9iA7JySeK2lrF72pWxLEM/f//qe90Rsfp2Iafn93mG7HadEPSGEEELI1aGMJYQQQgghhBBCyEvBxYXDMIS5XIN0FQEU9ovQS2LVqKWdhKyD9wbDkOaaBZKslfFayVj5ayVFpV2OK9ta23OJ2HLZTsSaSi5fV0J26b56XcvhWrCmJK3gs3v4pKnP0ZJ+7WtpidW03kpxtqXiMYnPcn8tYXNR25szVotQEa29+WBzKevjMX0JG/qMY0vGppLHS+7zUnndE8rjGM652znsdg6EEEIIIdcBZSwhhBBCCCGEEPKEOX3jFKdvngIGMOH/LUPkAXwexPNFm0iU4DTgRge3czj/8Bx+ZKpL4xyw3To456e5Y8vSv6Hc8H5vMAw6GStpzzgSANuVnnO0pGdYplK8Om0r+yT1GvqISDVTujckYNMSaCVlSwGb2gARdjpFm1KsaV9Y+nhd4fF7dR/y1Gx+nB4LQDbnbBpHyMdLQrC8x1rK1eWNjyV/z8xJ3rZ0zcdoC8TDpYp1+1IB2zumFLJLJSxwbCK2LWj1dr5e9vHVseW9WnrP8seeL+vrDtvj6LHdjvje9+7j88+3KuFOCCGEEHJ1KGMJIYQQQgghhJAnzI13b+D1P/c6jA3zg0Y/1PNEpWTV6+VSZIZLf27rsLu/w+XHlxhHzneo8d7j4mLEamWxWtkoaEQkBpkp87gG0Shzx4ZlOGYYgCCJfEzNjmOeVK3Pnc51aBmuJRe0mlbStegBY3xW0ljapLRxLWXT+bSU1eJUjkmCVSdrRW6LqE3tWtamNsTHVj4P8uYQ0Vs+9rwp9dX3edpq3ZwrUUrWel9r21f7y+srZWFYb8nXeeEqy7ytl4jN983NGZtKDvclbEu6tuSsLjncK0dcy9hD97onYvP2+dSvn8oTOzx6tMfv//7nePRoX5+cEEIIIeQKUMYSQgghhBBCCCFX4NbP3sLN927C2CBXY3qvIVpP3zjF+ua6am+iRaxKv+rka1fKurDtNg7DZsDrf/51+L1v9vcuHOP2DuN2xMPvP4R/SeZG9N7COeDiYsR6nQsbaw2cM4WURZSSgIsliqVkcZCeHoCdZKWdhGQYQ4RVmne2Xsr+JGHzPuH6TBxXp2Lnkrgy/6w+97Fli2WfiNM5MZs/rraclWP1Y497VKq23peeJ/1GSine/n0ox2ix5Pi6X1sEtrd70jCNc0i+ttqWliTW60vkbClEtVgNy3CMTreWy3ZCtp2IDb8bSWWJH/d+lvdE1nMBG5b7fZgj9h/8g7v47LNLbLf8EQshhBBCrg/KWEIIIYQQQgghpIdBJk+N2rjx9g186c98CWYwuZCdjjm2HLFPNYmzZSsZC0ziFarNJxlrvYU/9Xjl1iuZeNXpWT96uNFhvBixf7TH+U/O+ynaF8rRhifFOY/dLjxeSb7KOmCx3zt4b2GtA2Bi2V9jLKREsRwzjm6SuEEgjqPPUq2CPJW9MsV6PU/EpoRqa4x07nIJlYxNAjRIYpG5aCRk89LDeQI2l9P1/nSPyxdOXfI4idVWmeL0WE11/3r3tU1Z5vgQ7U69Y+v2fgnisL1MIur9h0sQH5K0x0nYvE8/CbtMvtbbvYRsS8I+zj2Uc+v1WsgGEXt5OeKDDx7gk08u6wsghBBCCHkMKGMJIYQQQgghhJAGdm3x1l9+C5tXNjBDLluNMdi8usHq5iprA3C4BLHg6/VyHlhgRsZqCTutx6WIWqe2p6UuaTy4AcNmwOrGCm/+yptwowtzzHoEWbt3cHuHRz96hO1n26vfzGcQ74FxFFm6h3NDJlMBYBhk20zbIgUtvA+p2GEwk7QFADe9DhycM/A+SFprQ1njlGrVJXjTUq8H2amlqCn2pwRtkqKSvvVTIhYHE7GlFG5tz69radxO/ep+9b78eKGVom3vr0njCo/za4K2HIx7u+JwThbW4+brpVTN+y8VtL1yxT1BKWPMiVcAB5Owoc+xydhcsPbv7XIJqx+zXFN5bePosN97/P2//zl+8pNz3Lu3q09KCCGEEPKYUMYSQgghhBBCCHnpMYOBXdusbTgdcPMrN3H6+insygbhqud8bQlY6DKrfTLpoFaNN7WQVetmSjTG9qKf8Snx6CECz8PY6Tg39ZlkLHx67MNmCHJkTKlZtw1/27tb7B+k+ROj9B0fR3I9bUwUMrsdYG0QqcPgATisViEhK2JWlkEM5slYkYV6flYtLEOflDhN87aGfVKe2LmUcg1lkoEglPISwCJYw3mCrJRyxCEBiyopm14ssm4gskquS86VkrJ5wjWVSZZ1IHsBV4lYLZDr5KxI57Sux0AcK+3Ln7veW02P+zjMSdi0f14g5tvzqde8rde/LWV7SdB6/6GyxLq9vb+dLq239TgtOZsnYvv3sLxHZZ/+fcn3548/nH+7dbi8dPj44wt8+OF5fWJCCCGEkGuAMpYQQgghhBBCyEvPnT91B2/+6ptBtqq/zasb2JUNZYiBvBTxtI24WovZiEgBSQbC5A7HI0pYvc97n7anPsaH7VZi1vtivyzdNL5T7SolK2I1K2k8eriTkJR97Rdfw/j1Mcw/6zzGbShtfO8f3nvOhSymBKvH5aXHfr+H9x6rVbCdq1V4bCH9mpbOmUk+mZiWlTlmgxS1U7LVwlo/HWeyPiIMh0HmqAWs9XG+WhGyxhhY207GJrGryw7r8sN5n7k2IG8P23q9TMQGodtLzrb65PvqtnK9vy0yud3nEGX/Q9K1pBSsvTFyYVgL17ReytM0dku8yvYhOVvvz4WqHielXnX7svLEraTsofLEckz7ntb3bO7ezd+j8trD3LQhEevwR390D9/97n08erQHIYQQQsiTgjKWEEIIIYQQQsjLgwE2d6ayw9M2AJy9eYazt87i/K86AdudB7aSRG0j5L1H8rTTinZJHvDG54JWxKoxsW8UrXpdjvVJ2GopG5fw2bm15I1pW0ypWePhTbhm6yy8Dcna4WxIMvZyhBkM1rfWcHuXyV+3c8+doPXeRAm133sADuMY5oYVMTuODsaEpKxIy5D+A9L8qZJOTWI0l5H5PK6AmdKwIqpkbtpwXJJNKcUKpESstfJCkkRsSsjmCVh02/pJ2DrlKteQXut6n7xmgVReWd+bfHzdltb1mMjGTs+VFrJlW/uYkmPla3muJWMuSXL22mspe5yErdfbglL360nX8NoKfXWZX1keErPtRGx+Pe372b9/5f0o70H5OPW17Pce9+/vMI4Ou53D3btb3L37YpVgJ4QQQsizB2UsIYQQQgghhJCXhuF0wHv/9Hs4ee0Edm2DMJMyvScDYPPka5mCzWRsiW73utlU7T6thD4+ySxpF1kaE7OqhLHxhUD1eR/jpvHKuWNtkrSSlvXOx9LFOjELh1jOOP6tQh+7tlidrbC5vYlzy47bEePFiEc/eoTLjy+PfGaePpJ2BUbspmkjV6tQingYRMgGoeOcxWolydeUjA3LIH/yFKyZ5o5NiVjv7WwyVsSqlRLTMHGO2LDUIjUt64SsTsDWbUCaXzZPv/aSs2lf3jafmtXLVt/efhHDrd869BOx6foel1Y6M+2ba+vJ1npfT7qm5bEJ2cMitpaxrdSsiNQwvl7OzRlbyte0nZ+7vnf1jkMSuydhAVTX65zHRx9d4G/+zQ8xjuFa9nvXvhhCCCGEkGuEMpYQQgghhBBCyAvNyesn2NzeACbI2JPXTrB5ZVOnYEXEAnkidtoOixkZqyn7iDAwSaBmu80kU4skLAzqNOzUP6ZhJezoVR+LPA0ruNRXjtPJ2PjY3SR+p0Sw3A9vgpS1CIlZWMCPHmZvYFZTaedXNpnI3T/cP1dJ2SBcg6TxPghZ791UjthOJYNTOlaOSZI1tfckZBKiucwMwtXHuWPT3Jsmjg2IgErzwdZzxvp4vF6GY1ObyNYwThpbi9qUXK3nl5VrTonYVmo29JFzL503Nq2HsfLt1Ke8v/EI9Zo+1svO+NdGH99oa233Eq9pjFLAttpykVqOW4tW6deXsm1Ru6RE8XwyttendS/nJez8PWk/hrzdY7dz+OijC3z88QXOz/cx7UsIIYQQ8kVAGUsIIYQQQggh5IXmjb/wBl7/R16PslDmgDXW5NJVJ191Mla4atAu85yF+BSZpFKv2TF6qdaz/kqoxjStrE/p1+Y8srJ0+XaWkC3W47yy45SoHUOi1q4s/MZjdboKpYu/4uC2DuPliLt//y72z9F8jLudi8/RauVgDFSpYpnvMqRjvQfGMUhBnYwNy5SIdS7MLSttIcGakrKhTLGJqVhrEeeMlbLFes5YKW2cJ2LzZKsWUnliNu2TMsdyzXo+WUmjtuaNba1fZXmoben2ofbroi1pfbO9J1z1Pi105wSjHmNuu5eW7UlXOc8xArYvY9vJWClpnB5733T3ZfYSCasfb74cR48HD3b4W3/rJ3j0aN95HgkhhBBCnhyUsYQQQgghhJBr5733buL9929nX+Br6i9cW19SLymz2P/y9+7dLX7wg4dP5PGRZ5PhbMDtr90OsnVIc77efPsmhtMhtkUJq2UsUK3HNm1hj5E98rI2yERrTL/KPu+zBGw2D6ykXo0a74CozdqMEsA+tWfzyRqflzqexJ3cI+/UupmkS7m0k6y1U191r09/5hTjxQjvPNylw/bzZ3t+RmstvPdRvA5DSMgOg8hWgxAxDp9tQbJikquAlA4uxVEuQUthKp+V6bOwTIHqtG0uRFOaVkoY63NKUraVxpV9On2rk7tybdJezi8bBHBKrcp+fd3TI4z3Iolj3abvQfq812ldkcNp2+PQvy3lPTxMKQ5nenb2tf49y7d9ta8nYMu2tpBd9u9l2U8k6SH5Kn3n/u1tzRGrjy/vS33Pem3L7lVbxCIm3L///Ye4e3eL7dZRxBJCCCHkqUAZSwghhBBCCLl2/vSffg3/0r/0fkxhyRf3ifqL4/oLXSghgimJlv/J/I37fVjudg7j6LDdOvzDf3iXMvYlY3Nng3f+yjtYna2CfLUmL0VcJGEPSdiwMI+diI3lgn1jn1dzW+q2sj/q9Gw1p6xOxeo5aH06Vidko5B1aZ5ZnZTN1iUhO0zSdQj7nHWhfUrKutHBDCaULrYGdmNx+/3b8KPHuB2x/XyL7d1t9dieJZKMHTGOHsAe42hjOV8AMRUb1kOUehgAwE9pU0nGWgxDEkaSQJUSqUFIWpVENfEzUK+nNG0uXMv1VCo43x+uJ8lJ3Rauo/5rtUub3pfWwy8G5tOwuaxdnorNx673tyh/DHTci07LwP7+XlstEfV2T9guS8PW8jWJyNZ+va9Oysq8qoekrPw7HI7pzwer981x7P3rCevy8en5bMfRY7t1+Ht/71N89tmz/SMQQgghhLzYUMYSQgghhBBCjuIv/sU38bWv3cYgyTejv2QPfd5//zZu3FjBNL4lb30hPJe4kS95W1JWZOxqJUsD5yzWa4ef/dlb+Kt/9d3i+CBuLy9H/OEf3sXl5fgF3jly3Rhr8NovvYbNnQ3s2mJ9e43N7bBu16EUscwD2yxJrGWslq6VDDrOxkYJoYWuV+N6dOeOjSWHdcnicl+0EGn8mHxFSr1m6z7vlyVjrUrIIiRhjTcx6SrrWbniaRt2ejxTMtZYEwTtkFK1xiY5i1cQ5awbHXZ3d9jd3x11f78o8oSsgzFjliYUQrrUTFI2SNgwZ6v0NVOqNpQmTvLVTjLUZVUERL6KKJXPyp5oFXGrZWu4jvYxvba2eNWJXJ2KbUtbWZf+c3I2redz0Jb7wz2r9+VjxC21nuaxvSr1sW2J2msrhWQpUMtj5uRrub1ExvYEbE+8Ajox66OoDYKz9+90W+QeujftfcdJ2PRY8muT/33wve/dxyefXOL8nP/WE0IIIeTpQhlLCCGEEEII6dL60vzP/bnX8eu//jY2GwtrTVG6s/1l+ZIvT9OXqOUy7BsGPVdjT8paOOexXnucnKzwMz9zhnH02O8d9nuHcQwi9sGDPf74jx9gu62/oH2cL+7JF4tZGbzyC6/g5pdvYnW2gh1smBfWhESslNbNkrAiYhvytUrHZiebuZDiNVMmXeV4LWmjhM3dUfs8/sB6IVqrfR0hW/3p+zGJVknLtkoXe+9hjQU84IwLfa1PpY0tkoydSh2vV2sMJwPcPswp+3B8+EzK2CAezfQDjn0mqOSzTvDewlo3SVhMP1SRssZ+SsxKX0DkqzEOujQvkJKq0ldkqe7Tkp66hHF5TP1XlyvO2+qSyPElHcfOx9Dlicv94RgTxaC+trKks5an+phynz5P/pmdp2ev8/O8N1ZPuObbfck4J1+lrS1pl6Zhe/v6Mra3X0tY3Vek7JL71e5z/P1pPVYtYsfR40/+5AF++MNHhy+EEEIIIeQJQxlLCCGEEEIIafLlL9/Eb/3W17DZWAyDnVJWBj/3c3fwyiubKB60mNBf2GuWSFjZVyZttHyV/WVadhwdnAtL78MccWHbYBw91msbZexqZbHZDPjN33wH2+049fXY7Tx2uxHbbZhf7qOPLr6oW02uwJu/+iZuffUWbr13C6ubKwzrAeVcpVVJ4kYiVpZxXtiedO21zwnU6GQnmVSmYHt4dT2oZU8cxyMvW6zKGPfKFJepWCAI07j0CPO+eiSh6n2Wlo0JWT/NEeuUoJ1KGHvnYcbQJqWMpY8bHNzo4NYON969gc0rG7idg9s5nP/kHO7SLbtPXxDDMADwUwl0wPs9Npth+iwa1Nyy4X6Oo5k+lwxWq5CclT8pXazLEweZK2lY+UNs03OsSkUCEeTOhX66rUy/pj89b6x8fofHqNv0etjXSsGm8trz6dg0fkrAzqVk6x/0HNrutS3ZN8chmagla6t/KYlborFVrrgtXvN/R2W7J2cPzRlb/rsLHE7Btn40VZ7r8P1K9+PwfTtWwiL+74Lvfvc+fvjDh/j008v5iyKEEEII+YKgjCWEEEIIIYRETk6GKBTefPMUf+kvvYUbN1ZYrewkB8rSxEpsKeovk5MYSl+ehnYpySn7JC0VkjciDnTCKk9UhX52EhI2bjsXtq0NX86GpFoQCKuVxfvv38Y4Oux2Dvu9x3Y74uJixPn5HnfvbvH559v4JfN+vyDiQ54oxhqYlYni9OZXbuLVb74Ku7JpblgtYSWpLT8W0EJWtsv5YGNXU7X1LwzRK3glGHT7QdGrOSRx9X5fzC3r1f5J1GZzxJZzykqf8sJcPg6cWi+X8riKP2MMHFy8/957WNgofiWxbO4YrG6sMF6MYU7Zz7bwex8l8tOeW1YSss65SVa5+Dkkn4kA4ufmfu8wDCJdAWPk5qXI6ziGFO04+ulHLrmoE6StLUWlFHKY87Ns08fKX7jW/MmTuWvD9Xp13UnchmvRJYp1n7RPrjmJ4XgX5RFln/FhmfqlY+Xac8lXJmHDdqtP+z7m19Jj/gU39zzpMdoJz7Z81e1LBKxslwK23n+MhO1L15ag1cnYQ2i52m5fdp9K+Vw/nlAFY7t1+PjjC3z/+5wznhBCCCHPDsar/4Wz2Wye5rUQQgghhBBCniInJwP+nX/nF/HVr4b5YM/OVnjvvZsxqZXKV4b+5ZferS+fyy+SdanP8kvhsjSipF91Aqdsa5Us1mWL9TKkZ0MC1jmvErEhMRukbPgi9/79LR492mO7dbi4GPGtb32Khw/3T/L2kwPc+fodvP0bb8OsDOxgcfKlE6xvrlM54sHAIMnYQ2WJ5+aIBdo/MmjRmhvxsSmHLGWvL9q9729PwjWuq30iPLX4LNu894BT22UytjWXrLxnp8SoyFW/D/vd6MK+0YdyxfuQinV7h929HdzOYf9oj/35Hhc/uXjqQhZI9805B++TcD07W2G9tjg5GabUfagkIGXc12uLYTDTX2hbrcxU4j38yCUtg/iV8u/GmFjyWH4IU25LxQJZlm2A3lcvRSZL37xscfmZX/8Qp72ejyX70752WylvW6nZ8ti8bckzOd9vydu512euTK+Iz157LWFb7aWM7IvZ46SsvLbbQrYlYcvrbdyNxv1p9CpE7ZyMbj1Guabwb7rH97//AH/4h3fx6NEeFxecJ5YQQgghT5ftdhvXmYwlhBBCCCHkJeTsbMCdO5vsS/OzswHf+MYreP/9O1itkhTIv5g/PHb+JarJvkSVL9nzVEv4k+SrJHAE3a5TWOEYMyVfg0wIyzAXo3OyFLlgp3KiknCzUQBbG06YJMYGN2+ucXGxx/n5iNu31/ExhXlnn60yqi8kFkG2TnL19M1T3HzvZpoXVpKwem5YmDDPaUvCzgjYpnhdGKBbKm1nxy0lhUq+6u1snlkPeBNEqDEmvr2kVG22Lcl000jESkjSp75x6Xy8pzpdK9elyyVn124Q0rSYlkM6RxjOwhsPBwcLmx6fNcAtwO1dOKdFnF/WP+V0ehKHZiqBHj479ns3pe4tADclZB32e4NhSJ8tgbA+jvKZN93HmIw1sb9OtLaTseUyT66mssB++iz03WSsMYh98hRrPo+siLAkXtO2XpfHpvtKAjb1L9vCZ7vcjxJJ0qbtfG7Y0JY/Vz2u+vuJ3g8vyuaeYNTrj1ueWLavKmEBSUXPzw/bFrTVHWjel979qdvmSzjr+1le437v8OjRPs4N//nnW5YmJoQQQsgzCZOxhBBCCCGEvIT84//4O/hX/9VvYLOxWK1Scuu1106wXttMwgKlhDXxC3T9JWzrC+X6i2D9JXD9xbFeb6Vf0hfEeVI2zR2rt8tkbErPlMnYlJB109yxkpIdsd97PHiww27ncHGxxyefXOLv/t1Pr/yFPlnG+s4aX/uffA3r22sMJwOGkyEmYY0tyhGrFGxPxAJK0pSuRvq20M1LnvOeB1ood3vtem7Ysn83CYtiW95nWnYU7YdSsjoJ203KlsnYMfRxowNcWHrnYzpWErLeeYzbEX70GC9HuJ3D7uEO28+2ePSDRwdu4BeDTsg6pxOyA4bB4vQ0T8hKMlZ/zoay7yb+6GW1spPQTanYNHdsnojV6dmUkEWzgkHep5eMBSQ9e9Vk7JIk7OHtdI/b/+6k8+TbrT4tjvzRROcNeVgs1tI2F409Qft4Elb2z8nXOenaXpYCdvk9me9Tl+XuP+b8ceprHEePu3e3+Jt/8yfYbh1CmeLw7zchhBBCyLMAk7GEEEIIIYS8ZGw2Fl/72u0oAb7xjTt4550bWK+TjA1f5udfwgPll+RpPXxJaopt+TI1T8SmOWPDn4wT2uXL1Xw9/0I4JWTDepqTMCVl8+0wZ6zMF+tVW56MBYLETY8vrNtpisdhcADW2O8d1muD3c7j9ddP4xyS5+d7JmWvEwOcvXWG09dPYyni4WRI88KKiJXXqp4bdqmELeXrUk9zqF88TUf6Lhlby1dp9+oxTX0kFavP50PHkFidjtNzwmbJWJ+Ssd759J7S+2dSstm1Tm/+mMBFSuPqhKxcVzVXrzyGEbArC2+D1DXTPKZu67C+vY5lkN02lDl+GuiEbFg3U0IvpO73ewvv3TT3qps+UyzC3LF2OjbNnRoS/S6KU418ppYp2VJgWmviZ5mMKZ+nklotj0/zyubp2WlkyOf20mRsPrcs4udx9cIuttNne3r8OjGr77n8e5L66ftgsrb0fMW7iavQF419oZhv9+Wrbl8iI2W7JWlbEhZozQerf1Agy9S3nYJtz2l8iPqY3r3oP/aWSJYfWH366SU+/3yLhw/3FLCEEEIIeeahjCWEEEIIIeQl4M03z/Af/od/Fl/60glOTwdsNgNOToYoYPPkVF3msScJ0rr+Mtgg//K2FrZhvf2Fcvklcm8u2bSeErF6uz+PbJCwq5WbErI2ljiUpayv1yPG0WO1kqXByckKr7yyxm7ncHk54jvfuY8PPnh49SeHZNiNxVf+ma/gxjs3sDpbBQGrJOxsIhbI07GyXcrRzMNeQZxqGom+3v5ZSokU5ZJv9jHeJGHrizav+qql3i+iVV9jbFP749KEY42b+sjjmiRrOXesXpfUrLU2yNlQ0RfeerghiFUzmiRgZTl6mMFgOBmweWWD8WKM88ju7u0W3tgnQ0irDtM6sN26KBCHIdyjYbAqmW+xWnkMQxCnQaDmc8g6l5Kxsi5LkZWyneaM9dl6mjPWx8/isD8tQ6nlfJnKI6c+WsRKW+jjs38n6n3phzypFHPar7elXxLHug3ZMUAtrPuyte57VXqp0JagTG3t0rth3Vftjy9h56WsFrGlbO3NC7uUOWHd2n9IwOaPO11n+vc9zOX+3//3P8W9e7v4YypCCCGEkGcZylhCCCGEEEJeYNZri1/5lTfw1a/exhtvnOLWrfUkYcMch7qUZVmOUmiJ2Dwh61GnkkzxBWwrEZPLJp2GlbSWPr/MJWttEBKt+QZFygJpDtn02MI8soCb5k6UL53dJC/sJDMkORbGSSWQHbwfMAyhfbcbMQwGX/rSCfZ7j3EMAvfzz7fYP+X5LZ83zt46w8nrJ7CDhd1YnLx6gtXZCnZlAQvYwUYBO1uWuCVhCwHbSmVGjpA3mXgtj9PnWjwgKrkaz5NcVNg9yVA9h2zWFhxcSqhO6/oYnZKNc8KKEHPTfmdistbbScxan88Vq5KyMW2L9L6O90kEscnvi4WFR5g/Fgaw3iaZGxPv+T1Y3wlzCe8e7J7aXLK1eA/b4XPCYLczap5r6WOnzytJlLpJstpCRiEKKN2mE6HhszDcUPlc1H2kn07RSr9e0hYIUlaOy0WsHkv+zSgFLqDTtGGcUsKG8+jt1md+esxGreeCM7+3SQBPj35GEl6dQ/+uldu9ksVtCRnGrF8LfSlbli5O24dkbEvMtq/1ONr3pGzTgnvuselrlR9WffjhOe7d2+HiYqSIJYQQQshzA2UsIYQQQgghLzBnZyv8W//WN/H1r7+CzcbG1FWSsPWcf0AtYIVe0idxSD7Nz4unv4xNJRTrL4ylnGJa+ignQiIt7AtLScQGgWttWqaEWjhG0q8hLRvmgxxH6eMwDKF9tTLY7cJ8kF/96i28/fYZzs/3uLgY8fu//zkePNgfemqI4tVvvoo3f/VNDKcD7NrCri2MNUnCTvNkSmniXiK22kZbyArNJGsPk683E7Xl+HVDohQ4qpxwa3/W5mfa5pa+sQ2kUsJKmGZLj5Salb6yz6W+xptQPlmtR0ns0rY1Ns4tCxv2wSIkaM2UrDVhGxbwq5CQtSuL4SS8RsbLEQ+++wD7/bPxXjMmWOndzkWhOQzhBxw6qS+p2fA5ZKellBpOqVgpHZ8nY02UuSk9Gz73pF9KwKpEs5KrIoglPSsiVcoUh6WWsb74d0LatGjVUjf1l771vy15erbVT/ct2/VxaVtesL3nZ/lzCRwSkW3Re0g26vXrSMe2/u0sBe6ShKw7usJvfe3NXpWkbj3mfJ9cZ6syxn4fKlf8wR98jp/85PzYiyaEEEIIeapQxhJCCCGEEPKC8Rf/4pv45jdfxTBYnJ4OePvtGzg5CXPDphKWRiVigfaX4DVzAvbQl92SfgrrPmvLv1iupan3+ZeyQXaYqc1E0SHJrFSeGNNfmlcWCGk0WQZB4SeJIZLBT0kzM80ZK2lcYBzDY0gy20wpY4PVyuLLX76B8/MRl5cjLi8dPv98O39jXmJuvH0Dd/7UHdz+2m0MpwOGzQCzChJW5oiNidiWjAUyMRu3OwK2kq9LBE1L6urztMY5Yty0qRKk5X6PmGwFkCdTDaJ008fHlKovxvSqv6xbday0eXWsbtPozwOH/Dyu6GPybWMmOTv9WVh44+G8i9fjRw9JyMYxLDD4MIfw6VunGM9H7B6FhOz4aMTTRz4nwjXvdk7JL4/VKkRYJZ2vl+Gzz8BaG39cIqWOg7gVMZnSsEGmmTgHbEqkeuTzt+alimWfJGr1specPdR+aD0t68oHMidt3Vfd2dl/o/SctzPPzqJ/p5b08Y221hjtcsU98Vq2lcI1l7Ptcr75cf0krD7vkse9hLakXiph62t0zuOjjy7w4YePpn/LPR48eLolygkhhBBCrgJlLCGEEEIIIS8Yf/kvv4Xf+q33sdlYDIPFaiXCMC9HXKZigeO+qC6/XJ87Ph2XyhDXX8bmZYpDMtYgpV7TF82pTHEqVywJV+89xjFtl6JWp8PCOWyUseMoY4m0cJN8letB7DMMFtaGUsXrdSh1vNlYvPfeTWy3DvfubXH//g737m2vkDx6Objx7g2884+/E9KwKwuzMlHCGjPJWDRkLFBJ2FLIxjbkbRk9IVrub4nXOck7d84eLQmL6f0h5y+lqggtJWe9CQIzytayPLGSqpl0BYJAFSfWkbLVNRvV7ov23j6o/ciXFiE1a6YkKAB46+PzbayBgYEbHE7fOoXbOuBjYDwfMZ6P9TV+ocg1+6lccbgYmas6fHaFz7Bhem3LUpKy4bPOTVLWwHspq+7iD0LSZ2EuXPP0bC1ltbCVv7xvvb9MyQImK4m8RL7O7S/71vtqSVsep19oxyZgj6UUrXVbKWZrEanbe1K0LV/Tdi1q5bWWxs8FbN52HfSGKWV1LaP7pZjLxK5zHj/5yTm+9a3PruWaCSGEEEKeFpSxhBBCCCGEPOf83M/dwb/wL/wsTk4GrNcWv/RLX8LZ2QqrlVFliXUStiwZWZeALKm/HO99MV4OVH5Z3ZOwoa+sSyIWOFSmWCdkEWVsKNuJTMaGNg+ZnzElxtL+UKoY2O/Deph31itxiyh2w36DYRjj/Lv7fdi32zkYA5ycDPAeuH9/h48/vjz8ZL4knL11hrf+0ls4+5kzDCcqDTuYfF5YvYTalpSqSa/HSsDql2JsOiBny75L5W5r/LlztCiFDpRUbfTR87MeLE081ybiFcV4vT8tWIGsTHEmcycpZHyYd1bPaau3pYSxQ0jEOuNC2eLpMVpjQ0LWTFJ2qkosot6tHE5fO8V4cwzli89H7D5/+sm58DkTyqp6bwE47HaIJYtTuWIL50TGhnLqIQ2blykuyxXrcvPpDyr9mtL7ebuf2sIyfJ6lbV26WM8Nm/7daJcyDo859SlLFef/btRlitttSQDX7fpup/PPPyfLnrtDrrIlM2vhGK7rUHs/IZr6tfq05pFtCdpS3C55fMdSytfyHP3H3U/tjqPHJ59c4tvfvofPP+e/nYQQQgh5/qGMJYQQQggh5DnFGGC9tnj33Rv4J/6JL+PGjRVOT1dYrSyGIUnYXiJWxpjWFgnZep6/dHy+HfCxrGnri2ZTfHGMbF3+JK2V5pCbT3TJOO1kVzBGYWwpC5qSZ+H6w9yP4+hVsixJ4dDuoUtiGhPmhrTWwbkVhsFN88/aKHE//fSy+gL+ZcSsDDavbvClX/4Shk2Y/1NL2KaMNfmyFLJAQ8KWgvSAfI2bC+Xu7LhXSeflb5VcBsvrZkq9xuuS9nRQSLKaJF+yhKwaN8pcWfcmzM86tUc5K/unOV+NK67Lqv12GmeaCxZQ16FLK2shDCWCXepnBhMk7VQm3MLCwcHCQhLA3oUSy/6mh92E9p3dYXdvl8okPxVEJgPeO4TUPQC4KEqD0Axl0MOPOwyMsVPqNFjt8Plpq8+N8NljY0I1nQtZarW3LNf15/ZcmWIp3Z7mjNX7U3u+Lv/m+HhO2a+vq9UWPs+D3def7eVxqW/7g1X6Hvu5O9dfC8ZW30NCdkkydl7G9sVrEObpmC9CvurHUm8fmis+/Ru738sc7x737m3xve/dv96LJ4QQQgh5SlDGEkIIIYQQ8pzy7rs38e/9e7+Ed9+9gddeO8FqZbFeBxErSSk9R6xOwZbJ2JL8y3pTrZd95hDxmtb1F7Embpfr6Utaky2lRHGdiO0nY0PiLJU77gldSchKSjb0TcnY1CckY0V67/fhfu/3Ti1DQnYYDE5OBpydDXj0aI9Hj/a4d2+Hi4uXr3bx5tUNvvLPfgWnXzrF6mwFM5hQnlgErLxW5ySskqMtAVvN7ar3Q0nU4jhgZrxW39Z5inNdiZY48UpY+kbfuTZfr3sU5Yml3Scpmh3rgZh4NcjPNwnUKIpd3lf2xSSsPuf0HHrr4UcPb6ckrCuWNuyDRSxZHNOy09KtXZCbJ0Hw7+7usP3s6c7XHD5bBoyjxziOWK3sNGesi3Nhh/T9MJU7D+lVSceGz5fQFub8lvLoiIlW+bwv07I6Gat/kJP+PcjnkA0/SMnTs0m6hnXnpA+QS1ktUkspC4hMTf/+qB8KAEUffVzeXiZf5bi6bf5N2Ps3a15atqVrq21ujtRDYrK3XUrZ1r7WXLBPivn7cFhAl9ftnMfFxYjf/d1PcH6+h/fA5eWzMAc0IYQQQsj1QBlLCCGEEELIc4a1wCuvnODdd2/gz/7Z13HnzgYnJ3YqmWuLL+RN/OI8Jab0F+A1LQFbylt97DIZm6+3lnUyVkvZJFBb/cMyF7z6+mSeRknEyuNwLiTSZFk+rjTHrJ1kBOIyJGzDPI+AyBEbyxrv9wOMMdjvk30K8/cCFxcjdjsfJfKLzHA6wK4sYICT105w+6u3sb65ziSslq+lgK1ErBYzC6RpWO2IUzn2kNTtCdhizENlUpfgOwJFS+Syj+zT7WWb3m7ty9ol4ar66yUACZDH5wZuGsdOKdmp7Gycs1ZStghpVp3qNS6I+ChyZWzkS7km620odezC2NaF96DfhO21W8NtHcx9E/o8td89yOeHV59jSS6GeWVNnCNWErJyM3Qy1hg3vT9c/IyzMX0s63WpX70Mc8ZKSeL+D2ry1GudhNVSNlx3krIyh7fM9VqmY+WHLyJz82uUa9f90uewlpx1UtbEe6ElZOstecxnbq9veZ7Wv3OlwF2eFG219dbbcrbkcT+a5u9D3DooYfU1liL2wYM9PvroAo8e7R/vYgkhhBBCnkEoYwkhhBBCCHnOuHNng//4P/4L+NrXbuP110+xWoXUVD4/bJKoaSkj1CWJZVvmadXH1F/um+q4OfIvZ3NhWs4bWydkU5vMD2ttnZINsrWeO3YcU7vMGStzNMqX+ZKUlbSZJGMleRaWrkrIjqPMyetjOm0cgzCRpSRlNxs7JZcHnJ2tcHIy4OHDPX760wtcXr64CVljDd75K+/g1lduYXW2gj2x2NzexDliYZGErDExGQs7yTtZahkLpO0lwlTti5uFfC3HbfXJ2hpjVtdwJFGM+saxxXuoNVdslZyVNlUeOB7r82PjepGIjeWLW32muWKTgJuWTqVkTd5HJ2WzZKzxScJOfWTuWL20Nswf641PCVkXHpNZhdeRW4e5Z+3KYn1rjfOfnGN39+nOIRs+Twf1o5DwGQPY+MOO8LnhYxp2tQqf5+OY0rJhaadkflhaK8v0+S9zuqYf5KR/E/LUbPqsP7St06/5vxP9dGxaB0TMauEalkD6N6mdjs1Lwod9+XY4tm5LYx1Pbh+XyMiyTHIrpXpMKlaO0+Kyta91zvIePO6Pfkrp2mrvyebW45DlOHrsdg6/8zsf49NPL3F+ThFLCCGEkBcTylhCCCGEEEKeE4wB3nvvFt599wa+9rXbeOedm9hskoRNpYnlS3dAvtBuSdU0bvrSuy1j0zj58e3xNCndJEmnPL0kElZST1rKplSZTkilvyBQtbyVPuFYEayyXVyZOpccb7JzhPuR35eQWktLPUZIi1kMQ5Asq1UYZLVKc806N8B7j+12gPfA2dkAANhu3WN/Wf6ssb6zxvrWGqdvnuL0jaks8SpJs66IzV6rSYg2k7C97amt5CoStitgW+L1Ks4nHlof7KGkZqPfXBI2axMRWiZiRYxOfbP1IkEb24r7UyVni/H0UpKxWVLWTElZIM4166cfQsBO11hIZXmIxk2vk8GEcsaDD6nZdfgxxuAHrG6s4LYO7tKFlOxTQL+G5McigC59rj9rAWMcxtFO6zJHtcwdK8lYH7dbcrJcyg9PymV+Xv1vRVmqWItQkbLyGV+WJvaNMfW/B3qZErOpvdUm7YjnlzHLe11/lmrxO8+hz+HWvLS1EPVV+xL5mpZzc8XWQjYn//cw2/NYj78tYMvt1uNJbelxScn+ME+sw/37Ozx8SBFLCCGEkBcXylhCCCGEEEKeE9Zri3//3/8z+JVfeQN37mym+Qf1nIB1ognIv/TW29LWT9Hmidq58sa6rfVlbi5M5Ut2U3zxbLJ1+eI2iYM8DWttSsIGKZsSspImkzlj0xyyss9nkkNKDNfJWF8lYofBT/fNTQLcxQTaOIbYYCpVHO7heh3uc5rX1+LGjRHDYHB+vscPfvAIu92LZWPf/JU38fovv4717TXsxmJYD0G8DiafI1ZkrEGUcuWyl4RtJWOFZsngltSdE7T6POU5WoL0MWRsdB0iLGVcX/TR+7WgBGJCtWrT6VgRm5Mkqc4hx05/VZo2ubiAy/vH9OtUQjg7ZlpmSVm1Hp9nO80z6zwspjljp21v0jqAeB4/TtuDD6+rIaSvzdsGm9c2ePjBQ+wfPBuyxzn57HLT82VjUlZ+lBI+QwxWKzfNGZvmjg2fJT7+AEf/GCck/OXzKP+Rjl7qdUCnaEXClv8u6HllAS1d+/9u5H2AIJfDsk7Dln10W90e14rt/MW8REDOsSQRq5Og5b6+mC3To7Wk7QnbA1cc166ajp3r13vcvcdcJmFlLvfvfOce/vAP78b+4/hi/ftHCCGEEFJCGUsIIYQQQsgzzFe+chNf/eptDIPBycmA9967idu3N1ivLVLJybI08VyJYSCli3qlKHsyNj+2R+sLYPnSPZewiOIhJJxSylWnxdIy2BxdpjiMJXO46seFuF+uQYvd8k/66GuWcfR9CulXg2EIET7vHYbBTGk3o8RuKGMM2Pgl83qdSihvNmFSzLOzAcYAt26tcXk54tGjcf7mPgecvHaC0zdPcfbWGVY3V7BrG6SYkq+wiEnYao7YVsJVt5fSFMj6VxK2JW/nxutJWb2vvMbGdTwOWRliJV+z/Y19rdRsKw0rx1X7jMmOi0lYn/r35oyN88TKcdYADnEMnYjNkrLTHLMwaczY16bSx7DxgUVBXMn7KSlrnY1yeBhD+nx9ew1jDPYP908tIVviXPjcHkf5HEyfWSI93VQWOvTx6nPIRREbyren9fyzTsYu2xGTpekzPn0e69RsmWyVZflXy9cyVdte6mP1Pt2Wt+v3eXlMTt6+5A2avzaWydgkIMt9LfGq+y9JyM5dB9B/7Evl6xytlPES8awFs3Mel5cjPvroYvqBFPDZZ1vsdi9uiX5CCCGEkBLKWEIIIYQQQp5h/tF/9G38G//GL+DGjTDP6MlJSFVKEiokYqGkbC5g5Utuva37tVKxoW87FSvjHEP6stY0vnDWbSkNq8+jl3lqVkpZytIXwiCJAT+l8XRZUDmnSI0wL6wk0twkU93U18ZrC1LYwloHY+x0n9KXzkF4hLLDImKlrLFOpK1Woezo6Wm4mAcP9vj+9x/Ga3teufP1O3j3r76L1ekKdmNhV0HEminFbYa8LLGxSpAWYrYrUIG2lFXtsn5QwLZkrR6/JYf15twbYu69UkqOom9Mi8o15J4ulQOe5GqUs74hYY2SsF4dJ5JV1m1Kwer5YqO4DW+JfBkvKfSX45qpW3WdcSnjyPp0bS6Y3JCMlTllpz9rbJordhKwMSlrlSyW+7cyOHv7DOPFiPvfvQ9/+SzIWDN9RoS/kIz1UajKfgBTmtBNP/KQ1H9eoj7ML5v/uzAMdlrKD3b6c8f2krHtygny2Wri519rztj83yO9DxBRG4Sr3m4dE/ql9dA/3y73t5gXt0vkpUjS1jEtManb9bHph0D9hOzsR4u6J9chXdv056RN66UwrueGdc7js8+2+O3f/mn8N/HJXTMhhBBCyLMJZSwhhBBCCCHPIF/5yi382q+9hb/wF97AzZtBxK7XdipRabIv1+svyVF8yZ1L2P4xc4naJV90t2l9WV0mY8MXz3oe15RKLcdKxwSbk5btc6R1bbMCQZ7mc8dOjzguReY6hyg5wngWw+DgvYXM4ziO0scq8WsA2Chqg4AJab39foAxBmdn4T/NvvSlE1xcjHjwjJRTPYaT105w50/dwe2v3cZwMsCubRCvqiyxlq8tCdtcB5oiFShEaE/CIh8z25a+xTi98sez4ndJe9lnLu1WDNJMxzb2xSSr8ZCSwDFtqo5rbXfXzfQ+80hpVbXUCdmYhoUJclfP+aruaUzdTnPExtcEchHcvEfygw15LU1jxzlkvYHFlI6dBO+wCe+5k9dPMJ6P2H6+nb3/XzTeA/t9eOxDuNRqTtc8Keumku1mkrNJzKYkrJu20/zaIY2bp2XTD1bSj1vk34N2ClbPJ1sKWQDI2+VzNP/3KK3PLdO6KsFd7A/b9ef7Vf69KmklQ8v2Xkr2mIRsa6xyXP14Simc7z/2gdfStXcN5eOQtnJeW/kx0nY74vvff4i7d7dTuvvISyOEEEIIeUGgjCWEEEIIIeQZ5Otfv4O/9td+EWdnScQOg8EwhPkCJfHUE6tALlJbCai+xG2NU5cnPiZdlL7AzZM8KR2U1qWvc/UJdB99nJYGspSyxmG9vCfpcer0ayqJaZWYCFIjjC3tbhojiFhjbJQZMieennM2PPaUygpz04Yvq0OibYXVKgjbe/d2z6WMPX3jFO/+j97FcDIEGbtSMtY0ZKzJpawWpM1kLJDvV9vZviUStjHuwdRt+XKUY4q2o9D9tdyY0qy6TaSqHBcljpKRs9JVjp+OjWWCfdofhaval6VcoURrUba4krNKhOrnQCdmo6Qt74FPf9k8uLqfAayfErKDSdujz+4DPILw9aHf6Vun2D/cY3dvF+eZfRYQGRt+tBEuWp5ikbLymSiyK3y+pHlhZV2W8vmlKyjouWVlHlj974IkY2V/KL/uY59wPeHFli9zIduSs6kPsm3970vqD8iLJu3zVZsgx6mWa5Sx9eukLU1zCavbexI2vo2ra60f55ycbV3Hscz92132KVOwoS0lYYOMdXj0aI8/+IPPcXHx/JfgJ4QQQgh5HChjCSGEEEIIeYZ4++0b+Bf/xa/h619/BTdurLDZ1IlYXeq2lrFhHC1T6y/bWxK2n6gtv9Re+gV3XbKxn15tSdaWYJWEqvRLbbXolccjc85qKZsv+1/aD0MQpJJETlI2T8jqZOxqZSYha6OMlTLKgnPh+RAZu997WDtiv18DMNjtHB49ej4Ssuvba7z5q2+GOWJPpzliRcTa/C9LvFolZPUSyPvJNvoSNkrRhnjN0rXl+EeI3uwcJZ3XTyVrJ8qUaxwj+lVTtQGIadd4ndE31mJWyhxnolbSslq2dtalX5aSNUVitZSm3sTywTJvrIwbr8eopCwQ+lsxtUhLNWYzIesADOkxG2PgvMueVysTzZrQ31mHYRxgYHD2zhn2j/bYfrptP3lPCe/D54Ek6zcbKWEsPxax1Y9KwnFhGX4IkiRs+NFH+BFPLmPzf0PyagtJpOp/Y8J15EuRxEmwJtkq44RrrSVsrxxxLl/Ve1K1pW1TbMc70mlfxvKkaC0q0/ryJGgtWn2jPRe0150y7YlXvd6a61bSsPJDpD/+4/v4/PMtnPPY7TznhiWEEEIIAWUsIYQQQgghzwyrlcGbb57in/vnfhZ37mxwcjJgtQoitp4jti1S8/li24nYwzI2Hyct62+z+8mclFQK0jQXpSnZZeIXwLIuZYjlS/2QBpNElJ8SX1JyM6Wqyi+og4SV+RUR75v3ehnGsTYJ4/I6w3WlcwNpDthhkL5hDkdAkrCpz2oVZK3MESvlGwGL9dpOwiUs5UvrcdzA++0zL2ONNVjfWuP1X34dq5thjtiqNHGrPDFqEdtLsMZtIH8JdgRpJV8b4rUsU9w8R0/A6nPNCdoZepJWaMpaKNG6oGRxmYxttWXJ1mJd+sX2SXq2zp2lZW0hZGGCxI1vUMTHoMsUy3Hxvoe3TSpjbBv3TRz0YACnXluSzh0QSxZ752GNxbAOpcE3X9rArEwoV/wMuaLwGWGmH4qEBP1qleaKTVITAEz8MYp83qbSw/LZZjAMbipjLKn8JGTzH7x4lAlZ+QyU8YByvm5Uf4De1gnZsk/9+d0SzXNt5fpc2+NQS1hgqbhska7PFNv1eKVgTvt6IrpNfTl+dv+hZG8pYZ3zGEePH/3oHD/+8aP5iyGEEEIIecmgjCWEEEIIIeQZ4NVXN/hrf+0X8dWv3sZrr51gsxmw2QxTaeJemimXsPJFbC1feynatsTVyaTEVb/ZNlmSqRSmc8lYXVpYErHSXiZjZanHlMemk7H1eQ1CqhWQ5Fn+xb+N4rdd0ljkqYX3bro2O0lekb0exqQJcOU6rHVwbsgSsrIMxwShe+/eDo8ePXslHofTAe/85js4e/MM69tr2I3NSxOXqdj4I4BcynalqXpdNiVs2SavYTVuOcahpO1s+eOm8enfn2b/ia6kkXPp0r3Bf4XjJCnoTbYvS8w2hGs8b1GyOArR9FuH2C7yNUu/Sko2vBWCVHWTtHMpQQuL7Ljp5KlcMEzeLuNBtan7ERO1xmdtsrSwMbUbf/hhPJxxcZ/3Ht76WNZYrhtfAXb3d89cQlbY7Tz2e2C1GmGtwWZjVVng9OOS9NmtU6bIPr/GMf/3If2bkpcyLv+NKf/tOGbe8TD399y/NfozN7wI88/g9r8h6f2VP15NKTyPo5VMRbOtfD/PvffluvolhWvB2ne6tUydk7rdUbI+9XywYRlW5EcC8iMA5zx+8pNzfOc796OcvXv32XwvEUIIIYQ8TShjCSGEEEIIecrcvLnCG2+c4s//+Tfwzjs3cHIyTHPDlhLWzApVoGxvp2jL7XBc/SX5PO39ZQnJum+elM2ti5++eDZZelVsTUqx+iotm77E11/my+P3sYym3mdtSolJskwnZwEzpX5MnBtRxkn9JM1bzqeYlkGuIiabvc+XgJ3Ss8B6HeTvZjPg9DSkjC4uRlxcjFFGPyuYlcGtr9zC6RunGDZDLmBNIxGrhGsp2Wblqz7nEjmrZU25vlTCxk1Tnat7TUdwUNTmb5n8ekS+qn1LUrDS5uGz47K5VaHG01K2SL9ieg+LzNXL9gPWq1NSdlpmbbY+rxwbRWx4y8C4dIwka41VJZD9JJMnMSyS3g4WDg5W3nO313B7FwVt7yE8LdL73mMYPMYxpVnTD07k8xGQzy1APtfkc10+X5PgSz9qkYRqnZTVbSJ9y/NbqQadzRlb9w196m3dXrYJc2297dAm/1YcT+9HE4cEp/yYpr6OdHxPmub/hprqXIc+bo6Xr0BPwIb1JKVTEtZju3VRxt69u8OHH54fPjEhhBBCyEsMZSwhhBBCCCFPkZOTAf/uv/tL+OY3X8WXv3wTZ2dhnlhrDVarVJp4rsQwkCSrlrbSVyedgDzVlCi/4Z37xvd4+dQdSX3B3kvJtv5E2oa5YvMv/ctla85YnZ7VS5G8QSqEKF8uKpwSD4DUUpX1ccwTQ5KU1Wm1dG2hFOk4hoTsMJgoh0UIizA+ObH4XZLkswAA+tlJREFU7LMdtttnx8gaY7A6XWF1FuaJNdbArBYmYgv5erQsbR1j67G6qdiewG20ZedDe9/B9h4NcZKV81VjRjFkUCdjdZJV2mR+WGOifJWSszHpKnPAqrFaydgsQSt9/DRHrPWZ9Mz+nLonrW2ovuikZoEsNSvS1xufyg8P4UcM1ocUrJsOsAjiNaZnx+mejJOsHdK9sRuL7adb7O7uDjxpT4dxDJ9P+334DDo5MdOc1unHHbo8sXzm5589kkQNT3YqcSwl38s5YssqC/m/P4dK3pcVG8J1lCWLTXM9LfNKDfrfPE1fzD7uv1fFG3H2XKGf/vesHueY66o/IFoid3aEGTnbkq66PZUiTuvOeTx4sMPv/d4n2G5DVQnOCUsIIYQQchjKWEIIIYQQQp4ixgDvvnsDP/uzt3B6uqpKEqdSkf2ykDKO9BMRq79Aly+IW8flXwofI2Wbj6jYrr+ADucsv+D2xXo5pm8s9fWLMJVlGCd98S/JVz1HbTg2CE9JdyW5K39hfxhbzz8b9vlMgkhyrJTfkozVf8OARlLWYrXyca7g9XrAycmAcfRYr/cYRzPNN/t02by6wclrJ2mO2EK6VkJUpKmWp2mlLVmnfVm/xjITrijOi3q9JWJ7EvaggC0fy7Gow1oJVbUzXkuWnJ3eDlliVtpkflnpP42hjzc+pVPzyzLZNRmYbBw5Z5aWRd0m54upWf0WRj5OXDepFHI8Rp5DmT9WH6/nqLXTdTiTErGSkrXFcjChrPHKwK4tVmcrjCcjxs0It3fP1DyygZTCB4KcbQk0/RmXl2XPPz9l/lfZltS/yNkkccN+/QOXXkK2/NwMx9d9dXtrvWwr28u2cj21pX8rDqGPb6dR0785XpUR1+JV+sn9bo0Zf2uhTlKmZnvX1euzhHa55ZaABeQxaAn76NEeu52bZOwed+/uKGEJIYQQQo6AMpYQQgghhJCniDHArVtr3LmzwcmJnWRcKxFbplsB+bI3Cb5+MjYc07BNB+XrFSXTUWg7k395D7Tnis0TsmkfUH+pLAlUva+XkM2vwSDMEWswDC5ua7Ewl4zVS2McvE/zxgY566ckbF4uWUogyzV4H+Tsfu9wfj7i7t39UxWyZmXwlX/mK7j9tdvY3Nnkc8SqUsUiyspEbCZqO/JUlt3yw0CaG9Y2xtF9G+uHxs6uQ/dv7QMOt/dQT2MlnXVqTc8Ja0wmbKvE7OSfymRsNyk7iSU9H6z3U18tSv0kVlUpYWPU3KsujRGXU2pWnydLzmK6BiVPpS2KVLkn4e2XcGkpCVeZM9bBAdM0yzJnrL6PXuZyFjFrptfs68BwY8DFTy8wPoPzNAvOARcXkt4HNhuDzcZgtbLZvx1llQD9YxGgJ1LTPK7yIxP5MYreB9Rp15SqTe+l8t8f/aMgvd1aT0tTbOdteXvZVu+ojzOd9vbxuZid76NGbPTp9VV71A8xjmFJieW2tE8iVio8jKPHt771KT766CL2o4glhBBCCDkOylhCCCGEEEKeEt/4xiv48pdv4tVXT+KX6Fqo5onY9pfTeRnJJF/TF96m+LK5MEzN9dZ2id4/JwYbZim25xHANFeeStN5aU+p11ZKVqe3wlhA+rJ+WUK2lhJ+up8yb6yeM3aSOx5VMjbI1FyGhOfWZ8lY76UksVHzytopMesmMe+wXgfJe3IywDlgtRoBeIxPwRWdvXWGk9dOcPr6KdY315V81X9lGrUSn0qgRkop2pKlLUlq1L6yr6nP1S2D3DpnKUnLflnTcdKklUptJWNjyhU+/+2CEjVVclVSr2o7itb67ZfEq0hYPZ+rTynJMi2r07ZVMlaW07XE49W5dRq2nCu2TMxmz/Mkb/W4MSVrTNovYndqi+Wsi4SsHS3sxmJwA4bTAd55uEu3NFj5VNAp2f3eT58pHoDNfmiS0pjpBSLzyrY+T/PP7XIf4v40J23YL3Nv63LIUv5YqP89y0spl9fc+2zXbfrY9LmP4jM+u4p4jO4jidfUHj7XtRDV91X3Cfc0v5YyMRvaTNZH96sfi+y/2ouwPCxt+2xbJ2DDnLAhCfvgwS4K2YcP989UmXxCCCGEkOcNylhCCCGEEEKeAsYA/8q/8qfwT/6T7+HmzVUsS1uWsu2lW6V9GIxappSsns9vOmOxnFtvbc8+miP6CvoL/3I7rev5DeXLbv2nZYB8yd1OyNZt+V/6wr38ktx7YBhCGm0YoL60D3PIpjFNFMj59QSZGtK4DiJKjAkSJSxDyk1khnPDdAXDVBY5zBW5WllcXOxxeQmcn7vqy/YnzVt/6S28/mdfx3A6wK4s7GCT4JqWMQ0rrz8l0KI4VXL0qLlcTT1mto6iHY11PW5D+jblq5Y+epweh/aLpGkb3Zg8rXeZzIlliVl13VGOziVl5UcM6lw6GZslZqWf9/E8VTLWp+PiUpUPzuaXlXvgIW+J2DfeEpWUzVLCcq1T+eHY36H+WMGUjIWPaVnjDeAA62xKyE7XP2CAsQab1zYYzgZc/vQS7jlIAO73Hvs9AIwwBrhxw2O1MlivbfxMCj8S8fHfBv1DEZ16TT8UAbSIlbbwOZd+xKL35yIWSD+U0eWPU7v+gYxI1HKO21zEpn8X8u10L3Jpmz6vc8HZ+MUD0rXoMsOlwGwfV+7P+6RKCqlf3pYfpz/X230aZ89O75vt6d+qUsbmc53vdg7f//4D/IN/cLf57yghhBBCCDkeylhCCCGEEEK+YH7xF1/DN7/5Kt5//w5OTwesVlbNFVuXeizTQukL9HYZY52MnY5UX5zrZbne2u61zdH61tYU+1rbaV2+pNdJLlOlCHOpkL74r1NUkmSVZKsWAHrOWJGhIiJCSqgs0SlyPM0XG2RHOndKvwJlClanZ4chmMKwRCwxGv5k/lgH5yzWawvnPM7OVjBmxH4fykd+EQnZG2/fwI0v38DZz5zV88QW88X2pGlLxEaiR6xfa0tFbCV11XY3CaveEpWELa9pyVtlKb1ji8SotGUJWiUcs8Ss2p/NDTv1r5KyyBOt4dBJ2KJIxqJejw/FqETtdN6YdjXzCdnsPDJO+ZzI45PnURKvRWpWkq5w0/1RyVlYxFLIMRk7qKUH7MqG+WgdMJyEH0PY0/BjA3f57AtZIZSQ9VNa1sXPo9XK4OTExs9MkbAA1Gce4pzYrdLE0pZ/fuef3a3P+Cy93fm3QBKouQSd+9FOawwRzknAStWCcmzpG44zlWxsX0/6t6YtbFFce/o3qJV+bQtOfdxhCdrbX8rZMgULhOd6HB1+/ONz7HYuStlx9Pj0020s508IIYQQQh4fylhCCCGEEEK+YH7jN97Gv/6v/zxOTwes11rE5jI2Lz0MyBe/aU7Y+RRtLV9bMrbcfhzDNDfGnISV7Z6gTV+0yxfYqZxiEqD9hGyrvLCJYyRhmoREWE8yuL1M1yJjAogp5XBtYem9xTAESxQSSGGu2SBhLYYhxARXqzCYnnt2vQ5i6PR0gDEGN2+OWK0MttsRux2+kPlj73z9Dt75zXcwnKRErC5RHOfcFClbzA+blRBuyNJM0kobUp/W/LDHJmP1eHNSNizUtSDfFzeXRtaOoJWGjdcTOtTyFW0pmwnWTltre+l6PFZKDNtJyFqVjBXxWiZkVVliY02Yb7ZMzULJMjc9PlvMLzu9hyUlG0WwSvBmaWKT7pWZ3p/WWTi4UKrYhQ+AYQwJ2eHWAJwjpGOfIzG13U43RxHmJE8/BtGStP7Bj/yApSVa8zZJ24qklDdKTByr9dQHSG+oJcK1FrCpjH0av50OTcdqwZratJRNn+Nz49T7ZKxaurb65bQ/R45Posq/bfUYqVpD2JbS0c55nJ+P+Pt//3M8fLg/9oSEEEIIIeQIKGMJIYQQQgj5gviFX3gVv/mb7+BXfuVNbDY2JmJ1KjbNEdteShI2L0+sj5Uv15WB6srWQxL2cWWT/jZ5TsKW22k9lSieWjxUW0ppzSdkpfymTsYiO9a5fL+kZfW6nEOuQ5Za6AIpISsCXbaDlA3nKxOx+dJgHEPfcbRYrx28t1ivB3gPnJxoOetwefnkorFnb53h1T/9Km5/9TbsehKw0x8MknQt5GtPxLbmfJ0VsaboV46J9nliO9Rx5dhquylhl8jX6/Sxvj5HTLdWpzUp9Vm2Y5mU7W2X63JsuR77FOlXPUbcVyZky20Rsmqffl14O51/krZh9yRlpyRsPFaEL5IcBhD6AvmcsQhS1sKGcaZvSOw6dF7fWMNai/H+2BXlzwv7vceDB/v4b8nZ2YD1Ov0bksoWt+VsWR0gtJef0WE9/5xO7Wkd6P8AZ8l2v89Vpexc/7w9jtJIt9Z9DvN4r6tS2tYliNO/UR9/fIGf/vQC8hyFFKzjXLCEEEIIIV8AlLGEEEIIIYR8Qbz//m38y//yz+HsbJWVJhaJqssO94Ss7q/nhtXHZUbqKCHb2m5x6EvqVr9jvmxvJ2OBJFtln8gBKaeo5at8WR7EqJnkapIHoS2VFZZylmU6zLm0LMt26uRymhMxiXORsiJhU5liEbPhvFrGhvLFFs4Bq5XHfm+xWgGrlYX3HptNkrKhRPGTk7Enr5/grV99K5sjtidge+WCM5Ean0clU3siFvlYc+dpjteRunPn021Ve7Fvrr1VbhnoJF9n3I8+fyZmJeVZStki/VkJV1W6OEpP2e8LCaquV+9rjRfTqEZJUKMSsDoJW2zre6j3xetX7fHapjlm5XWo07GxTLFBStAqoVvJ2KlMsRkMjDMhIbsKMnZ1tmo/N88h4+hxfp7ud5CuQ1YRQEtY+RxNKdkW5We0R5qftZStjydhUwK2TK/OJ2f7/bSUzfvnadmyPT9Pfr05evxiT7P/UnQZ5LxNL1P6VaosfPzxBb797XuPdW5CCCGEEHI1KGMJIYQQQgj5ghgGg9PTFTabAauVnhu0LEuMSsT2ErFybDsJe2iJznavrUevb+/L6taX53Nf2rfkbJIE6cv/Mr0a+soX0ancc5rrVc+TKOv6uoIw1WWJTWwP2+l8eTI2LUW0hr4Gw6BLF/usz2oVDFL4At1Mc8WGPpuNhTHAyYmbkm0rGGMwjh7brcPFxfWnm+xgQ2linYq1xZ8ksnvCtBCgzZLCQN5PC9aZcbWUbSZjZyRsLwXbE7N6u5KtC98u1XG1H+omMPWxVZnizr4lZYmzbRPEZDMla/LyvzGJOpU8jVIUqWSxfi68CSWGJQnrvY+lgqeTpTFNErrZ23+SsMaYmHT1LiVrpS27PSLSfEPCGsB6VabY2zSmMfAnQfievnWK8WLE9tNt9bw8r5yfO2y3en7tMK/snTurrPx9EIr636b0WSkp2vJPkrHpRyvyuZnagdRP79M/isklb74/HRv2C2mu2PTYSrmbyhunfzt0/347suvS1RhkO9zLNE68gux93pO0h9EyuCxJLAlYIMj3hw93+M537sdS9g8e7K52UkIIIYQQ8thQxhJCCCGEEPKECRJ2wNnZqpojtp+CDcemNp2E1aWJk4jNv7xWVgple9mGA229Poe+TdZjlWK2t13ua+8XMQQY9cV9+nJcJ7tKAVCWMJb1+s8Uz4PPnp/UJoIijJXm9y2f05TGFWmc5qo18TolOSt/w2DgXFquViJpg7Q9ObEx4XvVL/grDDBsBtiNhVkpCWuShC2laCVOp+d/VsTqp1gtW4K1KWKTHa2FqhqzmZYtzt2VsPEUnf2PQzmOzx+TpEyzvkpCNdOyPsnMdBqVbI1SS21DHVO8vbO0qx4HxVjqPFk5YknP6rlio7XK70VMxkqyVz8+9Tzp8szyXEtyNv5JKlZSn24qYVwkY2VeW2PTfmMNMABmFQTt6tYqXN8kkQ9+9D0H7Pce+33+QNZrg7OzAcOA6UcjPvuMknlk5cctQf7JD1bS52y7RHH570bxwp3WRZLW+2R/Plds+SbS8rhOscrnivxbkcoV6/69xKy+jjROOr/+d6juV46x5ENES+ZiT5SuLspWLWTHMZSl/vDD8y9kXnFCCCGEEDIPZSwhhBBCCCFPmG984xX8B//Bn8Hbb9/Aem2zEsWlYNXyrhRysmwnYkvZ2lvOrc+1tTjUr5WMbX0RX243DFVT2ObliOv0UkrDilSQUsWAlA1OKVmdlA3rMq+eUVIiHJvm5Utf1OcJWR+fI+dM1jeUIg6TXcq+YQjbq1VYDoOdEr2pzOR6msdysxlgTEhZGwNstw6SVru4CGm3x+XszTN85Z/9Ck5eO4FdT+WJZa5YiyhjEV+vuSjtSlqh8ZI9mH6d24e8XxyvOFfWhsY1qfVM9JY02nqliXssmYO0HPOqidhW29x2a18sGexnErJ6vzcpYTrtg4S3LdJ+LW4LWStp1vgwyvTr9Od9kqzlvsiQHy/97RCSsXba4eHD54LxGNbhveZPw/W5NxzG8xH7+3u8iOz3Hp9+ulX/tgTu3Fnhxo2h+PfKZ8lZoE7KShuQt5c/jknraVunZuW4IFlT3/YyHS/tZVpWi9awrPun9fx8tbzVPwxo39f8h1JC7/1fp2bzBKxX/+Z4fPDBQ/zgB4+qMb0PzydFLCGEEELIswFlLCGEEEIIIU+IYTB4441T/OzP3sI3v/kabtxYoU7E9v7Sl8HhC+46OZsnYoEvVsQuoRSurTbT2N9Lxub7SvmaJGz68lt/4S9fxOdfmNdf7ufHyxf4IgVS8qt+znzxHJWJ29bcs2kcKVMdXiPpuW9JeWtDQjbMJxuSsquVn5Jrj/HluwU2tzY4ef0EN965gdXZKitHrOWnlrCZXEXazkoBl+35s5Bvz4jYTPAqYdpN2ipJo/f1+nclrCk3G8cfgYHJnqpyTtZmIhZF6lW9JbK0qzpHS+AeM3dsOS9s81xFQjaOFd93+Zyyco64jZSIzQSwSdeZvcZ0G/LHoKWufq1IAtYbn35QAIQ0rBbHkp6d+pjBhHT4aGBPLNzu+suBPyuIwJu2Yvt267BalT8gCj8Q0RI0zZudPiOlrXzRatma2uW8rX8n6m39+ZynZUOf9O9CXuZYH5uPH++Ekq2tN3f9b5SWvG0Ofy63Jaz8KMjj4sJFGSvLe/d2uHv3xSmfTQghhBDyokIZSwghhBBCyBPizTdP8R/9R7+Cd9+9gRs36hLF+bx8SdjJ+jDYLBGbxJx8iV3aCXTalq5jQftSWgJWtx/64r1sL4VsKe8wffEf+peliKW8Zj7Ha0rGyraeO1bKCQOpHGcrIZtSSmmcsAzbMh9sOF+aMzacI+9TJmNDOjacO+xLc8fudgMAYLdbwdoRAHB5+XiiaH1zja/+T7+K0y+dYnVjBTuoVGwxV2xTltokKbXszBKrWtCK/NRpRS1bi5KyXUkLdYyWcCj2N7Z7baXUnH1LPO7bRc4hTC/xVnq2l4bV+7QovWpK9uC6miNWjtVlilttcakFKJSYlR9G+CRtYRBeH04tpU3uVZmS9aZKxsY5YwfTTshOc8daYwGHsO4sYIFhnBKyo4ffe+zwcs29ef/+Hg8fjlnbem3wxhsnat7z9G+T/nHJ/A9YwlhLt8O6/mxP40u/dh8gCNPyxzzyuZKOL1Oz8iLKf8Sjt023z1IOzQPrHHB+vse3vvUZtlsH/cIuS00TQgghhJBnE8pYQgghhBBCnhDDYPH666d47bWT+GV16wvpQC5R0xfb+s+oL5DnErElx4jYa7BKcZxjvyTWx7SOL4VsZ5Tsy/nQN4jSurylTtNKm77foS1P9ulryJ9PnQrTz5mp9ovQ1f1SGraeN7b1JxJktTIYx9C2XltsNg67XV3qctEzYA3Wt9ZY3VrFdKCWo5Xz12IUtQjNZCnqMbTkbJYiRrHU5ytfysV4+tiuiJVjdJvu35Ow1/k2ERq/XxCBqOd7rfYblfCb+jRTqkqkzr6V1NilHJX7Vc4RW4rrbgnm6ZxzyVhApVj12Pqay/vfeE1FIa1eMzIuDGLq1lgTJK71YV5ZSc56E5eSkLUri2E9YDgd4PYO/iURYTIHqcYY4OJijD8Yyn9MZHByYuOPiFoSVn9WYnpNyQ9Y5EUp5YXlM1zWpyuIfVPKFtnx5Rus30+uIf17IJ/Pen95T/LrqZOt+vje57EuOXx56XB+vi9K3wcZe3Ex4uJij93u5XjNEUIIIYS8aFDGEkIIIYQQ8oQwBjg7G3ByMsSUazlXbF2qFlV6ttxWZ0Btx9BYzq23tg+19+hYnWyfWbB9bEI2LbXkRExCiQCFmuPVR/Ep2yEZm8vV1JbGdk4nbSU9i6z8sMhUEbayLXPQyrWU6dkwnyymZGyYU1bmmF2tQpxPErLrdUjPbjYulhe9eXPAZmNw9+7+yinZYTOEuTKnOWKzRKxplCxuvAxnZSka7WYSXy0hW5ynm4hV21dJx3YFbOdtkEudx2duDtlmGla9NZakX1ttB7e1kFWStbV+KA0LIMh9jzQ3rOoTH6JN541idXofwSKWE9bjxYc47dcJbXXjsqUZTPZxY7wBBoS5Y124Ru/C3LF+Ha5vOBmA2+E828+32H3+ciVkNfu9xyef9MvjvvXWCW7cWMW5s1N54/DCtVb/mCV9ngJa6mLaTn36idnjlofalm4fS5mCTelXjx//+Bzf/vb93pFT5QdCCCGEEPI8QhlLCCGEEELINbNaGfzqr76F99+/jbOzVVZiuJ0QKtNCImZLaRvGTyWKhUPfDi+VskvHW3Kenpg9RsKW663zpbRqnn7N94UUbFqXL/VzcQuUqdYwVp6IzROw+nlJ7XIN4Xn0MUWVJ8JqEZ8nokVeJBncmkM2zB0r67ZK+y7BWIPb79/G6ZunGE6HSr7qhGG89cXLsCUnq/LE6qmrhCv6AnZO8pbJ2yVp2Gwpxy2QsLMC9ph73nhJy9hZorXxNonJ1MbbRBKm+ncKMSWbXsJJsno1ppa86tyzCVkU7cXj0fPFVtfbePx6Pln9PMXHJf2k3GzjOS2Tr72/ZkJ2krAieSU1G98P0/yxdmPD3+k0h2xewfelYS59f34+Yhx9MzULhM+o09MBJyc27tMl5KVP/nmcz8NdzxOu94XPzXxOcS185Xx54rYUs1J+vrV/yf15+HCPBw92WZvqkQnZzz/fwjkmXwkhhBBCXkQoYwkhhBBCCLlmTk8H/Gv/2jfwC7/wKm7dWmMYbDbXqxasgrSX88gG+ZZEXduKlcueUWpZqFa/66C0SLrdd7Z762Xf1j7VqxCn0qaTVa1kbCnDUzJWvoAPaS6dgBV5Kwlaa4N8CMekMfNkrI/rkozVy5CMDWMMQyhBLKlq74Psl4Ss9x6rlcVq5WNSNt2D5ZiVwdu/8TZuvncTq9NVlohFvC/Ta3YqXdwqH9wUpvLUQfXpiNdjE7GZ7NXXgbxf7N8QrockbHUvr+Ot0hqj89zp+V9bfSoJqksXx1tgqr5RpmpBq0Sr7t9MyIrcKs+vxa56LqqyxHqpkrAxEQtkx2RStnjeshStTddWSVhJ0up7KdUGfDjWwMBMczmbcVoOBhY2zBnrPQY3YHVzBe899vf2cCMjiyX37u0P9nn99Q1ee22j/t0D5HNWf77qH9doGQvUErZsm1uG9RQxL0VsIP/3qvXRqtOuett74Kc/Pcf3vvfg4L0ghBBCCCEvNpSxhBBCCCGEXDshobhe20ZZYtWrkn+pnGO7lHEpWtP58uWh9lafY/e1aAnSlpQ9VsjOtZXiNZ8rUyek6i/i5Qv+dJ15Mlb6a4HbTsaKvJXryJ9bvd2aVxZKzqYEVxC75dyxaU7ZIGwthiHI2NXKwrmQEL55c8BqZfDw4f5gactXvvEKzt4+w+bVDezKJhHbEKIiwUy8XyaTdzr9WqVii/UlAnaRiG28zJemY8tUbXV8Y99ce1Uat0FVjriXFi3Ea0vKlhIVyStVsrWVki2TtEclZI3qVxwr6V19vky4ioj1ScCqmxjHlRRsVa54Wi9lr5a03qbrM1K+3KV5Y8s5Y/W6CNq4HNLSOgu/8rAbi+F0wPjwJY3FXgOPHo1wbquSsEmKyudyLUhD26uvrrHZDNm/n+lY/UMcPU6rLbTP/X7l8tLhk08uq3mYW5Rd7t17eUtZE0IIIYSQBGUsIYQQQggh14wxmNKKOhGrvyQuv2DWKdiUim31nY5AbaB6y/K4ue1e21JKU1Tuuy4hWx5T99Gli3U6Vpcs1l/Wt8td5inaeFbT+5PxWxJWttNzq9Oy8vyXQr5OTJcyNpQpHkdZBiF78+YKm43DxcU4X/bSAHf+1B28+s1Xsb65jiIWFmHezSIZW0rS7OVWtumnCZ1+019Ttoq0VSK3GgNqv3re9HmzpG55THGNiySsHqNHuStzjfU5KgGqxzgkZeUeeSSxOh1fliOuhOx0PXMJ2axvWUJYjzddY2su2Wqe24aAjv2NWvbKK6vXRSVhi20tcaOItUHMxjloRdZ605axImmHkJo1g8GwGQAH7AbKtqtyfj7i/Px4mW0MsNnk5Y+luoD+sQtQf4an93gtYMttEasPH+7wwQcPOGcrIYQQQgi5MpSxhBBCCCGEXBPGAL/1W+/jl37pNbz77o1GKrZOwSbxlovYXOLOmS6ott5ybn2u7aoUFilrv4qQLfe39tX9dDpKzx8YvqBvzxUr8wPmX+DrEsdeHZP/5SWMtSTwsSSx975IwCKTsjohW5atDnPEIpYrFhkbShgH+T+OHs6FpKz3NgriOezaYtgMIRU7iViTvWaT1KrW0RCYUP2QS7FeKrYSrMXYRyViVXsmXcttdWwvIZv1aUjUxRzoa7zJ+kU5Wh7r07X2pGwpPquyxa2ErCmELAqpqs8l16HkZ1a6GErYFr+VmC1X7JUwhUrEemRtgLpeeU4nqdqSsrBIiVidkJ2ErLGpVDI8chk75Es72HA9ow9/G4/17fAjhv2DPfz+cHKSPD7eAx9/fInPPw8iPL1922WEe6nX1mdXi93OUcQSQgghhJDHgjKWEEIIIYSQa8IYg1/+5S/hN37jbdy6tVYJ1/RXHDEdB+SytixP3D0jkiFpCVg02o4VsYe+rD4sRdvjzUnXJePM9BahNclOLWLL8pVpjtX6Lx2frkGna+vnVe8rSyPnZip/rvUS2fEi5EXGOuer+YeDpK3Ts8OAeHyruqaxBmZlYFc2ilgtYbUg1dIik5JzorP55CgRG1//JjtHr6Rw9nKXJi19C6E6K2JLgVs+HrXefLwHHmOTQ28V1ScTip3fK+hEatY+DVYmYsvlrJBFLlWjkJV2XaJ4On8mgpGfo5lyRX6+7G1efLRpIdyUskivhbJ8sdyLTASbfAmDmLit/mS+bpUWN0P4s4OFPbUYMGB8NOaPnzxRHj4cAbBENCGEEEIIeT6gjCWEEEIIIeQaWa0sNpthJhWrE7G9+UBlXUYt7QDUUtPaNydijxWzLcr+h+Rrb4yekSnXj10mWapFqlyXTsjq7VyO1vPN1qlYwDlZJhErz6f3XiVjRaqm57iVkNV/0iavq5SQNTERu1pZ7PcO1loMQ7juL31pg+3W4dNPt1Wy67U/8xpe+9Ov4eY7N2FWJs0Vq0oTV0K2WG+VEq4Eabkux1t1vGkvm+so2lvnkae01YairWjXorja19rOds3unJd18rLVh0iqtUi7ynozJauOzeaDLcdCLjljqtW091dp2TI5iyRHW32bZYsbx5Tp2UrKakFczCcbnzsLwE2CVZKx1ucJWVWeOKZhFyRjnXewKxuSuB4YToZwffHzmhBCCCGEEEJy+J8LhBBCCCGEXAM3b67w5punOD0dlIBNsi5QW50yDQlI/1K+tpgTs2X7kxCxh8451z63PXfdrWP692GuDGWZVi6fp1q8GvXchKUuIS37yuczH8uofSZbttOxrfLWqZS1Xm9J/ZOTAZuNRes+bO5scPPLN7G6uYoCtpSbMSU7Pexemd+DL51SrJbHd8arzi3r2b1tiNOsaeZ1Ub7FivNU11oKz+L/srdt+Vf0ry+qbiqP69273j1opYHLc5f34uB5es9/495UfaqHl15nenx9jZWgLx+vPn/j+ap+ONA4lzH585e992xawiBbGjulY6c/kbiEEEIIIYQQomEylhBCCCGEkGvgn//nv4p/+p9+D++9d/PAXLHpi/4yGasFm81+NjlnhQ4ty/Ul24+LjNdKyXZqrjbHuMo+vT8skyT10xKxPZQwTtt1eWEUx8j+1C9/XnUJ4vbcsXUJYj2HbJK11vq43/uUkJVEbJoz1mIYPFarlJIFHMYRartxlwaT5opVqdhWMjZLycotbrzkulJQpK6WY3qpU7I9gWiKc/QEXUsqtvqo66zEYfkYMNNnKT1ZCcSXs06lxnZ9DTrdeiglqxKx5bhVOhX5vLD6mOz4oixxNp9rIzWrry2WK26kY+P90Y/JpLFapYklyZolYg3grc/ntJXyw3Nzx06P33gTyxEDqBKydrBwCMlYSdHaMXRef2kNe2Gx+3QH33nPEUIIIYQQQl5OmIwlhBBCCCHkGrhzZ4133rmBs7NVlGy9UGYr5RjajTouGKV8jFLKXoWrilhT/F3lXIfOd2jc4x773HPQ7lOmmfsH6+NyIVv2KZ9T2SfPb7qndZq6lPllQhaV1M8Ts2HfMBhsNhbrdTj/cDbgxts3sLm9CZKpkKXx+gphKcu5tHF2j5DGbr5stJBtiNhmuWElRLuJWNNo61/kchG75KVfvk2WvmVMuhaDxuMqtufSq1WbfozZ7rxtUdnm1n0vn5vyuOJ5iMlUFMsyFdu4b63HXb124/sqP2f5emwts7HKP4usf3zOpjlk7drCrvkVCyGEEEIIIaSGyVhCCCGEEEKugdXK4uRkfq5YQYRZkrZGbWt5B8zbnJ516lmaGdvUHXvp/mNSrLqt3L+0f2/ZuAIT9vXSrtLHmJBclfNIyrU8NrWV8rRMzNbrkm51LqVqy2Rskqs+vi6cM1lCdhhQLMOfJGGdCxfsfShR/OabJzg/H/Hxx5e48/4dvPtX3w3liQcTU7GYXn8inTLRFe9jehqaSVZ5ipDGyIQXkuyqys+2+ut0rhKiVTpWnW9RIlYLxM5bZDYJe+jt0aJ3TPnyl3O30rIqOdpLycp1L07I6jljp9RpuS73tZwbtpxnNkuy6rlmjUq3tubGRZ6AjY+hNYesPr96PmMSVpKy1gAOgEWY31UnY+U8Ri2nRC2AlIgtl5KQdTaM7RFSsDJ3bOOxEUIIIYQQQgh/tkkIIYQQQsg1kASryaVV0adMNZbJyVLcds6GeQGLRttSEWtm9h26pqvsO3QtV72O5Qatl2Yt98nxvecoSct8v24vz1ufOx+vfr3Ur6NS/Ou5Y0X2rlZB1gJBKA1nU3lilQTsytXerZu51WX6Ma5r6VoNV0vU6ny9l/TMW6JVmjgmUOdEbOs6r/r2mKM3ppbLvePQeb7QeNy9sVr3vDd26znoXZ5OV5u8f5WCLa9Hn79o1wnX6n3Ye33pe9BLxqJOxuq0bJWatchKe8v8scPZAHvCr1oIIYQQQgghCSZjCSGEEEIIuQYknVgLM0CbACklW5ecTclY6XuU+cj6HGpb0ucqyBhL5ks0C/st6S/7Wn1CmxadbcGa5pBNaVnpH1Ktsp7Sge0/IE/Etuaj7YvWJFTz9GyejHUun29Y/mT+2HGUeWUtjPFYrTxWKxeu2xoM62Ku2CkR20qwamlWSrRMtnbEWLPsK/J9VYlk5MdVctvU69k1mPZ2JgCXyMeyn24++KOJw3ivXq96uCItK0nZ1tytWTq1MY9sNyHb2kZxDFDPH6vmaK2Sspja4bNrlDHKczXvbbnPpDGr45FeA9XcsdNcsfo1UKVpp2SsyNV4T6YkrLfTicSt2vBYzGBg3PSeGQyMN7FE8ea1DcaLEZcfXR73EUcIIYQQQgh5YaGMJYQQQggh5DH4+tfv4M//+Tfw8z//aibUtGXQEvBQMrY8Ztq6wpVdh1y9Tg7JV72/t750zL6U1es9lybPRygbjKl0cS5p9f7W8XJMkq+yT57vsvRx/pfa5TXiG8s0npQ6TiWOpbRxKL08DAYnr2zwxs/cxM33bsUkX0uQdpOFS15S6vhKpioxVqUmO/1KedpKHFf7eiIWDRFrOu3lum6+BgnbGqspZksp64vyvOo3CJmQLc6xWMhOY+ofHVRvHXVdWSnj6sEpYds4d1aaWESrLkvce6z6vOXzWFx3lK36eqQM8iRsWz8WyERuuZRy8jaUNs7SsYOBWZkocwkhhBBCCCEEoIwlhBBCCCHksfjmN1/Fv/lv/gLOzoYs2ZqkLNR2KWLLNjmm9UX+XFtv2WLp2I/DUkl6SNAeO/58vzL5qtvzPvr4JE5zOZsfo0WpTuKWc9CW58wlbKsMcTtJK6WJrRU5a1RbSlrLXLPWGpy+doqzP/cGhtNVFLFNYYq6rXlr9TLb1TheSdVmWeQWxbVk5zb5ejnGokSsFrHlJRTbBwXsMW+hzktXzjErZbXgLM9/ZEK2DJPHRGspX4tx43rxWHR76xozUdq8Aek4LVGbklYn1ctErnpNRKmq5tfN7kXnL6Zt5XhrwmO30/UV5YmlRDE8YFcWbkqhE0IIIYQQQgjAOWMJIYQQQgh5LKQ8cZq3M5d7QlvEmkZbPAJ9w1OaqTkO9b1uEXtd4z6Z6yrTp/p8pXAr+9TpVm1wyn4mrvdKV6c5L9O58/kpe6+RlIYV+apFrE7HpvLFBuZ8h/3vf4rxRw/ifJdQ58jkZ/cGqofbeznFe4NagjZEakvcVn2R79fXmQnb4tzNa1DL6vE2ztkUsZ1rXMSBY5vnbMjhSlQ37k33/CjuU+M57e4v7mdLuGd9tdDvPOdlyjm7hs7+qkS2GjN7/enXlW4rxtd/1VgG4dsTo943ZSJ2+rMri+FkwOa1DYabQ+dJIIQQQgghhLxMUMYSQgghhBDyGOiUYk/Ehn6tRGy/vzpywXpru9d2zH7p8zjm6Riu43obR3VusjwXdXt6XvL99f0v9+vjWsJXn6Ncb7WV+3slrkXOiqCVPiJkjTHA5YjxB/fhP7tsS67WQ1SCbS4d2pK5lcxriL5WKrZqK64zk40LXpJHidjyMdWDXf9boDPmISE7e+3lPWqNh+Je6+ev+dAXPHAtWmf6N/cVwrT1eFuvqUril48HqO+BOq4li3tSVuZXzpLlqmxxTMmuLVa3VhhOKWMJIYQQQgghlLGEEEIIIYQ8FsZIMla3lQLtkEjTSUvgKOtSX9GR7XPjzI21ZLxWn+s2WVdlXoyW+1vyvPUch219bKv0sGmOW//1SlnX46UfBKSkrP4bBoNhsFitLOyQpFIlpaaHHpOXcisyZzcjCQs5Vo7dS79WYqyUZI3r6Mo2U2zrayz7NR5DlUxtib7WvmP+WjT2da9F72/JZrk3rcdd9C2ldJV6Lccs98m4pj4+6zv32lDXMfta0des78l0Xi2TewnXbgLb1m1avLbaW8lYs1LrnDuWEEIIIYQQAspYQgghhBBCrsRqZfDKKxucna0mCdcpZzrRSsaKRcjX22nN6+c6TvKsjPH45PfcNNqW7CvHnHs9HB67lPrla6SWwK2/Mj1rYGdk6ZWfjkKYNVOYWrqhEGrVcDOiz2Qd837lNRV9muddMkZ9gZXAXPp/reMPnXPutVTJyWzX/HHV+Q6du7zu1uMoxOnia+o9r/r1osctX7em0d4aXy116tsgL1NcJmZbZYwr6asFrQjbwTTvAyGEEEIIIeTlYfW0L4AQQgghhJDnkZ//+Vfxb//b38Rbb51lAjVIgFwkhdTiYVmW07IeV+XYY4/pbwD4I8c/lrlzyL7Hvw5jAN8cIh87c1OluzPtPuF14RvyVEt6n6cC4ZUA8o3+6ZhWGtb79HjslNBzLk/RluJMhFQpV7NbgUY7kI8pj6GUWnJsQ2a1ztsVgaWIa1xfMxnakbmLJKwe4zEoU51eXls+61S1GWPg5Qkt9xvAeANvfNaWvTWmZTaOuqZ47HTvvPf5S1+Ol76YzhkaQzt8fs1q3HjejqD13sf+Mq4x6VzyeI2Z9nl1HUZdh76m6TWlt728zwzCujXwzlevydhvml/ZY+rrw9L4tM94AztYOO9gBxuuc20w3Bhw8uYJ9g/22D/Y1w+cEEIIIYQQ8lLAZCwhhBBCCCFX4OxswHvv3cJrr51UCUVNP9B2HVGpGTM2O/5V9z1LXOU6zexzdeUrOfj8G7W+bLywrK1hLX/zJLU+tpb+4c9vR4yfXcBfKDk091LqXSeSRF0sM4/1/OX5pvZSiJbnPzZ9OXde3XYwaTr31z2sIZU71zKbkG0d05PSS5LQ2evquDdMVi64cf7u+TrPT/Me9Z6TQtovuR/NayuO1SnabBwlfY01sdyxMSEVazc2pGMJIYQQQgghLy2UsYQQQgghhFwBYwxWqzAXZ8tTxABbIcLSnxZ4Ji4Xnv3I9qfJF31NV5O0er1Mr4ZlLUPbfspUxzZ7FQKzFLp5eja9jtKxuXC1No2ZkthpW88dO/74IR78Nx9g+717+XXMvKyqdGujTymmMkkl164EbmvZPFenLdun2nrzolYp28bz0BNyWYnh4vEulswzx8TxW2OVfefSwh2xW127Hkc9xkUCtDxPeW29+9G4zqbcLh5T9toqrrF83enHVK635optfzbX5YqjZFWiNaZiG392sLCr8Me5YwkhhBBCCCGUsYQQQgghhFyRJEXKL9p1OdrDacz50Bm/xH9SXGc69pjnqRS6S18Xed+6NHYuc2dKYzsPbEfAqZKxx9yLUoRG52VUl77Imx9ajdESwDPCsXeN3X2H2huP6+B5j6UnTQ9cdzepahrX2znX7P4lfXv3B0V777GUf0uuQb/mZ57HQ6+R7nNaXE95Hl3GuyV3YRDFrZ47lh/jhBBCCCGEvNxQxhJCCCGEEHJFrE1zcba+bS8lWN3WTtX2eR6/0X/S88k+HlV528YtbiVdDz9vWirmYv7wNdXXWErY8jWkt0MKFs15ZCUdu1rZ9Nqd5FWWzOyIttkkY0tQIbVlZV7R6NuTtWV7S0qWMq285sbb9FAitpuGvW6KcbPnYu6wmeuvHrPp34dDx8n6XKninjgvz5elweX1UL4u0Hi9NF4/2fXq12AhYpup6/K1qq63l9aWNGzZp5eOjYlYq85BCCGEEEIIeSlZPe0LIIQQQggh5HlE5FqJ9x6Q9FQpsppfyLfsCL+5f15piduiByQ53T5e9udLD+AHj/a4fzliHD2c8xj3Ds4B+73H6IC9MRitwX5lMQJTHw/rPE7dHsZrWdsQw4e2s10Nkdvq03tZF/KxPG9L2pXnrcYyxVgz4nF2DtSeEJ5j6Vt27rcJJt9vYOCNz48p+hwc50B/Y0z4zOr0MzDTq0/1h8/HR3HdZZ/GOFe6/mJd359sfJP6Zo+v95i1eAXycaS/8ZnQ9sandqQxpL0Us8PJgNWdFcbzEX73bP9AhRBCCCGEEHL9UMYSQgghhBByRXKfM32rj3K+WCgxq0vJmmyc6y2Z+zLQExrHiQ7vvzgxMuv/4utEXkc+E7veA9++t8WPHuwr8ee9iC8Dv7LAAPiVhfcebuewHj1+ZjfCesBaD+cmIavTjJUPPfCCNP2/ZloVB9Zb5yx/z1BsV6nmnhDunK/ZVgrd3nFz7XPoY1ovvSOFbBSL5bFL5GopLKc24wtxulDUHrx+fb7WgOpa5LjmtaBxjsZ42eNCcV4lWgFkUjWK1enHECJutZTV/Yw1SepKiWKfUrHGGAw3BtiNxeXHl9jv9vVjJ4QQQgghhLzQUMYSQgghhBByBK++usE/9U+9h5/7uTsYhjxdqL1eKV1zb9Rqy/c9PZJUXt7/STN3Dr+gT+fIlg9a2Pa4/N0PH+H7d7fwPshU5wH4kGb1PiRfnQe8m1KwzuPhymJ1U/0nnJfrC7IrStnpOO89/ElIxj7cDMA0lqRqd3sH+yf341girrzzWN9Y487X78AM/deCMe1EbNhZ99XJwkzYln/ZMKYtZbsXlZaLyhPPXPO1Sti5ccrXV9HeFLK6e0fIVpIyd/3t69FvfxGMIkRL2YtiX/lYiv7G9x9H9RjLY6EkbUvO6hSrvlajjlciNruWom/808cXIrYpZicpG/fJvLGDgfGG5YoJIYQQQgh5iaGMJYQQQggh5Ahu317jr/7Vd/H666ddqdObW7S1/nwnYq9iKctjvsiSnUvO1e+zRMp6D7hJqo4+bI+TbA3L0P5Hn17i7/74URA2HWlYXc5gsRpsEm9awKKQsSJoXVienwY5Cxf2eeeBvYf/8FEQt87Dj2Hp9g4nr53g9tduh3SiVWVd5XpLRLAq+ZVJV9Uv32ykWVvzj3b6du9bh9nyxL1ztM535LGLS/QeOveB5GvrmkoBelTJ4Na55851ICl79DFz68D84yrPXQj9eG+KfTJOJnZln0rS6rLEmcS1gHEmzjMrpYq99Qdff4QQQgghhJAXE8pYQgghhBBCjsJgGNpzbsp8sYDpSthng0Pp1yXp2McTm9fT/3i8T3+989b72+O02I4O/5e/8zF+cn8H2JT+TP7Uw3vgRxcjVmerw0/DdIwOAGsZW26XKdlSyurt2CYp2jFsu9HBjx6f/L1PpseqJO4YhNIbf/4NnH7ptEqtdud0NWqfbi+PK+kkYjOp1UvBLknQlmP09nfaDsrbRr+mfAw76vZeyrXc30rHtkRmb9m+6OY1SUq1e+1Fn3jtrXNretdcXhNQly+WfdMxVXlhdS3h/Zhfj/FJqEbRKsfD5HPEqmRs2RaXOhWr5o5d+qMBQgghhBBCyIsFZSwhhBBCCCFHEhJPeVtLzrVTUE/y2/ieRF0iV1vHYGa8p8HTOq+6AnUJu9HjfOtS6d/R49F2xD/46BwffHYJu7JJzBTzqBpjYNe2Mb46gfguEU+tbf0H1G0O6by63QRZ5J2PST5vgpS11gIOuPjkIkvM+jGkZmGAV3/+VYy3xpj+i4/RAHZtMWyG+DBKYVmK1FLoZvvKMTpytj70gFg9tv+xSd2SIsEZmhakSEshO1OuuMnSBG05v6qWv6YjP5eer9FWnm92nJ6slnG06NVj6+tWojYbc07cFyL3UN9Df/q9Et+XhBBCCCGEkJcCylhCCCGEEEKOIM0Fq1OWwW7F7+wN8GSk6zFS9TrSr9LvKrSOO2as6xSvh8fqpWFj6LSx83e//wD/+d/5JCTeLIBJ3HwyAuub69AOxHTdwacDStDpJCx8SO6pazEweTK26NdMxqJIyOqSxTo9K0lZN/WRMsbOw46hTPLHf/djmJXJRK0fPcbtiNf/kdfx9l9+uy43rKVrmUSVNiVqMwG7VLzOsGiu2AUi9ljRW/VTcjVs+rzfIZnZSY8unjtW2so5U/VxByRulKCF3NTS9mBatxoUWao1JlK9Khus2oH5ayzH1dcp65KIjUnZ1o8DlJSV13QsTzwlYOW6s4SsJGIHE37sYD3Wr60x3Bxw+fEl3CWNLCGEEEIIIS8LlLGEEEIIIYQcSUw4KZbMJ7qMq6ZYDx1zlXGvytKbcZ2id6Z3s7uf2Z83OO/x0/s7bPcOzgV55pzHD+9t8cHdy6oMqTEGdmWToFpQpzoro6qeKu99KqFaCleo9J/0wySK3HSMS2PBI0jjMklbP+RcXpUJP2ewe7QDHOD2Ls4z6/dBxl58coHLzy5j/5M7J7CbOgU8y5x8nbufpfg+dOsf5y1x1WMXplWfGJ3zz6Zj545ryN7eMXN9F81l25HMrWs1Pk8S63LJWelkGbc4T3Z8Q9B2xX0jDWuMgcH0uQCkH2oQQgghhBBCXgooYwkhhBBCCLkyOhF7TNI09ZNEZu6XdJ/WuDpi9jhf6j8JQduTKT3b19rurT/+teg5Y733lYjNqgRP6w8vR/xv/8YP8YPPLkNpYRPE63b0WN9YZ2k4AEnC6mRn45J0Cjb2LZK4UbBOCddsLk6VghUhK+3e+ly+yqW4JG69nZZFIjaKqEZSVtKyZgj7zRDGs3sbkrMnFvc/uI+HP3oYShoDeP9//D7uvH8nPfDefVL7l6Zdl0rXqjRyNkTjeZrrt+B8B5lLrs6kY4+aOzbrckSJ407y9iiukIDtpnQPrOukbJbYLe+LyS9IlzPWwlVeK+WYrTljY3+L+F7TZbu98Sk5r+aR/cJ+F0MIIYQQQgh5JqCMJYQQQggh5DG4aiK2lLC1kL3yFWFe5M71v45zf5EsFb9Tq+/vK5OyP/jsEh/d38IjyNiPH+1xd+tgp9tl7JR2G0wmcADM386sm6mkkUgpYybRWm5LiWIkmavLucb0bHkRkyjSAlbEnrGmkr9aChuYkLAtw61yCgdgCNsWQcruL/bw+yBxH334KLs/3nusb65x88s361LGM/eru162HfFyXix9e9f0OBwrZNHpe8R5rjxO73pmxPHivuj0PzTeNdMqG10J26K/TtfGRLZ6HWali3UbIYQQQggh5KWCMpYQQgghhJAr4VW60sNPEmvZF+1zadcnSe8cOnJ21XGfxP6lCVl/RJ92vzT3b+Cv//6n+K9//1PYwQIWGD2wurmq5oUEUCc5e7exTMW2LqlYxjk4PfJkrC/66j8gCNLeUgtgn/a1koKxVKudUrXGh9StS/u8D23eefghLM1o4vqPf/vHgAfczsGPHvvzPV79+Vfxi//mL8KsO6lU1TYnTGfn4p0TtnPrvfMs6Hc0x4jG60isHkNxjkw++k6/jnDN5pLtpXRVvyw1C18f05C43dRw8QOILCErT6tKusa/RvpWzxkbE7LIj4uJWDOlz9Ucstl7lBBCCCGEEPLSQBlLCCGEEELIFZBkq6yn9lp4lv3yssZLJeyhfnOi1Szot+QcvWOO3b9Uml5lf9kvLFsJZl2y+Kf3d/jdD+7DTf3+5O4WozFwIloHwIqA7SRh56RhNj+lVxKxk4iFQVYyOOuDThJ2OkaXKZbUa7XU6VhJy5ppHKuuS5Kx+jw9CdyTn3skgYxwTdv7W3z0tz8K1+w87nztDm69d+uwFP2iUoVPIbx4dOL18ID91OpVZe7jpmyXnHdG7vbKMGfHFv1Kibw4haylbO+jukjCyjIKWNTJ2OrzgxBCCCGEEPLCQxlLCCGEEELIkSQZEBKxbTeQ0rL5sfV2KlG8RJxepU99bYvim4v6zLFExLbioceM01s2jvA+E7C6/7c/Osf/5m/8CM4AdjCANRhOhpAIFUGJQqqgaJuj97A7ktMjyVYtWeM6TEi0qoRrbC/bZBz9J2WHdZvg0L+tpr9PUo3eevjRh9SsS8sow6zB9vMtvvNffAd+5zFuR/zcv/hzQcYeQ+O2t4R48/k5woU9sVRsOkFfBs691Y5Jyl71HEv7ZN3n57VdfMzS69FCtGxvyWi1Hn/o0LjeLKVbyFs9B20pXrOErJ3mjFWC9mmIfkIIIYQQQsjThTKWEEIIIYSQK6Clnki+Rq9mejYdP5WwnMRt7oy0MF0qXHvHXEXYSp+rcqyIvcrxC6/E1/f/0XbE/+1bn+Du+QhY4Iefb2HWFtYEWZgJFKBOtwkLb2E8VsmzmHwVETuXhm3NGSvp1zIpq/qkyyhKvtqGpJXrs8W2QShLbEKatitqy5LIRWpQ5pM1PojkAQOccYABPv+Hn2O8HOH3HmYw+PJf+TJOXjtZdo9fIK49Hbv8xI/3dn8SzFxTt2Qy8nvYLIlcSmxZ6r/GtZRSNit5rCWstDeSsjAALLB+ZQ27sdjd28GPz9qNJ4QQQgghhFw3lLGEEEIIIYQcQS5hJSUrQjXvUxw5tfWStIvOjmQSWsslxx5quw6uImJ7CdmrS9ky/eo84J2Hcx6Ptg7/5d/7FD/8/BJ2bWGMgVlbGCVO9LywTRErtG5ruU9LWOSCNexO8igOI4IVqU8lZXVqVvooUSXzvGZLKKGrJa0uYazKE3flays1e+geKSnr4GCNhbEG9753D5//0ecYL0bYtcUbv/wGTl49mR/zSfE05O91pE9l36FSvkdd1hHlh4HqtR/nOD5mrN741+ksyx9UZMHXYh7YVgq3FK96TJWSzX7MIXPGGmB9ew17YrF/sKeMJYQQQggh5CWAMpYQQgghhJAjSWnYVKZY5oFN88HmbVKyuBS2tbgtzdaxwnQuEdsTsmi0H8uxKdcl+5dK2UPLcI//y7/7CX7vg/swg8F29Li7dxhOBpjBBBlrixSsSsnFEqQl5e0t26RdS1gZy9fJV5GrkHSsbMtxSFLWu1zgalkrf94maRvnhZ1ka0zVytyxeunVXLIuiVo4xDZMctt7Hx+Ht1NpYlm6qWTx1Ccup2v3NvQVWSWP5Xv/5fdw450beP9feB/rm+v+PX8M5ub4fWE4VvIeELmZ6Mf1Sd/qtyWtfWUbEEsJHxzP5I/tkBiWvjF1rqRrdmz5YwEtaqdSxsaY/PNkSsdK+p4QQgghhBDy4kMZSwghhBBCyNFo2YpKSGjBqnclOdv6Bj4YA+m/ZBrS5dd6SMhKOzr7lpzjmH1PQtzWjM7jcufgPeC8x//vhw/x//4Hn4ckrDUwg4Fd2eacjpl8LW5Jd47YqbknqLQ0Xdzm0/my0quxxHXRrtd16WIRaEVpYp2SzVB9YDA/j2wrIauElIOD8QbOpyUMYL0NZYo9YAebhK7z+OwPP8P5R+d47zffC7IcBmZlMGyG5r0lzyHXnXZdek5ZbYjnLOnaOtw0RKzaV52nIWdlfdFc04QQQgghhJAXAspYQgghhBBCjsLDOcBJItAniVqmXFtli8u0rKRrwz6vvqDvJWQPLVGs97aByiZk+x6XJWnXcvvQ+lxbvfzbf3wf/9nf+CHMysKuLX58f4vV6QpmmOTrJPlglXw1HalSrLckqpw+O17d+tYcsZKOlRRslpaFSsYqkZolYIuHHtOKeh3I5pPV+yQBC484V2wsVywljV2ektWJ2CopqxOxLh83vkwtAAc468LYg4cbXSjXahHLtu7P9/iD/+MfwBiDcTfijT/7Br7+W1+vngPynKEkbJSbS9Owcx9PKsku78ODSVglTaMsLX9UoF+7uq/8wGH6EUe2rfqVQhZmeo/bmcdCCCGEEEIIeaGgjCWEEEIIIeSKtEsN+yhZdR9Z18u2SG2e6cD+Vr9DQvZJchURe31s9w6fPtrhTz65wO//6CHM2qZyxCuTkrBSFreUsFrQ5Aa2ItuvxasIppbAneSqbs+SsT5P50Wpajr9ZR7ZouRxlPu+TsbGEqxIZYzhwvV656NsysoVyzFa8MrjlsfVuCdyTjOYKG8BRCkOTPPITvfMw8OvQnnjBz94ALd3GC9HnH7pFOcfncehN69ssDrlf9KSI2lI3ceaz7Z3DjV2mYJlMpYQQgghhJCXC/6XKyGEEEIIIUfgfUjFyl9ItgJBwkri1StJK1JWp2HbIlfGCd/Rt6TqsanYpQlZFO1XYU5ktPYtScguTcrmY3334wv8L/+rP8bnFyPWtzdBwtpcwpaptWpOWCU+9fbcw8sEqjf50yD7lSwNu3KBmUnTMjmrzlfN11m2lSlZlb6W7Uyu6kSsLI1Kxvp6HlmdkJU+3oW0rKx752GtDRLW5vPPmtGE+WRVMjbr4zzGYYQdQynpz/7wM/zO/+p3MF6OGLcjfunf/iW88+vvzDwx5LniUPJ1ps/sXLe9lO2h/b7oqxKuck5Ave8b+6UssXzuxB86SDshhBBCCCHkpYAylhBCCCGEkCPJZSsQRGyZkG0lYbWczaWsMalcsTHpmBSeump6dmlCtjQPx/AkROzx59ruHb77yTn+8CeP8JMHO2wdYhJWC1hjG2VEp+2wMP3bMCN2orj1StCo2y2CtUy5hm4NKQvVR503k7rqHCJX051KqVddnjj2VUJW949LmwtYeATRCiVqbUreGmdCmWFZN8hKscbr8Uh/8hh9/liMN8AIWGfh4GBXFm7vsD/fBxl7OeL+H9/H6eunuP2V21jdOP4/bWfny/2iRdk1hjJfOpZI3Os+R/n6mNvWKdlSxFLIEkIIIYQQ8lJAGUsIIYQQQsiRSDrWe0nH6pRrKlOs253zk2Q1qp8+LqURp7NMy17ydS4VW4rVXiJ2Tso+Lr1xlorYpUnZtPz00Q7/yf/9A3x4f4f9YGFXoRSuCNcsEQvUidhCmnRp+Ttt3EUmSl9fyFVdOjgekvrnr4P6oRvfmGezERYuk7HxGCVCRcjq9ihpi6UWpTohK2WVvfVZAjbOJzuGfdaFhKwzLh3jwj45xlkXjjUAhjCWHS1GGxKybuVgBgO7tvjef/U9fPD//AC/8j//Fbz2C6/1n6/niKWlcheX1H3eJW9DtM6mYK/rnNmm+oFCdTH5evnjDnkft+aOZZliQgghhBBCXh4oYwkhhBBCCDmSWsCKXJXUq07FShlj00zKCrp/Py7VE7FLonytPo+Thp07z5L2x0/Heu/x9374EB/eu4SxBncv9ri7ddh6DztYwAaZF2VsqyxxUXI0svSWxASzSqTqOWFFYGqRo9OfphZrWeJVXU8UUOpYfb6stLFO2qokLIBU9lgSrXIvyjlj9VJOZlEnZKcUcBTQDikRW8jfeD7Xls4yhh1suk4DWG9jIljuw3g5wu0cPv47H2N7d4s3/uwbT3YO2SeVmF36llk63JMUlS8R8bW98Hb25p2NKfJyP10sIYQQQgghLw2UsYQQQgghhByBTrqmOWNb6dhS1rb2SYI2GDQpUyxCNniqpcK1l5TFzDaK9ta+JczZita+Q2K21V738QD+87/zU/y//v5nGDYDMJiYmhQJK2nYKhGrJWCRjG2Wrm1enW8n99TxWsDGOSajwVX9HydIPLfstZX7Dnl+6eNSm6RbsxSuaRwHdYydkrLGwxqbUrBj2C9tkpoVOQwAfvBxDDe4sNw7fOc//w5OXj3Br/0vfm25jF36doISyEuOewwWp13TAe31x7mGF1Xktp6zVhGBq4zZSNLqFGzsU/wghDKWEEIIIYSQlwfKWEIIIYQQQo5ERGyekNViti5TnLZN0WaifE1LwBhJf5ppvYhaduVryzCUBmnOQFynjDlWxC6Xsr/7/fv41g8f4HufXcKsLbDK5WtMxNqGhC1LiyYrehRRoippVz4dsaSqdr+mIV87T0WcexZ58hVAPnfsdN4yJStyLUvCSpnkMi3r1PiNP++mcsLlfLMyrjcpFVtKYKe29T0qnotyabxJ1zuGx+vggrT1qrzx3uFP/h9/gtXZCuPliNtfvY0v/5Uvp1TwoZKwByRrd37Zx+WYt9vjvDUPHdvZXwriLN39RfBFuuFDT29nf0yfFxcbk7AdEWyswclrJxgvRmzvbr/Yx0oIIYQQQgj5QqGMJYQQQggh5Eh0GjalY1viNckwLWHDdv4nbUAqa5wnY/X6nJDtXnWjz+PEwg6d69i2ZVJW7tHf/uA+/k///Yewaxv+yrLEdpIkU7lcLWG1nI0cewsaty4rO6xud1PizYk/XY5Yp2ZNvj+Ts0YJ0en6ooRU8nZWytqp3ZlczopIFcmqBW1xzti/lLGm2HbFchLlDi5bipAW4WXDExvmpwXg9g6DH+D3Hn/8X/0xxu2I7b0tvvybX8a7/9i7MMOsYb3aS/+60rFer/ruvkPHHtWnfF4eQwBee4r2SctI/TuVx+ijS3NXx+plua9IxJrBYPOlDcbzEbv7u/BjA0IIIYQQQsgLCWUsIYQQQgghR+C9xziGP52QFSnrnIed0oPOYRK2uah1DjBGtwUDkM8t66eEbC/dWl0Z6lRsz4T1pGxr3xLmJMKx6dhee1j/1o8e4K//waf4hx+fY9gMMENIw5pBJWJbElbEZiFMsrYrUM4DCyCbz1Wfa+k4VYpTSzud8lRCLUrR6WnX4jWmQ0Xs+vzYKFZ9nf6Mc13qNKxaltcn885mSdjWUp6TSWzJn4VNSxvObVxK73oTkoZxnlo77RvC+88M4THe/5P7+N3/9Hfx9q+9jS//5pfze2n05kwJ4mP6HsuxInau/5PmquJ3Qd+rCN0rS+DruG2lrC1fA3NCVtrV55Gx6bOKEEIIIYQQ8uJCGUsIIYQQQsiR6Hlj5+aFDX191pbmhc37i4QVSavPJebHxDRWLxW7ZF22gbYxuE7RcxUR2z7GOWDnHP740wv89T/4NEhY+dPliU2+bEnYroBdEi4u+uoyv7HPFSRdVSpZvwamcsQA8qRrbERelrjc9ml8OSaWT57OHZOwCKlT4021hEctW1VJYhHFHj5J0qJMcnaMR0y4VpJz2h+fVyWaJe0q996ugsAd1kM4v/O4/PQSH/w3H+Dk1RO8/Wtvp/T0sTwJIfs4adTWwYfkpv+CBG7r1HPitBT0zypXle768wgmvTdQvFevJWZNCCGEEEIIeZahjCWEEEIIIeRIxtE1k7Hpz8A5D2MQU7BpGdqDdDUxSQtI2WNM5YllX1hvy9VjhSyQm4XHTcSWHJOQnduu17/98Tn+s9/+EX7yYAe7sSEBa/M5YpsyFuimYoWD84nGK+k/vqvOOztzsiROJdGq9mXLVlsj+dptLx3/3F+ZDCxLEst+JW0lWVv1QRCqOvGaXaMLZYm983Hp4GBtSM3CJJnrBx9E1yoM4lYOsMCH/98P8fkffY5v/MvfwNu/9nZ+DXKfzQHB2hCy4XYVzwvQf/6bjnRerHbbriovfbl5YKAl13Jd51v6GK96TU9R+MqPHcp1nZIlhBBCCCGEvNhQxhJCCCGEEHIEIkyDdEUj+Zqvi2RNS5P1SwnFMhmr29I6IGVqryJkW9u6XTjWDhwjYVttdR/ngbuPdthP8vqHdy/xd370EDvvYYckY2GRkrFAmiu2k4oVlgpYjT5Gz+taPYRrkiutksGt/bq9SsA2tg+t67FimeLyOSrvqZ3EqvO5fLLTGGqu2vi8WMA7n56raa7fKHJV6jbKW3mefVqXRK8dLDw8/Cp0HjYDLj69wMMfPsTbf/ltvPqNV7G5s4FdX09d2CwlmxoXHdfZcZWL+MLISnL39mHm8S07ydX2PS8UH9mPWyadEEIIIYQQ8nxAGUsIIYQQQsiRhGSsg3MO42imlCxUMhYqGRsMgl7qpCwQJJS1rWRsErEhIdsTsGVkcW4dqK1GKwr4OCyNtfW3H13u8b/+69/DH39ygdWNFbbOw1kDa0woN1umYW0SfIASp6bYVm1XQqRgKXM7qdvHPU/c9EV6c1pGIVi2qflc9fyuzbljtfBc+rcgIWtckYhF49jp+cvSsSYd70K0NvaVhGycO3YMA/khX8Y5hAcDu7L47v/1u/jgv/kAf+5/9ufw+i+9Xt3rRelY1O09QV5ypRRq0e7Dk9sfIqtvPnNu315Wz1Wrb+v6Wv1b/Z4gV55HNhvk8YdYhPpMyhLhhBBCCCGEkBcWylhCCCGEEEKOwHuRrZiSsZKE1X86/brkLx0TzgEAfkrFmtgnT8RWV6ba59bROL7XfvTdOWJfe9t74EefX+An97b44LNL/PDeFqudS/PDlmWJJR05yVGditXt086cyqfWSdPqUg/douiAj7+XWfKwCDNnqVx1QSJW47yyBrH0b9wuErCxP9rpWH0fynRs2UeLUg81Z+yUjo3zY4YYYLZtrAEcopAydpLEUyI2zlUr90SWUx/jJgkvr4EhLY0PEhYO8GuP7f0tLu9e4t5372F1tsKt925hOBmq+39wPthee+O5WcxSEXuV8TqHLRnv2uaZfVK/7Xjc45dK5ychadVHOeeMJYQQQggh5MWHMpYQQgghhJAj8B7Y7x32+zBvbEjJ2mk9nzu2TMbWc8bKX5pj1lpJx5rYP7SF9GwSsiWtNGxPwvbs4nVah6URudyIjN7jP/v//BC//d272A4Gqxsr2NVUlngwKQUrc8OKiJPytaWEVbKwkh4dB1IlUFW/svzvIcGb9S1opipnUpmSjIyPTSUay3RsXJZJVJ/3z1Kzbnp96XaP7p+Mk6VzDVJK1uRj6usw3kRBG/9c4/r1PdVLNZ+sXLsIXCC8HqR8tbxuxt2I3/8//D5OXjnBr/8nv45b792qfrOwWMiis+8YFv52oVkeuPy9QCsZulQ26uOvQ0rKayRrSuO3JO/B+XMP/Zajc95nCkl8y48d1I8VCCGEEEIIIS82lLGEEEIIIYQcSS5eoRKxUElXXyVgncNUjrhMzgbro9uM0XPM+kne5pI1r5Q7Y/Fmk7HXZZbK8Q6119vf+ek5Pvj0Aj+8t8Wj0WNY25iGFblWiVgtWU1bwoZFR57O0bhNlTzJgrfHiZW5RFwrJWu8SpnqdpVk1WP3ts30mpJ7F9tNnYgtr7dKyZpiiZSOBcJzJPPI6kSszBWrk8zeTrJZ30eD5tyxIl4NTJ2MVXPJGmdiqtp6i/3lHrsHO/z0d36K84/O8fo/8nqaQ7b3Fuo9TVd96xwShteYzjw4P213d2aD6/3e5z8SWHYxs2MeTUfs6h8pPLOUv5chhBBCCCGEvNBQxhJCCCGEEHIE3nvsdiN2OzelYk2WjB3HPAFbJ2MNjEnpWAAxEavnjHUu7LTWx3VjPKwN3+KXU5bm3+4fkrBzUvY6WWKV0vZ//fc+xv/5d34Ce7rCcDrArvNEbDZHrFq2JGwlZTXHCBB9q7T87AjZ2FQ/Qf1TaGmkxase2yOVFp6kbJROU0linUCNZa2VmIoJWKNSrzKOpEonGZr10UlYaXP5tUVh6pDKC0u/QqaKsI3JWbmfkoxtLbW4mpYWNl6nlDiWe+RHJazlVg6hj9s5fOt/9y3c+dod/GP/6T+GzSsb9WQgK+EcH9/c03ldb52ZNOlsv0NzxRbi9Srlh7vXos/bkqOHPgKK9Wpe3Kve27nj/IL96Mhc32m/AvpHC4QQQgghhJAXG8pYQgghhBBCjuDRoz1+53c+xpe/fBN/4S+8gfU6L00s878mqSqpVq+SsZKSNVlqNkhZH0sSSwljIE/JluI1n0tW28OlUla3PS5Lk7F1mx8MsLYwKwM72FRqtpSuLRGrRF0zoVomWGcfQS5HZ9OwLel65K1sXU9L0uh+1byxB9rKeWDLfbFdCdLW/ngOEawiO0Wc2iCL4xjWw7hUkriVevUIfaqEbDGHbCZ2leA1dkqP65LVHmnu2CGUM7bewq/CQXZlsXuww3f/i+/izvt38M5vvJNKXR+bkL0OrlnELpGNx15T85xzhx/oV5VGXoqfuT/dQ2Y6Lr1XrfUjrz0KWP2RzXQsIYQQQgghLzyUsYQQQgghhBzBgwd7/Lf/7Y/xzW++il/+5S/FVKwWsvmcsSiWPpsPFiiTsSE5m5ZJ2gYpG8RTSsjmgjbJQW2PDklZ3VbyuJHABRLWiyAzGE6GNEes+oNBlYwFCik7J01bgrZDNv9qkcbM5GtH+B6SvZooZsJGGkqlWmVsLbfi41FiqiVrK/EaXy/pHKVojXKzELjZfKrCjJSNQtao12WROhQJKyWHYx9JWuo0bn3zwvPuQzliN7i4LUsLCwcXRKzxoTyyBYazAdv7W/z+//738favv423f/3tJGOnsZsJ2em5uFaWitjysJ7snJGyrfLDs/PFHpKOZcr0wG8xuvPFFueRa5L+0ufg3LiH9nVv2ReQUNW/j5FtHPd5QQghhBDy/2fv335t2fI8sesXMdfa+9wyszKzuu7VTV/cttsPtrrVkhGNhcAW70gI8QAS4m9ASIh3JASCByR44QUEQljAA8iIB8sYVGoZX7pcRbe7qqjKyqqsvJ7Mc/bZ17XmnDF4iMscMWJEzLnW3jPP7fNpLcWMiBEjRsScJ2XXd//GAL6chLEAAPAIKfVTEh8OabaGbD9NcZpNU5xv27aZPo/51OlYM1TG9uHsWCHbDQHXaVrjWgB7rcrYR5StXXy8P/YHP3wZ/88//TT+8Cev+iB2VwSx+Tqx+XYcdq3iMh4WwC60p4/VKY+bIkR55H0WfeRZWZNm+/m6t1MolYWP4zqwfb5bqYwd2lQrY7NpiRfhbHZ+Wuu1G44NVa9TgNtkoW1WvZqfy7+vKYQdpjeOGALadh7E5uOe6bKQPgthIyLa3RDE9uW30TVdtF0b0UTsbnfRNE3cvH8TL37wIn7/f/b78Wv/4Nfid/7Lv5N9Adn3kL//S/6zOaeaKW6EsFsVsbXzMf/tTKH9uf88K+0uDofX2l0S1m53/KA2a+vIPijIrfS3FtheFOQ22X9H+T9yyKv6AQCAryxhLAAAPEJKsVoR209VPE4zfNp2XT5tcQxVrv2xdgizxmPjdX0gG1P4ulUhOx6PiGiaMZzt2/ceWhl7SUpwLohYTzu6FHHsUvz/Pn4d/5c//Hk/NXEZxJYBbK0yNh9qrUL2IY8zNj0XwK5Uxc4Prd/wkgBnbVri/NwUwI7HsorOWbs8WL3w8yw0SvMK1zFUmrZjgJtPS3waxDyIarIgauyrbaZ1aPO1a/O24/ExgI8mpt9J6oppivuBT++k2fVVsmmX+u1N/952T3fx5uM38af/5z+Npm3it/6LvzX9BrOXfxpH+Z0+JJjd+MofOu3uar+p8tvaCHcvmnJ47fravcbTWb+1Z6vdd3Pcl1S4rgXcK8fLKZ5TuiCs3jqWVtrVCGABAOBrRRgLAACPkFKK/b6L/b6Lw6GLw6GN3S7FzU2Ktu0rZCNi2rZD1V9eFduMFXdTsBhxygf6cLWvkO33a+3H6Y/zv/z60+fY2I/ieKycv8TlacYf//RV/G/+o5/Gj57fVytiF9MSl5/z0LUWwj4w8FgNdotj/WYllL3wvrOpkMtr85Arr3TNvtKxajafzniqOk2ntlO7shovrzZt5pWnizZD8N+krGI1W6c1pTSvlG2HttmUxXn4N4XGQ8gbEbMwdQq18r+IU3/5++36oHV6N8PzN00TXeqmaYrHd9J2w3TFT1LEoQ9jxzD3J//hT+L3/nu/F3/rv/a34rf/jd+efy/5e8+/w0qbS9WmDK40mu9uVcTmv5ut8PCSULjsr3L/xfgvDSdTcb4Y12yK4q13ungV6RQSbwWrlWs3XfDvTRZr92bjKP9bBgAAvn6EsQAA8Ah9ZWw3TU2cV8WOn0/VrrH466ciHs+dqmIj8vZ5JWzEqTI2D217pyC3XEd2PBaz/eGq8qkqT7qVLF6SLCzbHLsUL++P8VfP7uL/8/3ncWyiD2ObPkQbQ9jyrxrE5uHomSB2tt5rzSUhbNnH21S41a4dA8Xx5BioZuciYqpUnR3Lq2CzYDIPEKd+hmcZ206fh37ydWWr0xaPx8bph5usenY831xWITt+t4spjCP1U1SPQW/2/Y8Bb358rMqdxpMFxWXVbNM2/TTGN31Qu3uyi9c/fR2f/dln8Rv/+m/M3mvt+5nec/beL3VR5erW8YfdrH7PyALEMqTdClDf1bi2+i/2H1Qx+5h7zU6l+Xso77UWMD/kftl/r4v/NgEAgK8kYSwAADxC16W4uzvGzU0bt7dt3N52sds1cTj0KdHNTYqI/lhERNt2EdFG0/TbiIjjsQ9QmyZN22YMpsbqsBTZVMT9vfPt+NdfH0OgOV+Tdmgd81RgrUzrbapjLytF++Gzu/gf/7s/iJ+92ke3a6Jtm1lV7LhG7GLa2TyQHfeL6tjZk5wLX6eG633N+sg/1vp+TDBbCWpmVXZjpevY/1itWFTA9l1l4eDYT3b9NM3u2E9aqZLtskA/FeFrGcjWKmTHtmWFbBaeT2Fvyl7aSsVkdXrgsV32fbWpPa19OxwfK2PbaCMdU8RNRNf1a8emNsWu69eOHadIjiaivW3n4znzn8T4fVzkcf9+4ewasdPvIj+X/y7KY5Ugtmy3WDt2bc3V4t6L6tm8Te3dbT1XOebsXtM2q4Kt9ZePoRr6XvK+V8a0FRrXAvDpv6sz/3AEAAD4ahHGAgDAI9zfd/Gzn72Jrov44IObanVs2zbDtMSntWFPVbAxWx82pmrEfBsRcWo7fs7bjIlUH+ie9nvZupyzStmYpjx+u/D1Eqf+jl2KH312H9/7xZv43i/exIt91wdfaxWw+fDG45Htv20QWwauF4S8D66Mzc9fmH3n95gFNykbW4pqZezUPi2DnylMzb/6dHquvKI2ImZVtZuBbBQVsmXbpnK/LDAer5u9j/J7b4bnLX8rcaqaTW3qpy3OKminytlx3eW2v6Zp+3fY7Jp+WuObJppjE+1NG3ef3sVnf/5ZfPBrH8TNBzfroWzxvb21lT4uCQYvmp74sdb6vOzfXtSPPTSUroWol9yzOL46NXQW1lbXwV0JbBfTOpfHAAAAQhgLAACP8sMfvop/+9/+s/gH/+Cvxb/1b/123Ny0cXPTxOHQRdNE3Ny0caqM7eJ4bIYq13kCMFa0tm1fKTvmcG0730aczuV5YNuOQexYGVv/K68bjsR6gvGQcq1z4UN//vmbQ/yP/h9/Gd//5E28ir4Csd21p2rYca3YIUzbrIgtA9R4eLXqbNrbONNn2c8Yil54r+r5WsAzBqz5/bMwcArmxorXscp1DEjHStdiTdla1exUMZuvK9v/XPvjbVpU1T6mQjZfMzavcmy6ISQd14sd24zF42NAlv03sNCd3kO+VmxZGTt+jhSnCtmmr5DNnzki4nv/1+/Fn/87fx7/4L//D+LX/+Gv17+vd1nN+JAQtiz8LNcqzT6vVZ0uqmKjqFpNxX55TdH3rPK0vF/K2qz0NYaY5W+k9ryzY+nU1yyMTvNzi8uLStrV6tzsPZRVuJvr5ebPk58r/61MxLv9HQEAAF9YwlgAAHiErkvx+vUx7u6OcTym6W+sju0rYmOqjJ3v9yFZvmbsWEnbB7Tz6tmui4gY16CNqc0Y5vby/0t//n/xLz+PFZOn/fH6eZb5dtVdef8pRfzxT17FD57dx09f7uP5vovdk91UsTiGq7Pgc6sithK6PqRitQxYN6cnLrtdmbb4UWpVsWNYmodh2deXT2Gdf9XlGrJjQDlNVRynUHW8z1T1mq8rm/2EZm2KIHazQjbmFbKL52iKvvO1a8fjTfEu8mrYSuVrvkbtrJK2jWmq5NSeqmTH4007VMbumn7q4psUh9eH6A5d/OKf/SKatolv/0vfjtsPbxffVfU7vNSZ/7wuCWJXQ8va5637nQk8NxVB5GKK4o17XLSO7ca9tvpePfc21z/0vdaM/23l/x0DAABfecJYAAB4C8djivv7Y9ze9pWx+30XTdNXyEa0cTymGCtjIyJbz7WL47EdKlq7aNsmjscUbRtTpWtEDNW0p89jBey47fsc14mdrxdbr4w9tRmvHXo/86QXlHVWpJRif0zxv/69H8V/+Bcvonm6i/a2na0RO60P256CtnI7jXUtNF0bZn6qCHsXoewDK2Pnuw8IaWcZVbbTnM7la7uW7fJq2dnxPHBdOZZPHVyres3vPVbPVkPXtUB2rIxNTV/xmlfGdjEPTdssJB2rZCOrxu2yMDXFVCG7WEN2DOnG++xi9nzjsTba6HZ91Wzb9evLpi5F27SnauB0Wkf2j/53fxQ3H9zEP/qf/KP41t/+Vr3y+h3maavhXCVQ3JxuN4owvxaWVqo/q31XrqlWwpafV4LL1arcxSOm2djKCtjqGrobYW3/j1tWrhn7y6/feMfVKaHL+1f2a9N3N8P/AwAAvtqEsQAA8Ba6LsV+382qY8cK2XGbV8T2VbMxC067rk/d2jZF1/XH27Y/nlfPRizXjB3XnB2ranunksk+tE1TEBtTmNEMoe4pmE2pXnU6nL34ncyq44YA+dg00TVN7NoihM2qHMcQcBbEjopq2YWtPCPre9rPQtaLQ9jZcJrte24p+4k4hUJNEfSMwxgrXccgLKuw65vPA9itdS/LtWTLsZTVrLX+VgPZPPDKc/7sO56qZrOq3UWVbJx+B3lwlVfEzqpl47Rm7HRsnPq4zYLdYerrfFrlSNH/44BuqJDd9RWycR/R3Xfxg3/vB/HZn38Wv/WPfit2T3eXrUf8AJsVkpUgdnW/FsTW7nMmCF2913hs5fpFVezQdmsa4EUgWt5363921rLrtHHvrM0idK6FrNm41qZjrq0du3Dpv3kBAAC+koSxAADwFrouxf19N1XHHg59levh0Jfp9ZWxMW3bNsXxGBGRV6ee2vSVsRGzssgY2zXZdc10XR/ojlWwy+rYPJQd+8nXmc1D2DF4eEzetCg8Gw50KUVz00T7ZF4Rm4dm4/SxterXzSrWvN3sZeUfl4FvNYQtQ9v8frXw9QoFbXmVXC1IqlW/1kLZxbTElfOzKYzH4CoLX/M+zh2bxjNUso5VsbNq2WI64WjjtLbsOL7mVE07hmrTfncKYPOgNVJ/bpqCuAz74hTCprbvv2mbaKPt+4x+HE1qok3tVMHbPmmj23fxR//bP4qPfuej+Gv/2l+L3dNdNTx9SEB7dnratRA01gPDahCb/0S2pj3Otosq2IeuFXtBgDt7jspYynVaF/2U9yvfTf65FvxuBNrn1oKtjXftORb9AQAAX1vCWAAAeAs/+tGr+L3f+3H8K//Kd+Jv/+1vxuGQom27OB67aJoYpidu43jspy1u2zEoTcNasH2gW4ary7VgoxrCjtvl3zyUPbXr+zsFsUOlYNHn/P71cPbUJq0cj/h//9ln8U9/9Cr+6rP9IoidpiceKxyzW06h5EOD2Dw8zc8X/ZShby2EvSSAfdsqydn6r9PBmL+DFIs1XbdC2anqtQzZs6C1v2UloC0/j90X107PXwSy47TGU/AaWRA7VsQ2WaibHYuIU1Cbvf9pv82C6rHStRv6GwPfcX+43xjOzipixyB4CGUjIppjM6+OTW20N/28yN2+i2a3/T2/k/U/17oog8lLgti1sVVCz817l/3nx1bC3qkytbgmP35RWJkHwpV3UKtYrd5ja/rnWlhbXlMLcMcxFPdOkWbbhSv8Aw4AAOCLTxgLAABv4Wc/exM/+9mb+M533ou//tc/isOhi92uX/+1acbK2HG64nH64loYOw9N+2mKx7vkFbGnwHWcurhp+umMT8HtKcDtpyM+VdOO0xL3od0phF2Gs+O9T+fPmeUXKUWXIv7D7z+Pf+c/+3ReFZtPTxynYHTalpWsay4JYov+8vuNbcpwd606drr2krGcM2awRX+L6YPz8LUWyo7TFxcBbL6/CJBTszkd8hh+nh7tNP3wFKaOfWT3mwWueUBbTos8bsdrs/B1CmrzELbYz38rU/A63mdYfza1ab7W7Pi+i1B22t/1lbFN20yfxzC2vel/u6lLpwrc/DnexmNC0LU2aXm8eq8yiJ0Oz38TayHuVmi82D8zjkUgWvZTC5c3X9r6deO1ZVhchqZ5NXA1lM2C17NDWTvfbJwDAAC+coSxAADwDuz3Xbx5c4gnT9pomiZub7tIKeLmpo2ILg6HJiK6IeRso2m6aJp2CkTzKYMj5tvxr+2zoVkoO27H68cgNyKmdWTnUxbPt7McsjklBI8t+BzH/Xt/9ln8u3/0afzpp3fR3DTL6YmHKYnzKtkpMM1D1TJEnQYbi8+z4DYP7SLm94jlua3+z06JfMm5XCUgHY/n91pd1zUPZfPjcQqqHrK/ViFbm5J4Ol9UtObvcDGF8RCYxviPC4ZgtWlP0xlPx8rK2HK64uF7HdeMnaYrHv/6AvTT2rHt6V3OKmGzEHbcb3ftvDrytv/Q3rZx/+w+fv9//vvx7X/x2/F3/5t/tw9qrxGm1QLY7Hi13dq5B1TEbk5PXLlPHtyuVcXm954FnJUXN1W5bq0bW4a32f1q951No1y5dhEEF/u1ZxxqXtfHtXavDaYyBgCArz5hLAAAvANdl2K/7+JwSHE8dsP6r2mokI2pIraveE3Rdc1UEXva9udTOq0BO+6n1AzVtRERzRB6pkiprzocg9eIsd2yfdNkVX0xhh9NNjVxyj5vVIGuyEOZv/zkLv5ff/osdk93fWVhOT3xSnJZVrWuNFp8Xg1i86B1JXSdVcJeGsIWlaMP0sQy0Cnvkb3/2VTG6TTmRfVrOlWpLvazsY4VrbN7FvurFbJjwFX0v6h+HftsTm2n/svxR3asCHfH+07vrPhup2P5vSp/07TF4+9vDGPHtYqzdW3H3+pUJbtr4nh3jJ/8Bz+J7r6L9N+4QnhWCzqL4+WxrSC2emwtCD0XBm6FnGv3rd2rDDjX7lsGxrUx1ELfsV0RNE9j3lB952l+brpnJbRdDWgjTr/tyvcliAUAgK8HYSwAALwDd3fHePFiH0+f7qJpIm5v20gpxW7XRErttG2asWQvIqKN3S6GytgUTdNOUxPnoej4N6+EHQOwcT+KytgxoD0dr1XErm1z5zLZ6tqxbRO7J7tpitfF9MTtKVArt1NAGqdXVZ0athbEtln7Zn7drI+VEPbi6tsH5q+ltQB3FnZW2ubhTXXd2MiCnwv2L62QvaRqdrHNAs7afh5S1daKjYhTZWxENN3p95Ha4tg4FXE2JXEtzFutjN010UYbXer66YqzaYp3t7vomi66YzdV4o6VtsWLP++SMG4rUI3sN7J2fqW6tBYYrlbJ1trUQs58yt9yrdjhmkVwmurnt9Z7HdvX+pqNrXg/iymHs3uWz5VSWr67Sv+ze2dtqmvGFtct1l2WxQIAwNeCMBYAAN6B168P8emn9/Hhh7fx5Ek7Vcb2VbBpWkM2r4odK1f7ytj+2LhWbF4hGzEGoqdq13FK4byCdiwR7Lpm6jefenhZohgxTwOaWeg7npsfW8pnQ32z7+KT14d4fndcBrBZleIYZD14euLCIrQtrp3ONfPPm0HsY0PYc2FcLXgpvoZZFWjlaysrXadxpzhVvDYxW9N1Cj3zitm4rEI2H9cUyNbWpM23WfvZlMZpPrXxFNKm5bHqu8x/Q8PaxmO163g+nxZ5Olf89raOj7/Xpm2mitn877g/xssfv4yn33oaT771JBtac3GwtlUReu74ufC2/G0s+i0D1ZXwc+1+1Yru2v0ueJb1y8f/3cnutRE+T4fysLUSMm+OZesd5cezv8V6s8X5iwlkAQDgK08YCwAA78A//+fP4nvfex7/5r/52/E3/+Y348mT47BmbDes91oGnUOYNIRKfRVrO6332nUxrRN7WjM2zaYVzteHzachbts+GTutHXtqf7r2NGVxHr7mwedj1o39/b96Gf/Lf/zjeN3Faa3Y3SngWoSvtbBz7b5FSFpOTZwHsYsq24eEsE0xnrUxRDGGWvtRmp87Nz1pk07jrFW+zo7ngWvW9pJ1Y9c+j+3W2uTvLq9sncLU6kPNn2EKadsU0c2PTYF0O7yLPCRus2fomtkasdMY2jQFtpFiqpieKqezCtkmmr4idghUm9Qfa3dtpEjR3XbRNm20hzY++7PP4h//D/5x/M5/6Xfi7/13/970POUavmeda57K3WWV5WoIWwSLD6qILfdr11TOL4LQ8ZraWrF5oFlO/VuGmdl1swrayv70ntaedWhbjrsMffOQtXbPRVVtMd7Fd5BrinPF+AEAgK8mYSwAALwD/XqxXdzdHWO/P8bh0EXbNosK2dPffG3XiP7/KN9188rY/G+seI04VcRG5NWSzXCuGapwx+0YOKbZWrDjGrF5wJsnBQ9dNzaliLtjFz9/dYzYNdHetouK1DKEnZ2rqN5/rXK1DGLz48XnqV2lv2oQWwSJi/PnlJntWNlZhJuz0HHYX1Sxjk3KCtVYBrKzY3kQ1Cz7nq3Zmorr87Axze89VrZO2yimK05FYFuuR1v0N45vFh7nv6NUGVf+G8rHlK8tm7XLp7HO15KdqmOHStiU0qxKNh1TvPnFm3j+l8/j53/48/jgNz6I9//a+++uurEWwlaOrwaxRZvqWqaVbXV63jNjWz1e2T+3VuzmP0644N3WpgSuTte81m/lc3VK5MrnxZTE58ab/e4PLw9xfHV8d78fAADgC0kYCwAA79Dr18d4/nwf7713EymVa8fGtL5rnxO0kVIXTdNOla19VWs7hbFt2/+Na8tGNJW1Yk8Vs/lfWRFbWzu2ti0/bx2LGJ/l9Lm9aSLtmsUUr7MgLLJALAs3q2u8DvuzsURxrhKy5efK4DUPbKf7xfLY6dnX0uL64U1jbl4+R4pF6Dm1S0WoOJyfgvXseG0t2bXK17HvaZrgLCidXZMFreO1teC3vN+sArbYn/rJqmrLY/n3Mu03zVQd23RDFWxZIdtm0x+P1bXjO43hfDTzNWRTnILX1EzryKZdii66aG/b6Jou2q6Nn/0nP4uf/Sc/i3/pv/Uvxd/5r/+d6js4azVD3QgRt0LYMmCNZZh46fS9ZbvF2qu1+5Sh64VrxeZ/i/Vja6FxrV3+DlauW9wva19WzC7e85nx5n3Mqm2beV+z13xM8fIvXsbh9UEYCwAAX3HCWAAAeEdSivjxj19F16X44IOb2O2aOBy6aJpxG3E8NrNK2Yhx+uEYgtgxdF2Go+thav9/8S9D2FP1bF/h1we8zaz/sSLxFOyO7ce+TynB1myaz++O8Z/+6FX885+/iahNRxx9qFauFbuYQjhO7U8PP/9cTmk8C2DLMLXSbxms1qYpPnXRbI/nMfLr0/z4OFXuJZWsq5Wlw7nZurGRhatlv1EJYdP4G8kC1/L7r9xr6qf2vGm5v3ielI0zb5uHssVat7UK2Xzt2PGaWhVs/htKTV8FOwa5+bEmzf9RQepSpEOK1KV3EqSdXYu1zF3Xgti1vsqAtewrrbRLZ8aWYnGfRbtKODo/vf4Cx7GsjX1xjxTz4HjjmWsVxYuwei1IjWJ643IcufL3n7WtVfQCAABfPcJYAAB4h/q1Y1/Eb/zGB/HkSRtPn+6GtWP7/4t8256SuKaJ2O2aLCQdz4//h/42q6KthbCn7VhFm4eq5V9+fKu/rc9rfvTZffyv/oOfxOtjivZ2d6qIbU5/ZTi78JCQcyWI3aqIrVbH5vfNQuNLAtiHTOFcmlXOTQdP95pC2cpapLMq2TzE3ApkZzc/3WM2NXB+jzEQLUPP4cB4bXW64qhMU9xkFbB5KDx2X645m4evxfH8+54FyMV6s2tTEEcTi8rYaY3ZFKcq2d3wzweybZva6NquH/RNnMZQeX/zV76a6q1bC07X2qwFp5WAda2/svK6DDMX68TmbfO1W1fWkJ21zQLU/PpF9WstIK1dF8X9y2fI/1b6GtuvVeDWKmwXVbXFO16zOTUzAADwlSKMBQCAdyylFG/eHOLVq0O8917//8m93/cBzhjGnqpSI5omTdMQ9/tdpDQmamPa1kzX5tMPjwFrPq1xLYitV9b295iHsc00jtFW5vhq38W/9yfP4i8/u499iohhmtdZ8Fr+RWX/EllAVwtip34jO1/5PLt/2Xcsj8+G8BYBbK2fWaA1dl0LZccgMp3azSpfzwWyeYiaV8vmYeoYzkbMr8+O1ypzV6crzp8jD4Xze+dhbTTzCtfsHSzG3JzGXA1sxz6KILZWGZv/Y4FFu/EfFQzTFo8h7XiPj//g4+j2Xfzmf+E34xt//RvZoz8yaFvLbC8NYfNz0+teBrG1NWKrgW0ZoNbGWwSus1A2C0JrVaqL91QLNGuha3mf2rTF5TbmQetsf+OZFqFwGehmz701RfFpbe9YvAcAAOCrTRgLAADvWEoRb94c49WrQ3z00TGaJuLJk3aohG2jbVP068P2C1yeAto0hatjKBtxmjK43J6rkF3+ncLXc9Mdj8Y+11LTl3fH+L/901/ET14e4vbD276KsJn/TX3F+JzNbL8WhC7C01wWrs4C17y/Sypi8/7GkDc7NmtSC2Efm8sWAc10uKyWLcPMPJDNj18QyM6GXQSjeUg0BZprx7Prq1MST0ObV8lO98qPpyyATfNrI2JR0buohq2Er2WFbBmwTuvNdmn6fU7TE6dsDdphWuJIcVpDdlxPdtdMz/Pxf/pxfPxPPo6PfuejWRh7sY1QbjX8LPbXqmH7zUYQO2uelvuVMHPWR3mPsl12LO+vWhVb3q927/JcMY6y3eo9K30tKl4r91rkxrV1ZoWsAABAhTAWAADeseOxiz/8w0/iO995Ev/6v/7r8dFHEbe37RCUHiMistC1jabpouv6gGe3a6Jp2ilwbduI3e4Uskb0oW1EM6usPU1zfOp7+TcGUGM/9UA3356kaiDZdRHtTRvtbTtbUzOvjs2nKF4NWc8Fm1lgWq4Z239slveL4n5l6FoLZ2dB9DK0PTfGhVo4U7abwvUimM1D2XHsKeYVpkMgG03MAtgykJ1V5eUhbmTn80Ase6+LisZqLl1MQVx7B8XzlO96Eazm0zHn39k43iyE3prSePru26Zf4zVO10/TFHenoLbphu04XXG+3UW0uza66CK6IZhtT+N6G9XwNX9/xbGLQ9j8+CMqYqfrKp9Xw9FyfOOxcvrgYqyL6tdxm1enlmOo3aMS8s6qdFOa7ZfjOzdN8ewe5bHC4r8J4S0AAHztCGMBAOAd67qIH/3oVbx8uY9/9V89xJMnbez3u2iaJm5u2mjbLto24nhsomm6qTK2m4KiU4Vsv3/qe6xwHcPV/lifBJUh6/h3CmibIZA9hXNjmz7MPU1PfLrnKbwtw6L9McXdoYvYNdHu2imUaprmFJhGzAPU2n5hdSrgMlwrgtby2nNB7FY17FpAuxjP9HF9zJtTseb9ZMfL8DQPNBcVqeP5YlsNZMcAqtbP2H80y2BwPF6EfLXwdbFmbDkdcVPvfzbGyvc0TadcVOyWQXQeNuf/EGBc4zYitqctbrP31p7ukYeyeQVtNBHdvovj3XH6RwmXWg1gI1ZD2H7zDoLYqPw2K32Xa8Pmny+enjgq150JQqvPVwaY+fVR3D8fVy34rD1fef/8HuUYKsesAwsAANQIYwEA4Eq6LsUnn9xFSimePGmj61K0Q9Az/t//u66dbU/rwvYJUts20XVN7HbNcO1YEdtv2zaibdMUpnZds5imuOvGz3llbFkl26dYywB4DHnnAdP+mOJ//09+Fn/2yV18etfNpieehbKVwHSSh6TLW8wD1jyArWzLfh4UxFaC3LXxbIXI1VOpcs0YbpeBWhHKztaVzc/lwWh+7IIpi8s1X/N+ZmvDNpXjWfvFdVGvip2mIx4rUbOK3CmkzdvEaYrhRSjb9GHoLEAd24zfc3tqkwesY7Aa3endprafljiaOAWrKfoq2bHKO2K+TdH/1lMfyEb07f/0//Sn8Vf//l/F3/vv/L346Hc/qvwQLrCW45Uh31qoeC6Eza9NRfuVwHZRETueS8u2U78rUxjXQtbNtW7LqtRI9eNZlWtZsVoGprWq1tlzluFwvu3Sop/FdV1cZLa2LAAA8JUnjAUAgCs5HlM8f34fNzdN/MqvPI22beJw6GK3a+J47IbK2BTHY/9/yd/t0nRdvz31VVvvNQ9bxzZtm7LwNWaVsWMQPFbGRuQVuHn5ZUzTHvefY7r39Gxdiu9/chd/8vGbaa3YWeBafn4HZuvELvLN4v7ZGC4JYovOqvtroer2oIv9lJ+qrAM7XpO3W6mSXYSf5wLZSt8Xq1xXnZK4di6/tgiF86A34sw9mpg/U7am7BRc522L7Wyt2/wdNafx5CFvHvSPQW/qTm2m+zYRL37wIl7/7HUcXh/OvsrJue+hDGFr15wJYqvX1vqN7NiZELfWd3WK3q22+flasLs2/sXrWPa16GN43rJtudbtIiA9d7+x7zGYPfOF5u+o23fR3XcCWQAA+JoQxgIAwJW8eXOM//g//nn82q+9H9/4xpM4HG6GStcUXbeLlE5TE/dBbIq2bYfjzfS32zXTmrH9GrNjJWxeIZuG7TgV8elY1+XbPNhtpsD2FLaeKmcjIgtgT6li0/Tr4ja3beye7PpKwaGScKyGXawNu7YtP5ea4i9rX4ZleUi2GsRWph/eWse2nF75rZV5bjrdu7Zm65Qt1gLVMUTMA6KVQDa/bjFdcaXKdfE5m9I4r5pdPt7KmrFZkLoIXscx5KFsFpCWlbJ5RezaurJNNKdK2La/11QtO1bEtjGtFZtPOTx+Tm3/jvLK2GaYkrtLfTV46vrxNTf93+y5LjXL/y4LX6e2GwHs6vqwtWNFgLmogs2Cy1qIWW1XWWe2Vrlau35rzdbymjLQTZFm7c5VvZbn86rX6a8b2nUxVchOx/K+z0jR9/Xy+y/j/tl9dPsLS2kBAIAvNWEsAABcSUoRr18f4/nzffz0p6/jO995Gu+/fxO7XRO7XRs3NymapqyI7aLrxqq7mIWlKfVpVjusY3la/zWiD1HT7LrxWLlW7Ph5HONpDdmI+Xq1TbaG7ClpSKn/i+YUwG6FrGOguRp6bhiDuLKPxfTEa/ctA7qyzcb6tBcFsZc+y1pQk4WlU3Vm3j4/f2mFbN5X7drK+TWz6t2NZ9mqkq0FwtPnmO9X17Et75OPuwh5Z+vLlmMoA+EU8wrbPNAvtnnVbNluDHkvWiu28mjV5629gguD2LU1Xt86iF2719S8+FxpsxhLeSxVztWCzuxY9V7FM82C1vI91D7Xzq28y8dMOTxWxgIAAF8PwlgAALiyTz65i3//3/9x/J2/88346KPb6LpxzdgUt7e7aJqI3a4PcsYq2H7bZtWxMa0Z22+7YYrifr9tywrZfv3Yfprivu9+m6b9Mag9fY7oA9xx5PnUxPnxPjhumuinJ25jHsqWIelGRrW1BussFItY9J+fm50vPi8C2zKILY9HcXw+4Ac9x2La3NOJap9jpewicByuWa2QrU1PnAep47XZjWfrt6as2jSKe0S9v6nt0Ge5duy0HacHboq1YdNpOuBZuzFQzUPg8V7DM05B6HjvcX+sri0C0/IvNWk+7fCwHux4blz3ONr+r4nmtGbsWAW+y7644XhEJQhec67ZVpBaa7MWwq5MAfzQILYMOvP71apgx6By7G9WUZufL46V58p1XWtVrVvVr2Xbrf1LKnLHCtnFfVdcNIU0AADwlSaMBQCAK0spYr/v4u7uGK9eHaJt+8rY3a4PMA+HPnjd7fo5Vdt2DJjm/xf8PpRos2rViMiCsylbbGKa1nickrgmr5JN6dR23s8prB3v++fP7uOnrw7xfN+dgs5+KFO/W7YC2KzRPMDMA8vy+iKUnV17aRBb9l0Oca1dbdyp3q5c33U4uNLNeuXqWiC7uT2nGM9sKuNKm3wMm1Wxw3Wz4DWl0/Nl96yNtdp32a7yO8mrVhfnm5gFw7PgtxL+19aOHf/xwdR/E5G6FD////487p/fx3f+3ndi92S3/k7WpHL3fAgbsRLE1gLAlSB2dUrj/LraV1weT/Vj1WmOZ01SdVxrz1JdK7boa9FfbcxrIXCsB7LTrR84RfHsOQSyAADwtSKMBQCAX5K7u2N88sldpJSGStaIrutDz37K4pimLO66ZrZ2bB+u9hWxY4VsHyh1w1qyY2XsqTp2rL4t7zWuIVtWw/bh77wC9jT18VD1FxH/3vc+i//gh6+ifbo7VcbmAdZ08SmMPBfQzmRh6logNjtWXJcHqpdWxF4Swl68fuxqTtvMw7C8bR5IDvuzCtFUnCumHR6fa6oMHdrn1a+L67KQdBzfIiAd+x3GMKuErdwvf9apCrYWHGfPOFbDrq0ZOxtDfjz7fsdrZ8+Qv8/iN5WHqGPAOo5tVhm70mYKZNNwrI3oDl38yf/xT+L9v/Z+/MP/4T+M93/1/dn3cy6Am4XOa8FnvrtSCbsIK8vjZTC7FcRW2iyqZ2vnxmuKsLJ2fhF25uei0ia79+yVrVTKPqQi9txfvoZstc8LPHRKYwAA4MtPGAsAAL8kz5/v43vfex6/8zsfxu1tO00XPE5N3LbNNO3wWJHab9uI6Ib27VQh2wel7bSG61jhevp8CmX76Yr7cYzbfE3avBq2ts11ERFtFpJGzMKuab/mTCY7hbpjiFq0n8Ld7MRseuLyunNBbN7XJUHsAzLlqrGb8fvdCmVTcV2R4SzC0JiHpfnYZ9ML5/0V911cX7nv7Jpmvp1dX7tHOYatZy7HXz5zra/ae8nC+zyonaZHzoLeqV2cqmbLtWOn6Y3biKY7TcHcP8qZQLVss9Fu7dxqCDvs19aGXbuuDGIXwezKsSmIzO61CGUrbWrna4HnIoiN7Hhl+uLNaYqjuN/Kc+Vrv15yj4vXis2/h/KdAAAAXwvCWAAA+CX57LN9fPbZPna7Nr75zSex2/Wp6G7XRNelWRjbdWMY2wexKbVDiNrNKmQjumlN2X4q4bFqNg3bmNaGnYez+Xqxefjap1fLUHYIJfq9qTIwD2TzIPRtwsu1tWLPrRlbhrer0ycX1ZeLcT4mhK2d38pb1kLZsk06jWERckY9eKytHzvrtlJVWwtG87VjZ1WqaRn4XqQWBteeZwxG83FVAt1ZhWzqfxtluJ0H9Yt1a/PK3crvqqyeHY83TTZNcZtOgWycjs/CyYdYC3DLvh4Swkaat18LXlPl2rWK2LzfWihba5NXj+bnyzGujacSZp5dKzbrd6tathYUn12PtsvGd6GLA1wAAOArRRgLAAC/ZD/60at48+YQf/fvfit+7dfej7aNePJkF23bxM1NM0xX3Fe83tyk6Lo2bm7SEN6O0xPXt20b0zTF/Zqx4zTFKbpunJp4HtKW0xVHzIPa0T/7+E3804/fxJ+/OiymcV1MGZy7JJCtha1R+RxZQBrzNtXpideC2Ji3L8d6NoS98JlmahlMFsrOQsgzoeVaFensXL6N4ljWblHNWo61dqy4z1ZF7hgOV9eNjdP6sYvwt9bfEDJPYWn+LEUgHU0WIJbPXQv1h89TwDv+I4BheuIxfJ1C2bY5BbHt8Eypif3Lffzx/+GP4xt/4xvxN/6rfyPa2/b0EBfmcNXAbiuAzc8/IoRdrCGbhaiLa4rzl0xTPKs4Lc4/ZHri2bgqAWl5fS14rQWx5XTFs21XtOuWn88Zr3/zszdx/+l9HF8fz18EAAB8ZQhjAQDgl+zTT+/j00/v41d/9b346KPbePJkFxERNzdtpDROUzwGoX1lbNO0kVIXEe0Qss7/ImKamrjvI2ZTF4/TFJfXna7NQ9lYbCMivv/sPn7vL1/Ezfs30d62fSXgVip5QWA5hnHVa2qfy7B2OlwJaLeUFZfZ580g9pIQ9tw9V8Kb6hS/2ec8jJxdV5muuNp3dm11LdfadU0lIC0rWYvgcHOq4/JzLO+9tlZsre0YjM6eZdyuBPuzUDjvO7t/HsrOrh0qY/Oq2Wla42HcxzfH+NHv/She/+x1/O5/5XejvWnjnM1qyUtD2OxztdI0v89GEHvumjKonfpZmaZ4Mc7yfBmMRraNWAakeVA7jKc29XMZyJbVu4tK3TIQXgmG8zbT+7hAihT7z/bx5qdvLmoPAAB8dQhjAQDgc/LHf/ws/uqvXsXf//vfjW9/+2lERNze5hWxKY7HFMdjO0xj3K8X209j3E5ryzbNaXrjPnAdPzdDCHvaRpz2xwA2Yvw8hq/58ZjOp4hob9ppeuJa4DWbNvgBpirEIQhbTFEc2ba4pgzczk1PXKuSnQWx7zqEXesrLY/NpgC+pIq1Ek4u2k2n1teOnYLJPPRdGePU/lwIW55bq47N75XfI+tvbd3YWUVxXhFbPnv2nU/TFUe21mtlSuKpz6EydjrW9veZpipusirftt9O/53EmaA1t9asFvqdC2CLNpeGsJtryFYCzqmvWhAbK8drAezGGrK1v+m6bj6+sq9FJWy3rIyd3bur9NXN73dpNWx17AAAwNeSMBYAAD4nz57t4+XLQ7x4sY/337+Jp0/HCtkuIvq1ZJumG0LSNna7btjGsCZsiqZpp8A0r4odzatmT/sRMbXLq2L7cKqskM3C2Xyd2LJCde3zhq2K1sVatOP5jb7LMLUavC4vqo+lMqbFqTPh82YQtxKmnl2TdS1Mze819lOppM3HfnFQeEn17NimFtquVcdeeI9Z3+W2bJd/HitXyymNi37H33NeDTsdG8LefO3iPABe/ITHgHYMcUuXhnJj+Ll17dsEsYuuLg9iZ2Ms2i3GUIa1w4nVMWT3mk1PPI6p9g4qIexsPGc+T9MU5/ct2pXB8up/O1vfr0AWAAC+loSxAADwOeq6iJ/85HXc3x8j4qN4773dUBnbV8Pe3LRxe5vi9jbFbtcMFbJNHI9jhey47av0druxInZcP7YpKmHLytjTNiI/dtofE4QupWh2zTyQje1AdSHFVEk4tc1Cs+meefg6faxXxS76WhtD2TbbVitiK308tPK3bL8IcLLgcjbOtFHFGtsh62pgmR9bHfCwye6/WMt1vHet39oY14LYPLSNrGJ2fO7xXURRCTuuGxvzMfZdpdkYIuJUedvE8p0087/a2rG1v7Eqtmn7v9QNv+l2uPdYPT6+n1zl/VfD940gtwxOy8+z31kZwpZhan6sDFfHvjZCyVq7ajCajWtt3dZZAFse75btqtcWAetY2bo4N1TJTpWuKfq25X2Gatjp7yFrxWYhcuoq0ykDAABfC8JYAAD4HKWU4uXLfex2TXznO4eIiHjypJ+qeLcbw8kxHG2jaVJWGRtTxWvEqdI1pYi27ROnlGKxZmzeZ23d2XId2TeHFJ/tj/Fi360/yMMyyvVryqrF2nbWpBKijufWqmIX2XG146t4SDXq1rTCj+p7KxTNw83LBne+gveB93+IRbXr2E9+Pn932T2mytVxyuTacxe/w3Gt2LXAv7xf0zTR3Xfx4gcv4umvPI2n33l6/qG23sFWCFvsLyphh88PnpY438/7GD/XAt/xc+X6RQVtEZ7m1631N+urvC7vM3+GSLNza+8hX1d2Ee5ujKUq6z+lFN2+i+PrY6SDMBYAAL6OhLEAAPA5SiniBz94He+9dxdPnrTxzW8+iYiIp0+76LoUt7dtPHmyi+Mxxc1NF7e3u2jbJm5v5xWxNzftrBK2/CvXjl2rjB3XlT1NTxzxR5/cxf/9L17E8aaN5qY9VRBGVkn4WEU14uxYxDL4albuWat6La9bprDL9rX9yMbzDlRD07KKsgwoi/3VytPyXkXQWFbVrga4KxW7i2PFNYupkWtjWzuW9T0Lose+YyWArX1/lfeSB7jTGrbNaVtWw86mJS6PD2szLypjm4hoh39k8cOX8U/+p/8kfu0f/lr8y//tf/n8fyeV9/qg8LU8lyrXXxjC1sLbsxWx+TUrbbYqYhfHulN/5fEyfK1V0U5ty8rYcb87tR2PT5WxXTaGsao1q4xd+85m0ypn59789E28+P6LSEdhLAAAfB0JYwEA4HPWdSnu77v49NP7OB5TfPjhzTBF8bwyNqU2mqYbpiKOSKmJpmmHitj++FgJO+Umwzqyfeh2qqStVcaW58Z7748pXh1StG2KXS0ofaTZtMPD5zIwXV3Hdbx/LXiNjfD0kqrY8pJ3GMTmfZ6tkH1E9emD1oEt7hXxiGrX8doz4WqtzVhNWq1Q3Qp+a8H0cGB1auK87RisVjPoYgwrv6/Z+eb0LNN7bPqA9vDmEMe74/R8q880Pe560Fc7tlWdejaIXR/E+SA2v2dx32pwnObnamNYTE+cB7ErxzefpXwHayHxsE1Rn/Z4bcrli43hsKpYAAD42hLGAgDAF8DhkOJ733sRH310G0+etPHRR7cREfHee10cDn1l7O1tG123m60dO253u3ZaL3bcHo+ndWP7NWSXlbHtWOG3qIzt06qmiTh2KdqbJppdVpH6kHxyCEVmoWZRfZgfm7WJSrvp8DLMrY5rrIptKseKdotLLwx1N61kMKsVsucym6HNZnVsVh1aVqtWpz+u3iYLObOx1q6fzq+FrimdqlHLwDe/ZqyALe9VjmsIVKsBbuU9RRPL8TX1v6lKNus3n6Z4rITNj0/rII/Xtf19213brx9bC0fPqbRbrYIdPq+tJVubmnfWXx5Opsp1lfOzqYKz/WoFbRlkjk3G6tQ8eC3D2yIcrbbbqHZdW1t2VhGbbWvVtWNV7GrYXNlfPBMAAPC1JYwFAIAviJQi7u+P8ZOfvIk3b45xc9PG8XgzVbl2Xf9ht2uHbZ8+tW1f9dp1zVAdW05THMNas80pGBvWg+2nOU5TCNt1Y2VsHsLFqVQ24rIgcgwIK5rh/xUHTx/H0KsMULNzi2tXQtiVAZxvM97r3PWX2Ag9L1nndQovyyDxGgFPrSJ1Leg9M45FkPrA8VfD4K0q3Mp9qmHtue+v+McB0zTF2bk8hJ1+f2P4HVl17rCO8+aznnkPmwHssL8Wwi6uL4/VgtdyfyuIjWW7qd/y2mIsa1P6LsLZWp95aBqntV5Xn3El6J3Wis3+NkPk2njXnkcQCwAADISxAADwBXJ318Vf/MXL+Pa3n8STJ20cDk+GoDXF06e7SCni5qaLiN0Uwo4Vsn3FbBvH46k6dqyUbZqY1pftK2PTtB2D2fo6simOXYqm7SsCFwFlLdgag9i00aasSIx6+Dodr12/ohzj6lTEv4wgtryuEswsAtkHBK3VytEyuDwTgm4GwmtjeUgIe8m1a+8nP157nq17jNs8LB3H15ymRV6EqsN1U6haC3NrlbRZn9FGNF0z/TczVgZvWf0OaofXAths/7EhbNlutXo2vyZVrhmP18LWc+vFxrJNbergMnCdzmcVsuU9qtW1XVTHMfUzfn6Isb9ynVkAAOBrRxgLAABfQK9eHeIv//JVfOc7x9jvu/jmN5/EBx+Ma8m2kVJMa8SOIexu18Rul2K3a+N47Cto2zai69ppeuLxrzZNcRnKRvTbviL3cSnkbK3MiGoV6+oUw0UlYx6QTsHtWpVrWQW5ds/atWseG8S+AxdNLXwupLxCZe3Z4HWl/UWBbUT0jzxfE3Zt6uQYpwjO989NA12rol0JXcdjeaXsNGXyOJ7s956Gf+gw3uOi97TWZMoczwSwleAzoh7M1oLYavA67uft18LXiGXAGvPjaxWqs22sB7GLa+MUlOZTCU9t86mKy6mIy8rYbv43hqllWL32/czGFhH7F/t4/aPXsX+xX7kQAAD4OhDGAgDAF9DdXRc//embSCnFbjdfy/X2tg9Mb27G6YrbaZri/m8MarshsOqiafp24xqzYzg7n6b4NF1xO06v2vSVsWUg9dhg8qIq1a1Q9UyfqxWttb5XjlX7eFdB7GNC0IeErO94PIvwswz78rZ5RW4M/Q79r62Pm68Pe+mYZm0e8L1M429iVq2ah8N5m/ntTmvGju1r0xfPwu58m5+7RBm+rvVxJoSNWAasixB2bFMEjlvrx+ahcC1wrbYpwtTVytczQewsSC3C5PJ5Z23G4HYj2D0XEj9ESimOr4/x6oevHnYhAADwlSOMBQCAL7Bnz/Zxd9fFj3/8Jp48aePv/J1vxre+9SSOx5thTdld7HZtHA5t3Nw0sdu1cXPTRds2cXPTRts2cTz2wdFul6JtYwhjm1koW5ui+Nkxxe+/2MfzocpwbRrhmllFbBmaFdO7XhKQltde1Dbq4e+56WKv7pKpgt9R5eql96+2iQvHsFZxW7vPyr0vqvzd6nNrPM3p2Ooastnvarbma1EJu2if/Y7LMDev3k5dqob8q9WytcN5eFoLxWsBbHb8MVMUlyFsef5cRew0te+FQWyk6KtXs/tvth+qXqfq19r0xJVz5fHpLy0/T+OpfB+1tWoX4wQAAL72hLEAAPAFdn/fxf19nwa0bcSv/dr7cXPTT0l8e5uGNWGH4CP10xan1MZuFxHRDevKttG2fSLadc0QyPZBwTgN8SmQjWkd2Zf7Lv781TG6myZ2T3eLsKpm7HPVamFscwq2LvGAQPZB47hmVewXSHWa4CsEwNM0vg8NWM+0uXia43P3Wgt31/6BQKVitpyyeDZlchORjikOrw/R3rbR3rbLfreePZW7Dw9hZ6HhY4PYvP9aKJtXn9ZC340gdhG6Zvcpg+C1oLNWhTt+vmTMs78oxla844VU+Zwiun0X6SiMBQAAhLEAAPCl0XURf/zHz+L993fxL/6L34oPPriJ/b6L29s2nj7t4uamjdvbdgpr+8rYmCpkd7uxQnZcOzZmFbLlGrKHY4pm2l9Jt8ogolZRmVfBFtbWi51V4dbOVT5XOq9vH+KXGMRWp/LNx1ELDS/Mes6Fl+X6qxcFteeqYB+iVrlansunQa7dqzn9HvIq29mxteep/EamitehQjY/Pq4HO52r/OOAJpqINuLTP/40/uB/8QfxG//534jf+ke/dfY9ra4LWzlWDV+Hz7UAdu2azRC2CFgXbYsAtdp+JYitnuvm/eXHV4/l68KOIWy+fmxtDdgu6hWx3am/auhbCV/z8DilFPuX+3j2z59Fd7dWVgsAAHydCGMBAOBL5PXrYxwOXXz22T66Lg1TFZ8qXCNiWj82Ylxrdq1Ctg9fT5WxKVI6Vch2XRpKZS8YWBnEPnDq4HfR9kvlmtMQ/xKcrUytX7Qd3r5l4HzR/fPtueOV66dpiGeHs2mKU7MIbw+vD3H//D7uP7ufPcvZ9WA3jq+GsPm5Wji7Fsym9XZrQexiDCmW96yErYv2ZTgbMQs3y34W/W3cZ1YZW9ynVn27OL+h+vsf+zmkOLw8qIwFAAAiQhgLAABfOvt9Gipkb+Jv/a2P4v33b+Ib37iN29tdPH16jNvbXdzcNPHkSRtt28btbTOtITuvjG2mNWTn68f2n/cRl00dvBK+TuvG5ueKdTanY1G0qXlsu63zZSXkY5SXfc3yl0cFs5d1vP0u16pp16pey8vHCtdUuX6lintaD7asim3WpylumiaadqjO3QhRa6qBYK0y8/Rhea4SzpbHqvsrgWw1wMzbrbWpbKvnuvX9vAq21s90vljzdap8XVs7Nq+IPab5GKpfzPJdLcYEAAAwEMYCAMCX0H6fom2P8ezZPvb7Lpom4unTLiJuhsrYfm3Kfj3ZdqiMjWGbh7FjIJuyaYr7StljRF8ZG3H5dL1lMPuQYPQa57muz7nCt1apuji/NbVx3jZb/zU7uFoRu9LJdJ8plM0rZTe62KzELE89JIQtzp8LXsvton0esmb3n1WkbgSxqxWx2b1mFbFFf+X9FtWv+Tu54L61v6ra4eJY6lLsn+1j/3wvkAUAACbCWAAA+JK6u+viz//8Rbz//i6++90n8Y1vPIlf+ZUn8d57N/HkSRtPn+6mdWR3uyZub8e1Y/u1ZMftPJg9Vcju2ybiyW4ReI7Tsc72+1LAPnxK6xWxl1hcG29RtXpttWG9q4DySz6V8apLgtGt9XPLPh7ynppYVsLOTmfnysrb/Dech7Tj+rHDfwcpTvuzSvBYCVzPjT0PGGvXlAFoebwWyqaifdm2FsLmoWa2/84qY8dp1rcqY/Nz3emavPp1vGa2xmy+Lmx+bd42XzN2K4QeP+fvdPg73h/j2R89i8Prw1fzv10AAOBRhLEAAPAlllLEft/FixeHOBz6gPZb37qNDz+8mdaU7bpd7HbNtDbszU2a7a+FsYebdjtAHcLX8fM0ResjNZeuT/tFkr+D/Ni76pvLXDqF9drlzbwqdnPq5Uv6zkLbWd8XBK/9ZiN8LfYfFMLGMmRcDV7H/TJYLatU8z7K4LIIXrcqVKf7boW35ZiGa6rTFRf707F8muOuMraa8v0WbVOkZZ8AAAADYSwAAHzJ7fcpPvlkH8Mqr/Gbv/lefOc7T+Ojj7p48mQXh0MXu10bT54sK2TH9WPzdWSnytgUsbIY7HQ4paFKtlmea04fpv23CWsf6pd2r1ogy+dvq2I2r3otpiauTkm8tobs8A8Qpm3Mt+M0xZuVsaOtAK8MabfC2coasZdUwq7ul6Ftea4MayttLl4rduOaaoVsN++vDFzzStfpWHZ89nmjKnb1aymC5qlSFwAAICOMBQCAr5jnzw9xOKT45JP7uL1t49d+7b14+nQX7713Ezc3zTBtcRs3N13sdqdQtmn6ULbbNfHJB7fxZtdcXOA1Tl2cmnk4+1aVsvUE7GJTIPbL8NAMRmbzOO9i6uaHVLbm98x+07N1YPPz+Ta//oI1Y2vnLglfI4qQNw9Py+sfEsKO+7WwNT9XmaZ4beri1SC2tu1O962tD1t+LgPXMiRdTE+c74/Vsiuq6+Rmz5e6FK9++Cr2L/bR7bvVfgAAgK8nYSwAAHzFvHhxiBcvDhERsds18eRJO5u2+OnTXex2XdzctHFz00TbpmHbh7H3N238VdvEsW3jJlayq1o4pDr0rTy4avKLEOh+EcZwqUf8PhdVsmt9jJW2w1q3+Zqxi8rxzGLt0TVb4Wt5Pg9Pi/NldWx1yuKNNouq17zvypTCF1XEPnC71d/seFevjJ0qWLt632eVIXREpGOK1z9+HffP7i/oAAAA+LoRxgIAwFdY16X48Y9fx9Onu/jud5/Gkyd9GHt7209b3Aey7RTG3ty0cXjS9hfnwVMqtuWxtw1iL73+XYe+WX9jiHbV+31OVtc/Hc9vBcHv2hc5wK1VxFbaTGvKjtWyWWhbm6Y4/40tnHkfZ6/JqzVrAWylavZR0xOP5/PAdiWsXUxhPBSLTlMRd6navloRm1e7dsWxbLriWZt8Pw9m0/p29XvIQtq1qtiU0tn/xgAAgK8vYSwAAHyFpdRPW/zmzTHee6+N/b6Nw6FfS7brdnFzk+LmJsXtbR/GHo8puhiyh7UQMsW0zuZsGuAxi2iv9zzvxOcdsNayta1Kx1+yS0KlvM2XOoR64LTHUwib7zd9kDcLaNPsoojoqyePd8dob9po2uUP8EGV0WU4+MgQtlYJuzh/wbTEU9/p1C6/3+yaMWjNA9dyG8vjW1Wym/tlMJuHuikW67wugukigF08zzFFOmyEuQAAwNeeMBYAAL4GDocUP/3pXbRtRNs28dFHN/Gd7zyN29u+Kvbmpo227deTjfdv6rlCGfhkwcQYSj16jdZKQProNV/fImy9enXsYwKbc9c8tM9UBEyX9FM7VwkAr+4d3acMVd+qr3Iq4/z3MlTRRhPx8R98HM/+9Fn89r/x2/Erf/dXLut8K3Qt9lenJi4D2NqxPJQtw9Xi81YIWwas58LU1YC0rIgdQ9MsXM3Xf51VynYxr47NtmN4mve3+d4rgXYZ+r74ixdx9/O7OLw8rHQGAAB83QljAQDgayCliPv7btpv2ybef/8Q+30fxu527XBsF+1Nu16ll8rdLDB9l6HlpR5yz89jfO/Iahh3vRt+pb2zat6m3B3+UUJarjV7/+w+3vz8Texf7msDWh/bRhC+CGDzcytBYq0Sdmua4tUpi2vtxj5WwtezgWws92v9ldfVKmMXlbor41l9Z/m7K4Pm7Pjx1TH2n1W+UwAAgIEwFgAAvoZevuynLu6LQJtomj6g/et//YN4f9dGpIi2OYWsZbBTTk+colJR+g5VK1bPXhSnKWNnw+3DsulYeX6tOjbi8WHuRvb3NlMUb06hWvaXzhxbdj7r/63Xla3df63pL3MN2wstqmmL6tdpzdiUVYk3wztsIpq26acnHqsyt1T+0UPt+Ozrr4Wv+fFLAtlam+Jz2XZaB7YMSiNO679m2+malUA2r4Cdtc0rYsu1YbOq17xCdlortvwrw9q172B6dfVxjvcDAADYIowFAICvoZT6qYuHvYiIaNs+pE3vHeL9Wr6wFgS9owz2wdMdFyHqF9ZDgtjKtVvrgj72vg8aw7k+N8ZVrdy8tO+HZFwP+b0+9h5nNE3Tv8t8zdiV9WM3fxOVgH1tfyvIr4Wwi2vWgtjKGq+LtuVvMw9iyxAz+x1MgWYl4Mz7yfutVsTGmbViiwrZMgBefZf52Ffee6SI45tjHF4fott3AQAAsEUYCwAARERE10X88Iev4+nrLv72oYs2naq+mpRNRTyEoNMUxdcoDBuD1jxwrYSvszFUgtnFurPl2Mv7jbtrlbi1YG3rGbZOr02Jek4RdF2kCOTOtru429MFtWllL+6/FoBt3/h0z4eGrI/8vVbH1sTy91n8ZptmqJBt0rS+7EO/+7PV07XQvvY7KQPZVFy/FsiufF6EqTE/VgtbF9uySrZSETtu8zZlFe1iP/urrS9bf9GV910Gw0Ofr3/8Ol58/8X5KmcAAOBrTxgLAABMUorouiJ2qgR5KaUpoF1Usq4Eo+9sjLE9zfDKRcs2Z647OzVyGcw+IJO5qBo1D9guaDvrtwzZZk2LNit9XdzmIeN6aF9fgpxrmqI4C2LHqYrz30XTDMfWgurBpes1VwPY7PMirF/5jZRVsWWbtZB9c93VC4PY1b9YXl8GsdHF4ty032X9dzG/dvY/ZMXzlu97fMe1MRz7PwAAgHOEsQAAwLpaAJSFlItgdNF8HtQuKlLX7jmEWKnZ7n9x6Ti2so/1AW5X3l66Vu3bBrGV93y2/yvnQJesU7p53fkbXHbNRtD8oPut3Hv1+KXdFlWw+VTF47TbYwXt9N/NWkXvyngWz/iY8LV2LA8+x+srIW31c7FfWzN2qhrN1459SIVsEb5OgWi2HmweuFbXkC3Wit0KnqdtcW72bF2KdEgqYgEAgIsJYwEAgLPyMGKaFnjMIi6crrcaxF7ax0b7c1MVV/uoTVWcnZsdujSQveTWD1if9WzVY3Fss4/5wfqxtNI+Nsb9wDxq7H/a1qbffdvgOX81lf5nUyu/TaKdXTqFrlkgO6uELa+rLDP6oO8qv2YlQN6skr4whC3Pzz6Xa8cWxx89VXEeuhZtZ0FspVo2r4jNj62tE1t7t9Xpnsf7dyn2L/bx5qdv4v6z+zOdAQAA9ISxAADAUh5c1MKkKELKSttZ2HlpUFq79tw418LT8Vy5za57SCAbEY8OZR80Te9GKNqffmBgutHvZsi6emoZEtf6WX2Gt8g/z/W9Nd3sRmfrp4r+yvvmUxRPUxPnv7eYrxk7/uYunaZ6cd+V/xYXY70klC3+m31QCDtel+1PlaIboesscI20WSk7ncuqXstQtqyWnULYcs3YfNwb77H2zGVV7P75Pl58/0UAAABcShgLAACsGoOIJmXVsClOU/8+JFjLQrGUhuvzcDSGcLRp5teM0w3H5dMjL2+9UT07PkNTHKv0/ZBQ9qGB29n92ufaLcpz567Lg6gta6Hm2hjHQ2UYuNJu7fylVcAXP0ft0pUpec/es6m0yYP/PJQdg9syGLzkPsW5akVx9rlWMbsawK7tF8HraghbqYCdhatF6FoGr1vTE0/haq0CNq+QPWbna0Fs5Te0OT1xEcSmlOLw8hAvvv8iDi8Pq18TAABAjTAWAABYKoO3Wkg4BqRDyJSHoymlU4C7kVvOro9KCLs1vjIIu7R9cWy1CndjDA+Zbnh1PKunKuHlmWsvrX68aFyXBpFr40qx7CcqAWHt2jPHVqdu3rj+IVW05TTKi/4q98qrY8d209qxfYP5Xzn+2Di2NtbKf4/V6XWjeO+XhLDjfqrsF+fe1fTE1ZC20rZaEZtdW4a1UwXuBb/j2fvLv+cUkY4pDq8P8erHr6pTTAMAAGwRxgIAAAtp+H+10KXPnSrTAA/XnatYXUxfHFGvSq30n5/P+5nuO/S1mKo4v28Z5DbL62f3Ko+9jTNh5MXrxObHL5wiuOx7a9rW2bqqWbvqb2LrvpUweLFe7Mo7KdcyrQaKZ97noq/yXBZiblbUVsZfm/o6Xzs2oghl4/TfzTSl7wVjL8+tVgpvhK8Ry/ddVrqWxxaVsPl3XwlnV0PYmIeus3O1aYqz0HVWOZsfP1cRe8y+09o72gify6rd45tjPPujZ3F8fRTEAgAAjyKMBQAAlrLgtbofRYB5rq+3GkoWuqaVaYzL+9WGlWI+vfJiqdiNdWrX+nyIS4PYx/Rx7twlrtn3Wl+VcLEaLj+kErkSvm22eei1uWwa4vHzVOk9BrHNvP1miFzcezXcrrVbGfslVdNbQe1iLdkiaN0MYov//diqlB0D6q1wd6sidgq5i/+dWryr2vTE08e0aJMOKe6f3Ud3J4kFAAAeRxgLAADMZcHrYs3Y4XxeATsLZcdzWQI1Bj+zNWbHds3pusm4RmyTVdnmgVc+zqwqcQpax0OV6tjV8HboezbWtXb5OLc8JnB7YNi2ufZoLXyrBVJFILqoSM37rYxnEbqtPdOZoLO6rue5MDK7dlatWfZ17n3lz1t8XguC87B1qngdq2Lz3+zYtskCvq3K2HxcxTOu/T4Wz1Y7Xvs9ZMcX1a7juRTrwWv2W3nQNMXlOrErlbDjdlEhO34+nipkp0rZ2rtae93Fs+V/U7/HynsHAAB4AGEsAACwME1T3O+cjo/hbKU6dVa1mgcbZ0LLRXhbqX4tg9bVgHXtftnx6nTF9YGdP/9YW6Flrc25YOlM0HbxWIsQdjFF8blr8z62xnnmvlttq++jlrGeq6Z9wPc3W0P13HXFPx5oUnNxqNyf2vhNVI49JIStHV+djjiK5873s+uqFaxbQeyZbXlsq//VKtwVq/8IoXbPLuLw8hD7l3thLAAA8FaEsQAAwFKKfn3EIgSZKmSzQGYRkpYhZnZsMRVwFlrVztVC2LyitgyAp2raqXl/g1mFbN5HGeRmYxmPTfd/h9MUX2X62Vq/lWOLMG68x6VBaRnObd17a13YSrg5BXzZ+1+0y7abla7FfVfXQy2vLdtXh376XU3ttv5xQP4TzqbkPWez8jnb31xreCt8za+vfa9F0LkIRos2Z8PYbrhXuVZsvl+phJ2Oj1WxYxVtXhFbew8b/71sVfWmLkV338WzP34W++f7qeIWAADgMYSxAADAUhHKVEPYcQrhrP2ym2K912w6477jyvW1qYjL9tm52rTIq2u/1saWh2f5PWvtyjFc4iEhbHbsoiC21lctZCvvVTuWj28t6Fwb+9YzlseqQ98+f7Gt0Hfr/Nqxreca14htmsV3Na4buzbGi9fAXRnb6vuq/XYuCWHLcdXC10p4mbd5dFVsOT1xWYVcnB/bjKHt2u9w9spqVcL5u8qfo0uxf7aPw6tDHO+OglgAAOCtCWMBAICF2fSgXURq5wHJGDaNIW25vuuskrYSXq4FpmOf0/kxiC1C18WUyBGztuV2bf3YqfJ2LRzOpjbOBnlR2Js/U+Xg5rGLg9hzwetaILd1n61wrwwCy3tnf9XwL5/aNrK+avdd3CZVn6MMDGeBciW0rAXO1fVSY/lci/CvNiVxtm5sXjk7hrZjAFnz0N/K1jqyq+Fr7djKd/bOwtihEnixVmy+X1kztjw+VcWO1bN5Rey5/14q72Xx/XZ9ny++/yLefPym/u4BAAAeSBgLAAAs5cFaRD3oGAKn/Nhi2uK8r2n3FICO7RfTEW+NK4r7jkFtHgZX+tsKZPsuV6pkIxaB8tn1U8+Nf+P4RWvE5sfL0DHv58x1+bGz7fP9Wh8r11YDw7Vx1K5fWfu0/F1V+47Kc+XhYszbzULitb7X1oEdzk1B7NhmDPRr0ySfU3uOjd9GLah/q4rY/PwF4WtEFrBGWk5HXASvZSA7W7e1CGVn0xNnVbFb39XZitg8hE0p7j+5j/tn93F4dRDEAgAA74wwFgAAWBiDkepasWPYmbJAdagAnLZZ+0XYGVkfp9LTk6KyNV8HNr+mul5sPl1xJXxdC2RnfdcC2DKYechUxWfCxtPHSqiUn69VxI7X5ccqYVvt+rPVhGVold9rZTxbIXW1Krb2vLW+Ks+wFrIunqkSNi7GlV9XfF67dqp6bYZK8bECtjZFcf5bS8W7WxnX1vnN61e+27NTF+dtys+1NWTHNl3WVyq247lKRexD1oydhbFdmge+W7/h2rNmzzvefxzD65+9jpd/8XLtWwAAAHgUYSwAADA3BhVdzAKLPMCYwtFIi5B1tb9agDkEKuMUrmOolYe7s6A177+ojp2FqGllGzEPZIt+qsHxyrjfyiJLWwkmx48rQeziva9sF8FUEcytrhVbCTZXx1MEXNXfROXYOJZFSFsei5V+xkAta7OYTjh/znK8tX7LMZbhZ/nbink4u/gtRsRHv/1RfPDrH8R7331vdZri1fvVxpc/U2Xsa0Hlouo1a1cG07WK2HMh7CKQTbE5PXEeuq6GsV2l3crzzd5f5bsux5m6viL29Y9fx/2z+/p7BwAAeAvCWAAAYCYPx6bK2DGcLAK3qQK2CDxnbZpTJeusr4hFdersWMQ8OM3Wb52mOY6sOvb0AMuq2rVAdvnwi/VpF2N9rEq+Vg3Siv2tcLQW4p6dQrl2ejX7y8K4rdDv3L3W7lkGouW9Ku22qlwXfayEjmshXn6/2Xqi+bk8gC2rYGv/HQze+9X34tv/8rfnz7A2hq1nWhtzrD/j1rqp0/7KOz63buxmCPuQULbsr1hDdmy/FrSvPevsN1r871d0EemYYv98Hy9/oCIWAAC4DmEsAACwMAtBhqlBp6Bp+JtNRTwEs9O2rDCtBIa1UHZc+3U6v1blml+TTm2naWPL9WO3AtkybM2DrWY81Sye4bFWA7XKsdUK1LGfWjBatlubina8phZu1kLIyrHqtLbls9bGtfLsswD0kvcTaR4kXvA+ZuMq3k31+vHzVnVsZWxTs6HqO1If/D1KZeyr58+Fkfmx7JmrVbBj28q5dxXClqFrdVrisV3lNz97DWshcyzHm7oU+8/28fzPnvdrxAIAAFyJMBYAAFiYhSmxHqpGxCk4za6drTFbrL06Bq4RMU0/XF3LNYrrslB1FubWpiteFMteUCE7PltlrdhZuPxIDwlhx7GtnX9UEJuPYeueedvadWeeoRqOFuMZ+1uEorU+18Ze+T1uvuOxTVlZmebjmQLe4v4zl1THbjzLJS79vVxcOb32mygDy2ysj14rNgtaZ9dngeosiM2umf0jkLJidu1dbfyjhfx5prZdRHffxeHVId58/OZB3wsAAMBDCWMBAICFdDxVpkUT/eeIU9VpFrrk+2PIugg/0jLInLWvVb6O7aK+duzseMzD3DzwnfopK2SH+06BcxnKjuPKji1Ct82XeOZ8pc3m9LVZaPiY0G22rbRZBFpl+5XArjruKALX2nW1cLJyvDo1bszXiM2vrQWK5TS803iyd7dokwePs689C1+L39L0DwvKgDayoPFC1fCx8r7OTh9d+12kol15rrJfe08XV8d28/21dWLzStiymnbtHdSC2HMVsYdXh/j0n30ax9fHy/47BQAAeAvCWAAAYC4LxGaBa8yPz8LVMrhbW5s1b7cyNfFULRune2xOKbwy7fAU3M4eLQtk164v38Va6Po2IU4tZ9sKYuNM6LY2lpXQbau/2bnyc6ocz++xURU7G0fRbxmUTveqjKe8Z+3aze+mbF+7di3YjJj+QUJqNt770K7sd6u6czGGjeNnv7vKu98KYWdjq30uAtla6FoNYlemJ14NYsvg/Mx3VZtiu3zO2di6iOOrYxxeHGL/fB/pIIkFAACuTxgLAAAspGOK7thF27X9mpdDkDF+LteLjYhToDqsHTuFuEWQk1cPzsKVLCCdgtkxkM0qZ/MgeKp2jexcVuE6Oz9235zGsVYlG7FSKVuO9aKXuXHqIdWP546XgdSs6UoQl7L25ecy0MrvWwvoyvtFVMdW9juburgILBdryBZBYd6uHFMZ6s2mvC2efxH8Fe3z38j4O5wdK5+x0i6l9PmuGVt8F2vh63Su8r4vroQd2wyVwIvAdWvN2GNaPmP5+6r8BsrvtQyOU5eiu+/ik3/6SRxeHgSxAADAL40wFgAAWJjWexxCjbWpiKf9LAgt15CtBXVTmBpZ6DqGufnasWvbrO986uJZWNsU5/Px5FMZV6pkp3cQsayWrTzTQ61WSFZCtrWq0LWK2Or0xGUoWgvvqsNJ83a1pmWAV469cs9qmJg9a21a4c17roSTtWrjxVq4aT72lCpTIK8ZfmO1aYmrY76w27Nr3659fw8MZTdD2CLMLNs8uCK27L8MYsfPa7+Z2vOuPOti7F3E/rN9HF4d4vjmGN2+W/QBAABwLcJYAABgLkV0hy66Y3cKSbrUT8/aNZHaU3CyCGnHwCn7yytiy2BoVrVahqJ5uDpW58Y8+FpdM7YMZCMLZPNqxbUq2Ww8tfCnGtBuvdKt6WnPBbCVEHOz0nHt2Mp10+eVoHIW2o19roWdxfmyXVmZOtvPxlEMehn+leOMU5tawFibunYWIA791KbInaq8x9/gWgA7Hs9+q/kzTKHjGY/+rZTvfOs3ku/n/03WqmDzduV7K7+XtVB2q0K2Nj3xuXdS/O/I4hmKbTqm+OxPP4u7n99V+wcAALgmYSwAADDT7bt48ecv4ul3nsa3/oVvRdPNpySurh+bsrVds2mKx3AqD43KKtUxSB0D1NnasakISYuq2PzYNEVximUgO5wf1/ssg99FlWyl/9xmYHaJtcvzcK1sVwtAa/2kjW0tnCtDzbLt2rFKADbrIg9gV55ls+/x95WdKIPXWXBa66s8v/Hey3OrlcCjMrw/JwslH2Tt+6md3/q91PYrxy4KYSP6EDXSfHtJhWw6hbLl+bNBbPF8lwSx95/cx/75Po6vj4JYAADgcyGMBQAAZo53x/j57/88PvjND+Ibf/Mb0eyWa8bmgcesOrZcUzbiFLJkVaqRYhaUzkKSfO3YIZDNpyLO15FdVNfG6T7l+rKzaYvT/FhEzKtki3Es+n+orRDoXYVttWN5UBVp+7qVtovANg9JywAzO1+9fxbm1SpTy/3FNMIbgd1iquGyKjht9Jf9VQPqsuo1r45t+jbj73TxTvIKzYeGsbX3Wx7Pv8ZLfwsPmZ44v6Z4d2tVsheHsF0xttpzVJ63rKSuTak83uvVj17Fq796tXy3AAAAvyTCWAAAoGqaTnSYSnQKN1MzrSebByCLAHbYThWxlfOzatimWDu2SD2nqYiz6yJiVkE7Bb1lhWyxDu1ibdp8TM0p6FkEs/mzvY0y7Kv1XbYp323Uw7fqd3CmOnJRfVoLPbNjs2mCN6b2XYyn8gy1kLUavtaCw7J6dauf8V1k77MMfmuB49t68o0n8d533oun33761mHsdPhctWh+PA8rx/1rhLFblbEr0xSv/pYf+mzd/DlSl+Luk7u4+/gu9s/29ZcIAADwSyKMBQAAVuVrOkaKxRTEY7VhuXbsVCGYimmKs4BzFrw2WVCbVbZGiu3pistrKtdXA9mI+bTFK33m4c8sHH6L6tjNALbWtgwbx4+V6X83K2JX2izWFq2FmTF/F7MQL4rzlXuthsZF36shaBEozu5bBImzMHk8VguMa/dcefZVF0xVfPvhbXzjP/eNvs/HTFMclXvUvpPs3KPXiy3PZX2drYg9F8YO24tC2Ac+02zq5NSvEXv/7D5efP9FvW8AAIBfImEsAABQN4Ynw1/TDNMFd82ySrY97c+qZCshV0TUpw+OoUo2ZdsxyG2WFbN5iJtiHqxOUw4XFbL97Zb3nYWy2bnZmJs8QXq793ru+EUhbH78IQFcuX8ukMs/l/cpr1sL6vJzWX9lcLp45vL6MpCttC/fQd6+Wvla/C36LcL9aariS6RTODjr74Lrzh1/yLTVi3edt0vzz7Xv6aLvdSWMrVXCnq2CzZ/nzO96Ng30McX+s328+MsXcXh5WHmJAAAAv1zCWAAAYFVeyZZv87B1MQ3xSriVB6d5aJpXx07VspXwtb9JnI6NfTVjqWucrZCNiHmVbNZuWvszinPTy8g+P7Qydiu7KwO2sn1+fitoW3S7ctOV0G6zQrEWjJXj3Lpndi6fGrjWfPZ7K/vNQ7niN1ZOP7wIeivPNRtLNqaHVMWO02yvVskOoWS/zHFzvt+1Zy76nD6uTFm8WiW9Fcjmx4v/fmf/GxAr4WsZypbTFF8SwuZjvWT86fS/U92+i8PLQ7z5yZtKpwAAAJ8PYSwAAFA1VpqlQ4q0G8KmZgg+mnQKmLohWG2L8Gv4m6YwLgKpxfqwq1lgtq5sXhW78jkiVveHnVOVbLO87xQCldWyw7Gh0eOs3avsr2x3LoRN83MProgtgsypbWV/EZTWpgDeqDwtA9VLKmirfQ/nF9Nmb+zX7jdNxd0V94qYfgPTtNuPqI6dKmPzaa8f4tKwMvu8Wk26Emw+JJStvr84vb9qlezWs5TjrjzTVggbKaI79iHsZ3/yWRzvjis3AQAA+HwIYwEAgLoh7BgDranyNSrhXVqpjI1YBCsRcZqmOAu9pumJm6w6tihBzac3ns4PYc1UIZvf68y6s1OVbN4+f/5IpwC5fJbRWpXsRu52adVjxHqYtRrErt145fsog66pTRH41da6nYV4lftOlaZ5OFiOIbJwLYpnLQO4cszl863co7buaVXtHUVW/fpQWZC5WJv43HXTx40wcyN8jZi/s8V7e0wIGzELrVcrYsuA/cxzVp+x8r3nY0spxfHu2P+DkWOKw6tD7J/v51NCAwAAfAEIYwEAgLoUcbw/RrNror1p++rAJiIdhymFh4q4qfK1Vg05rCcbXUTTLiti+6wzWyc2O5dXzV5aFbtVETs7loWyeRBUhr+zdWVLl1bJPuL8ajVhEZDm24vXjM3DuDh9Z4u2K+cW33PUz88C1pU+Llm7dapujaiGhLM2K/vV/lLM/rHB7O8hwevW9MRpWHP5kOZrDj9GcfnZ38jGb2Gr+rkWys7eba0SNnuXq69uNtyVsa+MfzG+rq+GffZHz2L/bB/TtMmCWAAA4AtIGAsAAFR1+y7efPwmnn7raeze2/WBaXcKXsug5lxl7NSurHaNomowRTXgyqtfF+vOlhWyQx9T5WvW5zjlbK0idjZ9cTb2ajXj2+Y+lesXU9/WQrbKtZcEseV3Uq2IjWXb6hTGURlLLVxdu292/RS0jqFtrNwjxeL8ov9y7LVK2EoAWf3djjZ+k2fl9xquXVRwb11+bo3V/Duq/VZW/huc2jwkhL1keuKV31M13C4PrfxuZ2Mc7rV/uY/jm2McXh1MSwwAAHzhCWMBAICq+2f38dN//NP4xt/6Rvz6d3+9Xyd2XCv2GBG7oWHXb6ZK2bY5BTMrlbHjfupSfzyGILVrIrXzati8ovXBVbH5+rCVELh2PL/mdOjyAO0hNsPXYf9Ra4OW7TYqYsvzswAua7dWHVv2nY9rMb6Vv2oV7UqbMhi8pCJ2qlBdW/e0tr7pWvhaTHVdDWrHe3cpumM3q9icBZMPDfnz91u2XQkza9/Dg6cnrr334b/36FbC1nPPU/sNl89R3rfr7/vi+y/izU/enMYAAADwBSaMBQAAVo3rMY4hyBhsNalZhDX5dMWLKtnI2o3VrVnV6ljROpueuGnqla1j8NrE1D4iZhWy+Rq0EbFaJTtel49rFrSN7yEL6R5S2bh4n7VKx/yexf5FoVvt2FYQVwti834qoeJivxxf1k81nK1Vv5bhZ9n/GMTl98jGPgsRIy1Cxeo0vnl/tdBxsFgjtonT1NoXSJGi2TXx5FtP4ub9m3pouFVpe+HxzWdc+Q7KMDbf35oGuhrQRiVM3TIb7kYIm48zRRxeH+L+0/spkD28OghiAQCALw1hLAAAsG1YizG1WSg7VsiOAWlWkdh0Q2g1BljDGo9TZexw3Wxq4Wzd2EkWzpTnL6mQnfaLaYvHMa+tHVsen6lUzT7KRti2NhXxVgg7O74VxNamgF3pdzYlcVktO/axEtZtBXhl9etWu1qlbDWQLf+yZ6hVy569dlT+DjbWhy3tnuziw9/6sK8A31rLtMz2t35exW+1DDMfum5wObXwNPVw7fvMpyW+RCp362OePq5V6HYp7j+5j0//2aeX3RcAAOALRhgLAABsSilFOgxh7K4PVlPTb6Ppw5KpInUIcGpVstPniFlwNE0/nOaB6jS9cGr6qtdxW4S4iwrZ7HgeHi6mKW4qa9UOx8fPeWXtOO5VDwnVijazisu1EDYP2vLjZQhbO1aGqHmb8VgRYlbDu1oQWtxn9XnWQs8yIC3uUwtPt6bZrYasxbnN6YkjHrc+7Pg4xVS+5T8QePCM17NXeUGgmR/LA9ozYWztu128n/K72xx2Zaxb4y3H0KU4vjnG65+8jv3z/WU3BQAA+AISxgIAANtSRHfsojk2U2VstJXAplgzNg9hI52qZKfgdug7r16dTU+c6hWqi/ZlVWxzCnXKqthpP+trrODtBz+/X2rmgdIinC3e0yXvcrrv1rXlGLdC2Lx9KtqXbdcCuayfakVs/jkPTcu24z1q7bKxlSHfIthdC2GjGE825sV+JdBdDRprgexD5UHleK/j6bnfZnrr6RYrVdHTu8mPV34LqyF7lxZtqtXQm4O7/Nzq7zG7b3fs4vDqEC/+/IUpiQEAgC81YSwAALDpzc/fxMf/0cfx0d/4KD76Gx9FatNUERsREbt+k4eyTdOcpiPumlMF7bAu7Dht8RTOdhGpHSpiuyyQHatmszU882MRy0B2bFOem52vhbKDsoI2N4a3FwWv652cPV5dh3MrhI1lwDUL4y4IZTfDupVAdHHdVtiZB7Gx0S6vLN2Y/rhss7V/7l41i3VjLzXet0v9P2JI89/m0PmD+ls7dlG19KWhbJpf96C1YLfGWo4nP5aPYZgO/cVfvojj62NEijjeH98+JAcAAPicCWMBAIBNh5eHePHyRdx+6zY+/N0PT8FJFppGikUl7Hgsr1KdwteI2bTF0zTEcQpsp/0ifB0tpiweKw+L7GacdnixdmwUoWw+rXG2pu10burwXb3Zylg3QtiIlSB2HHPt2FaQ99CK2GJ8i+mAN8Y3bcvP+bHseC2AW10rtri22v9GEJsiq6o9E7Q/JKAdA9nqb2je6UoH549fWh29eHdRfO6y/t7B73vx/W2NbVyHuuunQ7/7+M60xAAAwFeKMBYAALhMF5EOKbq2izbaSMcUqUn9VKwR07ZpmilgSk2Kpm2m0GVWGTt+bvvq2UVlbLusjF1UyKZTcLpaITsGsPmxwVZFbC1026qafYjV9TQrxy6uhB0+n52muGhTBpur64hWwtDVKYS7NDt2SRXsor9LK2S7eZt8f7Uytiv6q2lO6xVvBqPTq+3v07RNPPnmk2h2Tb/WcpNdXPx8zv2eLp3OuvYbWXzntRB2Ldh9G7XfYzaO6V7DOF798FW8+embaf/w6vBuxgEAAPAFIYwFAAAuMlX6dfNQa6pwLUOy4m8MT6dq1rKyNauM7W+Y3TtWKmTLNV7zwHVjndjx/BjUjs+3uHcTs/0pWJoN4S0DtZXjW9WF1Wu2gti00aYM5PJnLT+vBJi1tVynIHY4UU5PvHi28h3nbbO/cix52DftV35/i2raNL/vu9TetP003ONU3vlPZFp2+AFVtnmgeTp4+nhmGuBLwtjFOC9Ve4QyhM3um7oU3X13Cl9fHOL+0/tH3BgAAODLQRgLAABcJB1TdPsumraJtmmjuzlVyHbRH4+IPtAZPzbZ1MNNOp0b1pKdpgQegqumHdaPHSpqx0rDiGUgW64hO34e20bKqm8jlufHY6mZBbLllMRTQBvz49M1D0nzVppWqxK3KgzL45WQ7lwIW11PdiXwnK4p23TZPbPza4F8tW2XZp8X9ykrZMtK2KKPamVsV7TN9iNOU2j3O+vfU83sPQ6/3W7f9RXfkf03MXpAkD/1f9opT/abtcrY8vsuPKrSe3arlbGV4xq/xy7i/rP7+OyPP5vOdfsuAAAAvsqEsQAAwEWOb45x98ldPP32034K1i5FapehWVkl26R5RWxETOHQGISOVanTWq5jFW2xzmxMl2dTEtfWjs3C0ulzimlt2jxwm60pG6fjs4B2PJQHsw8I7NacDWGH/YuC2DwXK/otQ7PVIDaW56ZrzqwdW61izc/lbWN+vPpstSmJy7EXIe9qZWxkAW4U171L429mDHtXQthxv7YWcml1Suva933mWO3+a32etRYMF7/J1PVTD49V9fsX+zi8Plzn/QMAAHwBCWMBAICLvPzLl/Hqh6/iu3//u/HRX/8o2kMbKVJ0u6FCth0Cty5LWZps20ZfSTluxyrZLquMbZqI9hTUjpWxa9Ww+ZTH09qxafl5ClvHtikWFa95VWy+1uyszbtMkGpd5YFW2WbtXFmFWDtWBpnDsdXzxbnNqtnKdutcddvN9zfXiK20qVbGFsema/PjD7T2/U/9Db+XqdozqxDP9yeXFqZeEnyuyX/TtT4fOYZLKrJT11cJP/ujZ/1asGWADgAA8DUgjAUAAC4yTu+ajsPfON3rMDVrGarlFbL537TGbMQswJnC1lSvjJ1Vw5bhbL4u7FgFG/Mq2dn6sc0pbJxNJTuOpzkFkdP6stl4F84FWufCp60QtjxfhLARRag6bKtt14LYvO80H8da1Ww5De7mOGshXP6bGE5sVdeWnxd9royrnLJ47buYTVV8qez++XTIU7X2+DNvst/p7KYPu93svuesrXdc3Hf6b3H1Vtu/yYj5bymlFIeXhzi+Pvbv5Jiiu+siHSSwAADA15MwFgAAeJB0TNEduuiOXV+BeuzXkE3HNJ2PiNMasRGzbdM1p7BzqJBtoonUFtMND+3ytWOrlbERU1VtvlZsRMyqZCPmwdLUJkuVpmA2q3KcgsVFjlZMWbyWadUqCs+0mQVdebCZnatO8bsSwi6C1zxgLatjH1oRW9x3XEv2XNXs4ny3bH/JteM/Alhcm/1jgUjRb7NxRcSD14edyULkcWzdvjtVeG9VxTbF7+fSULasct2aBjn7jdfGPl5z0e8xP7X2Wxrf+zHFqx++itc/er3eCQAAwNeIMBYAAHiQMYxNh9RXxI7Vsrus8rTLwtimr76bAtM2TVMT5yFek4rK2CFsnSpjU70ytjw2fo7IpiaOtAi/ZpWy47ONO01RMVgJ7VKkeQB2Sai31WYrgM3Or62zulkde0EoOws983MrQWxtTFvjXlxf/mX3XJvu+NJpi/N+L62MvVgeQmf7YxCZuux30cSiSjYP+Wdh6VogWwa3kf32pp9r/eKz02pf+i5qv7OuD5/f/PzNInw/vDhc2DEAAMBXnzAWAAB4kO7YRXffRfek66tVj1koO2wjIqIdAs0hmJ0qXLs+mBpDq6katuvbzNpHmkLaaTsGrsV6shFZCLsV0GbBVbUqtnKudv7RVZXVQsRUP1cLwdaO10LY7PgieF0LavO2K0HsoiJ2vE+tXdbHufVjayHqWjg7temy/bG6tivC1/w5H/qlpZXP+fN3MZ/Ce1zDeKy+HivBx997Nn1xLaiNmFe1XlS9XVhb9/hi5Xc7HhuD9y7F4fUhXvz5C1MQAwAAbBDGAgAAD/Lqh69i/3wf3/oXvhXNN5tob9vomi6aYx+MpvZUOZeHUNN2rJbNgteIfj91KaId2mYBWtNklbVZ0DWbnjgqIWwa+k/LaYnLsGormC3P16xVJ1avXeuqbLYSwK4GZWshbLlfCdfK86tVspUpjtcqWWfh3ZkgdgxQz4azXSyC1tl6rbXK2C4LbR+p+h0Of8f7Yxzvj9MU3dP5fHrupvJ7zPbHcL+cYjs/Nn3Hzfwe0285TvdbDfjPP+jp/uM9U4q7j+9i/2I/++10h27+zAAAACwIYwEAgAe5/+Q+9p/t48Pf/jBuPrzpw5ih0nWqjG2ztWHHaYpTmk1FPFsvdgjQZtMRFyHj2rTEW1MVT9MQN6dwaVYpW05HHPO2EbGYynhss8zmHhFKVS6ZBbBlm5UQdrr/WwSx5dqxq0FsOc4i+FwEomWfa+03+rpkeuLaNbVg+V3Jv4du38Xx7tj/A4OIac3Y2RrHQ7i6WL846tXaaxXc5bkp0J0Pbl5le+4fF6z8JvIw++6Tu7j7+K72KgAAANggjAUAAB4uC6B2t7too410k6KLfuriKYjKpmOdQqOxqjVfU3YIVafPeUXtGNC18yHM1pWNU7XhVGmbsntUKhFn+3m/qZkFWVOFYvH8EfOpZB/0+srAteg3369WOF4SwI7H0rLdagg7Xl9eVwlBI+I0JXUliM0rXvN+q9tizdHq9MR55Wxe6VqEr6nr+xv/zlbErk03nb/7tfczjGNaQ7kdfo9DdfgYzk4V4dH/3qbfTTk98dp26/PWsWnolbA2+zw+w6sfvIpu3y3apkhxfH1cvwEAAACrhLEAAMCjdPddHN8co3u/i2gj2q7tw9AxXGvTVP06rgc7bbPq1ylITdlasEVl7Gw77VYqY5t06if7PFa7LiplK5Wx07Sxka3vmd+7DGrfxtrlayFstl+bwviS9WMXbcbPtfA1vyZvU95jY3rhvP+1v7HPzemJy/HHPLgt+5tVx76ttd/gMcVxf4xu3/UhZjv8ZobtFMo2p4C/2fXn838ksJiSOBW/w+x3O72niHkAm+ZVt+m4EUIXv5fUpejuu7h/dh/dfbdyEQAAAI8hjAUAAB4sdSme/fGzuPngJr77978btx/eRnfT9SFPG32lbFZxWq6Lma8dW634q227+TVldW00w9TIkebnU9Z+LfSK07hmAW6kWQg2tpumfX1cYewpDNuqWCz216YvroWrD1ontghsq9MSl4FsWRnbnfpYVMR2K8fz/fH8uB5sNz9XO162GStn8+0sEF7z0Kw2ncby6kev4tVfvYru2M37WfldNE0TT3/1adx842YKaKegtlIVPv5jgOl3cuHvLR1TvPyLl3F8c2E16/BMi6pYAAAA3powFgAAeJQx6On2XaRjOgVkXRaWjWvHjp+HNWObrpkqZ5u2mYWCqxWyg1lFbLGe63Qsv77J+t5amzNrV4ayizHkAW6MzbaTstU1ZWuH87B2JaCtVcaWwerqtnaPvE0lsJ0Ft2v3zP/igs9FAFx7R2OV62xcZz4vnuEh8vdSPGfZprvv4vDq8KDuj2+O0dw28zA24lQ5W05hnJ+75B8BDMH08fXx8jAWAACAqxHGAgAAj5ZSiuObYxxuD9HethGpD1fH0KiNNrpdF23Tn+uafk3ZfArWma3K2LF6sM3Wih0rM9vo751Xy5bXpaJSdlgbdlEtG/3nReDaZGFYpQpyNWytvrhydxnulvtrlbGLALZ2rBKuliHs5rTEReA5tR0rYvNtJSCdrQdbq5Qd99cqY8drxzZdpQI2u3Y6/gDV4LZ4N/m6tOn4uCmQ735xF/ef3D/soodWYKfopykGAADgcyeMBQAAHi11Ke4/vY90THHz/s1p7diumQK0JjVT8NakZlpPdloztkvTNMRjlexYITutJ5utDTtWvE6VruN6sHEKW8vjETFrP4WtYwBbVkNGUemaV83mx2K55uxF720tfD01OH08F8LWjhXVnJvTEtdC2Y0gdtbvcL5WwZsHmGXAW/7V2swC3OL4rK/hHuU0ye9KbT3b490x9p/t4/j6EZWn3alPAAAAvvqEsQAAwKOlfb927JNvPYkn334SN3ET3W5Yd7IZKmPTqTI2NSlSm6I9tn01a8RyO1wbMVS69ulqXxE7horFmrNjRWzTDcHrUB07XZ+KNWPjVAU7W6NzqJaNiFnbMTubKmezY+P4HvbiVg6vBa/l/fJzZeBaHqsFtcXn2fVd0a5SMbsIbC+oiC3Xla1VxJZh61jlOqt67eZ95FNjR1eM+bGy91J+BymluP/FfXz6zz99p6EvAAAAX03CWAAA4O2kiHRM0d130e266J50/fqw7bAubBPTlLGpyypYI04B6BjiDe2qFbLdqf1s3dhi23ebVcOO0xFXzuX7+bHyeO381K5Yt/aiV7YWFtYOp+y+tXB2LYQt91dC2fL8uSC2FuBuBbbl1Mara7tmwewUvq5U1c6mJy4C3a3phteOL95XLfDO7zPeGwAAAM4QxgIAAG8tpRSH14do2ibaJ200TRNd24eybbR9KJti2i7WhI1sf5iyOD/fNM00tXHq0qkSttjOqmEjWyc24mwoOx0bxjeFkk3M2teevfosqy9r+9ws8K2Fr5Hqx4tAcTp2aQhbmfp3K5A9N7XwWkXsovp1Yz3ZWdtxrdgxsM2umU1dfO4dn1NeW4y3O3ZvX3kLAADA14YwFgAAeGvdXRcv/+JlPP3209g93UXTNH1lbNOv5ZnaoSrymPrpiPOwNcu1mnZYU3YMUPNpiiMLXtt5Jex0/bim7FhZmwWx50LZvH3e3yKcHcddazc/eFKcq64ZWsv3zgSwEZUQNhXt10LY8Zri/Gr4WrbZ2G62WalorV03tc2rXvMpi4sK2XMh7CVrtVbfxfA+Dq8O8fIHL2P/Yn+2HwAAAIgQxgIAAO9At+/i9Y9fR+pSvP+b70fTNtHs+kC2a7podkMV6hDKzsLYPJyN7PhYkZpO675Op7shmB1D13aYzjirnh0D3DFkzT+P/UYT83Vks2A2D2xn5yoWIV8RMl9UqTnL/dLiWDWAzY9vhbDj/sb0xWuVsfl15ypjLw1rq5WxXZoHttmYF5WyXeXYpdWqa81SuTt/5tT11d8v/+rl8vcKAAAAK4SxAADAO3P/7D4++cNP4oPf+iA++t2PIpp+muKm7YPZaCKaXRNt085CwtnniOU0xvl0xcN0xHk2uqiSbWMKVKdgtAx4m3Q6noa+8ymHh2PjuMYK3dk487HlA7q0QvPSYHAlfJ36Ko/VQtdy/5IQdqMaNiJmawFP27VANpuCeFYRW6t6LQPavBq2S/N1ZcfgduXdrSrfzXis8nd8c4zP/uSzOLw6CGIBAAB4EGEsAADwznR3Xbz52Zu4/eg2umMXzbGvVk3HLKxrTuHdOA1x0wzTE7d90DZVvMawP4SiYzVsimL92CFQG6tom+40FXG+Nmy5TmweoE7HmtOUw7VpkIsDq20fpHJpNYAdPi/C3JVgdnMK41rYOrYt9qvrxw7XLsLgWhC7skbsLNytfK5dv9gv39XWuz0Tfte+w5RSdIcu3vz8TXT3klgAAAAeRhgLAAC8c92h66sIh/CsaZpoUjMFnSlSRBvRRRdNaqZtk7JpglP0Fa4Rp2B1DErbOFW6ZpWpU5g2HJ8qaaOoqo2YrUc77kfEfN3Y8lxeOTuOc8VUVTs2vWQa3bJJLXgtzxWB7OxeZeg6XlcGrXnbtSmJ8/Yboeu07Sr7keYVrSnmFbPFsVrb/G82trOvdhlur1XFzu55PP1jAgAAAHgoYSwAAPDOdfsu9i/3/bqxN020x7YPVHfpVBnbRD/laxOnStbUV7Wmtg/CZhWu6RS2ThWwcaqETU2awtz8XEQsPo9ttvZrVa9b68ZO1wwurtasnKsFh/nni0LYtf1zoezYfiOIvTiQLbcxv3YxrjIQrVTD1q5/F6Y1YrNOU0pxfHOM45vjO70XAAAAXx/CWAAA4J1787M3cfeLu/jmv/DN+OA3P4imaaLt2r5CtusTyyY10Ua/dmy3Gypj22b6HCn6gDVOFbXRxHw92LJCNhX7Y3XsWAGbrzXbDCHtWAm7sk7trO3YTy2YWzu+Za39LBdN83Yb4etateyla8auTVu8Fb5uVsaWlbARF1XEjmvFblXELkLr2vvcCK9X180d++5SdPddPPvnz2L/fB/d3hTFAAAAPJwwFgAAeOfGqV33z/dx9/Quml/tK1zbrp93OO2GYK7NgtAhzGxSM1XONpGtJZuG/SGEa6JfK7ZJfSVtrRJ2rSL2orVjiyrYPPjbWjv2cS+scp+1YHFlLdlqMLtVKXtJ+BpxPnRdOxfLNvm989C2vH4WuJbVsJGNfeUdLlz43eRjPrw4xOHVIQ6vD4JYAAAAHk0YCwAAXM3Lv3wZr374Kr77r303nn73aTRtE+2ujWgjmrYPaJv2VCEbbUSXuv5cxHxt1hSnqYybZl4hO2qLtWHz9WGHY7W1YmeVs6lSMZtObRdB4NsGsaNKH2vB62wMtYrPtf08gB37eUQIO/VTVL9WQ9luZX+ofp1dW6uITcOardm1D3mf59aKLatix/t99qefxd3Hd1NFLwAAADyGMBYAALieFJGO/XSv3X0X3W1fYdgch1BzqIxNxyLcHLfl1MJtnNaU7fogd7Zm7Lhts2mOm2Kt2TGUrVXHjoFvXgWbmun+KaVYFsWeWUf20ldVW2M2LT/Xpi2+ZGriRfCaVcVO7fM23bzNIpwtr1kJbfMK2LzytBbaVitii8rZ6R1svsyVd1W2Kd9NNo5pPAAAAPAWhLEAAMDVHe+OcXh9iPamnULUZndaC7aL7lQdG3HatsU2xaki9h2uHTtts2ubNIS1TRboZZWzs4C2dC6f3cr4ysCxbFup7twMYM9Vwpafu6yvMgQd133Nq1yHa1YrZCuVsXlFbLku7KJCtotZKHrpOrELReg89VWO7ZgiHTZCXAAAAHgAYSwAAHBdKeLNx2/i8PoQze82cfP+TR/EpqYPZaOJtmmjiy6a1H+OiPn0v3kYWm7zz0VQ27TNqZo1n7Z4rUI2FVMR5+FsWTlbjql45q2K2dXKzo1gsVYRG1EJYCvH8gCyDGHLKtmp6rVL8/Zp/vnsWrJj2FqZnniqfC2nLC6OT+FuZOO80Ga1cMzHn9/37ud3cffpXRxeHS6+FwAAAKwRxgIAAFd39/O72H+2P60be9tGm9ro2i7a1M5CtnF90IiYVbxO675GUeXaRl/NWWafzel4E80sbJ36SfO1YZsmC28jC1RTnNqlmJ9fCWUfEhwuiz0rlZm1sDU/npYBZHUq4vGalRD2XDXsavhaBK3TfYtq2c21Y8eK2LLydu1Vrryjc9MTl886BrFjGPvyBy9XLgYAAICHEcYCAAC/FN2hixfffxG3H97GN/7mN2L3dNcHmMP/X0kTTR/Qpq4PbKON1KV++uKmn8p4qlptUz+NcF4Jm09PPBqnNy7Xny2nLY55SLuowC0+N818vdlZFe/bKEPZcgrkWiBbVn+uVYRWPq+GsNnxS0LYshp2LaC9eHrifA3hMTQ+865Wg9jiGavvpYu4+/guXv3oVew/2y/vBQAAAI8kjAUAAH45UsT9L+6je9PF+7/5fh+I3jZTdes4VfE4TXHq+qB03M6mGY5llWzTNFP4mrp+f9pGmk1HfMk0xdHEVCWbT1EccTqeP9sY0D769dTWnk3Lz4u1ZMuq1/LYWvBaVs3WKmDLytmy6nU8V64le6YSdnZd1v8Y1s7GdUkQu6Z2aVkd3KXoDl3sX+zj9Y9fX9gxAAAAXEYYCwAA/FId3xzj2X/2LJ78ypP45t/+ZqQnp+rE5qYPPZu2OVW8RhaQDpWwKaVTlWxzCleb1PTHK5WwqUnTuelzxCzknX2O4ngU57L9aRrkx+axsxx1Garmn8+GsXn4WlTJLqpgx/ZnKmHXjk8hbDE98UVrxnan6YHLatnVatjynVz6XorP+RjuPr2Lz/7kszi+OdbvBwAAAG9BGAsAAPxSpS7F/vk+mpsmjvfHvvJ014ekbdNGak8BXxPNvDJ20ETTt+v64DalofK1G4LW9lQNO4Z04+exyjW12fmssrW2ZmwZDDZF6joLAh8TyK5VeuZB41oIeUkIW1bBroSsUz9FBex4fW0t18W5rQraPJythb55SPyQ91SeL99N9lzTuS7F8c0xDi8Pcf/p/fm+AQAA4BGEsQAAwOeiu+/izc/fxM2HN/E0nvaVksc+rGt3bYwVsk1q5tvsL9ohtG2bKYRtmmaqnM2rYRcVskOQOKuWjWa9GnZl/djV8PXSUPZMEDvtVqYhnh2/sCJ2umYljK1OV3xurdiiGrYMbtfWil2cv7QaNn+WrYrY/Pnz7THF/uU+PvmDT+J4dxTEAgAAcDXCWAAA4HMxBmJN28Tx/aFCtmkiHVN00U3VrW03zlW80tEwdfFU8Ropmq7ZrpBN/bmImFfLNqc247lpP6t6LacSrq4Xe0mV7FYRaFkhmuafayHkRSHsuF9UzK6tJ3uu0nVz221Xws4qZR8SxK61WXnO2TsZKrP3z/dxeH2IdJDEAgAAcD3CWAAA4HNxfHOM1z98Hd23u4g24vaj20hdil3azSpjx22b+imM27bfNm0Tza6JphsqZPPK2Dadr5BNp0rYzTVkI5ZVszE/v/j8tspwsghi+03aDiHzflYC2tU1YaOvVM2PP2jN2DyE3VorNh9P8fxb72Z6/uJZy3dQjjl1Kbq7Lj75p5/E4eUh0lEQCwAAwHUJYwEAgM9P14ey+2f7aJpm+ovbIYjdRb82bIromi6adKpwnQyFs3mA2kQzBahj0JqaNAtjp2MRfb/D+fzzVPU6Vs0Ot56C26H6dRZ4vk0oW8sGz4SPEWcqYCNmoWs1kI04H75GEb5W2tZC2UUFbFlhe+75195FLaBeqYgdg9i7X9zF4eUhjndHQSwAAAC/FMJYAADgc3V4eYjDy0N0h24K03bdLiIiml2fbE5rxu5OlbLRRh/WdqmvkM1C0yZtrB07hrd5iFtWw55bN3arQrY41pxJZ1crYCvHquvG5lW05ypia+dXKmQvWTN2s0K2m28XFbJloLr9kubv64IgdjYV8rAe8fM/ex53P7+78KYAAADw9oSxAADAF8LhxaEPWqNfNzaaiPam7atld020TT91cZe6PnxNTTTRzKcXXtvmf2m+nVXN5u1jOBfzc2O17WTsK07XRJyOra6FuuHcerFTv8XxPGCd9bNVIbsVwkaaV8x2p2PVYDY/Pk5VXIax5VTKmy8i/7gMnGfvq3zGbGxvPn4T+2f7OL4+XnBTAAAAeHeEsQAAwBfC4cUhDi8O0d62fUXrron0pK9obbqhQnbXRBt9KBu76LeVaYrzCtkpXG1jGcwWf1PQuhLs1sLZMQSc1p+trYGa95XbCiTLMPdcILsSwJYB6KIiNm+zFsJWQteIWE5DXISxeSg77l9kkUXXq2FnzzseLytjuxSvf/w6Xv3VqwtvDgAAAO+OMBYAAPhCuf/kPg6vDhFdxO79XUTqK2RTStHu+iC2afuAttk1pymMm9M2djEPZYcpjGsBbD6F8bjO7Nlpi2PlWG3/sS4IYyNWwteNCtnqdL4R1YrSramJy8DzbIXsuSC2cr46lfFK6FybOvnNx2/i9Y9fx/2n92duDgAAANchjAUAAL5QDi8PEa8jbj686QPY27ZfF7ZtoktdX8E6VshGnMK6vPJ13E/Z8YhqGJtPUzx9TvPPi+mJh6B3CnkjTufK8LApd08HFlMY1wLLskltmt9UBJe1/dpUvrVz4/qvZ8LXqW0tlC0rZLeshbC1c2eC2Gmcwxqx+2d7FbEAAAB8rpqUzen05MmTz3MsAAAAk/a9NtpdG81NE7cf3saHf+PDaG/b2D3Z9WHsTduvKdtmFbK7ZlpjNpqhgrbNPjdNRDsEom1MFbFjEDuGrrNjEbNpivP96fh4Te5tKmRXQtm1KtnV6Ypr4WVROTud6yrH1ypiK2HsLIQt+rrskbcD2MVzjM+eirF0Ke4+uYvnf/Y8Dq8PcXxlnVgAAAB+ue7vTzM0qYwFAAC+kLo3XXTD4qSpS/He6/ciuj5UbaON1KTomi6a1ETbtFMF6+xvUF3rtYtZ6DpOVzxWuDYpWz92rJRNp/1oYlqTdhaGjgFtKoLbS0xZY1ocW7Qp10qNZVh5UQhb7M+C1sjO5SFsZUrg2faSaYmnoZ9/1tqzLcLp4f7Hu2McXhzi7ud3lw0AAAAArkhlLAAA8MXXRuye7OLJt5/EB7/zQexud9HettHetlOVbNP222ijX1s2q4xdVMcOn2cVsZUq2VmlbGTnhs+j6VhxvLbfFAceOlVxLYTdrI4dz6+Er6vTFK9MRVydlng81q08U81Wk0tC2GIs3bGL/fN9fPrPPo3j3TG6u+78GAAAAOAKVMYCAABfLl3E8c0xjq/7qsd4P6awtE3ttLbrWCnbRdeHrbly3djxc7627FgBm68hO1bUjuvGZtWxY1A7HYuYQsMpoF1krWOD5bnSLHgt+yoD2NqxWghbCTKne62FrmuVsLWK2dwFz7j6fBEXBbGp6/8OLw6xf76Pw8tDpONDbgoAAADXozIWAAD48hgqWt/79ffivV99L3bvnSpk212/jSYWa8muVcmOgeu4lmzERqXscP+8zTSmmJ9ffI5lRWzN2SrZlLVLyzbVaYpTsT+cn4WulYC2uu0q+2Ug/BCV685Ov1yMKR1SHN4c4pM/+CQOrw+RDoJYAAAAPl8qYwEAgC+nFJGOKY6vjnH/2X3cdrexe2/XnxvWgG3a5rSWbLSRUjpVyY7BZJ6LtjFfF3ZcJ7ay/uwYwuaVsLPq2SwHnE1dHDGtRXvJM853l9Wv08etytFyvxLQXhLCrlbG5vd/iJVLLp1+eRzD/Wf3cXx97NeJvT/G8e4oiAUAAOALR2UsAADw5dREvPfr78XtN2/j9sPbaG/a2D3dndaQ3Z0qY6cq2abfztaPbYtq2PYUpE4hbl4pG5V1Y8u1ZfNz+aGmcrBQDTgrYezmFMVrFaVl+BoRZ4PXlcrYd2F1GuaNEHacmvjTf/ppvPrRq+W1AAAA8DlTGQsAAHz5pZjWBz2+OkZ728bT7zyN9naohj1moWzbRJPm20h9tWqTmtPasWN1a1P5HNnnfD/frh2LYb3ZsYL2zHP1m0qlaHm+djyleqj5LsLYLOh9rM2wuXy2csxdivtn93H/6X3sX+wFsAAAAHzhCWMBAIAvrcPzQxyeHyIi+nVjn7axe28Xu7SLdtdGpIjmOFTFdtsVsk3bT1E8TlXcNE2ktk/78mPRxBSq5hWyY3i6qJodjNMUn1s7Np0SydrJ08d3NEVxLYhdDWPfpVpV73i8GO9UlduleP3T1/Hiey/e7VgAAADgSoSxAADAV0I6pnjzkzexe28XT77zJNrbftridtdGc9P027aJ5mYIX7thmuLdUCHbnqYqnoLZbghfs5A2ImahbBm+piYtpyzOzz+0nLOcybcMYYfPZRA7ta1VmJYVsmuhbHm/87MsX/wciwC2Mu6UUhxeHeLlX77s16lNEffP7gMAAAC+LISxAADAV0LqUtx/ch/te22077Wxe7Lrj9+kaFMb0UVfFZsq0xYPVbBjIJtSWlbDZp/zqYinQLY8thHIXv5Q9f1a8BpRBKcXBLDTNRth7OZ4HqMWwo7Hi6mT03EIY/9iCGMBAADgS0YYCwAAfKV09128+cmbPmhtm7j91m08+ZW+Ura9aU/ryO6W0xY3TRPRnipfxymMxwB2Op4fi6FidiyQHSply/VhpwraR5hNEXzp9L4Ri8D17PTE+TXjtMuzh3jIoOf9LMZfGesUDHcpjnfHeP6nz/t1gQWxAAAAfEkJYwEAgK+WLuL46jjtNjdN7N7b9eFfNxzrmmhTG6kdqmbb6EPANkWThqB1PJZNYTz7i5X9fLv1+SE2qkn7zSlYjbgsjK0GspVx5mFqky57gNUAtjbm8flSinToq2G7rovj62O8+fhNdPfdRfcEAACALyJhLAAA8JW2f7aPw8tD3H7zNnbv7+Lmg5u+QvZJXyHb3rSnCtk2+8uqZPP1ZFerZCM7PnweNU0zDygfUWE67daqZCtrxi5C17F9Gbzm/TTF/mIoj6hQ3ZhaOZ8iOXUpnv/J87j75K4/3kV0e0EsAAAAX27CWAAA4CstHftqy+Ob4zR1cHvTxk3cRLNrIlI/HfFUIdvGtH7sWCU7rSHbDmvBtjGFsrU1Y2fhbDSLKYvfJoytVsk+pCI2iv0mm4o4v9fjZ1We9TO773jvYVzdvovj/TGi66cm3r/Yx/75/i1uDAAAAF8sTcr+SfSTJ08+z7EAAABcT1bR2uyaePKrT2L3ZBe793Z9hextG+2unVfI7uZrx04VsmWlbCzXkS2nLJ6tGfuYoHOtQnarOrZsU76Pmqbc3R5smievq2Mup0ROKcXrH72Oz/5/n01tukM3TSUNAAAAX1b39/fTZ5WxAADA10NWIZpSiuPrY79G6SFFc9vEzfs3kXapD2Z3w9TF3RDAjtWyqQ9lU5dVyo4hazvcpxnWma0Esotc85JQdiXgrFacVqYCjphPSzyNd60KdjGD8QOnJq7ddwxgjyn2n+0jdf13sH++tyYsAAAAX2nCWAAA4Ouni9h/sp9CyN37u3j6q0/7qthhHdn2JquSLdaTndaSzath276zq1XIXloZG1k1ayX8LdeLbZpmdY3Yi4e2sgZtWQ17eHGIX/zhL05rwb7lfQEAAOCLThgLAAB8fY2h4b4PCqcpiYfw9faj22iftH2FbJNNW7wrpi1umkhNmk1dPB2L+XTG+fqxq6Hp2jhr6WXtUHMKameBcKUadhGk5k2y4Hir3dZ0xHe/uIvuruurke/6amRTEQMAAPB1IYwFAAC+9rp9F/e/uF+e+M2I3Ye7U/iab9v5GrJTCNuepi2egtCVKtmIolL2oZr559r6rmWAO43jgqrUzQC273y5Tu2wn7p+WuKXf/Ey7n5xd/5mAAAA8BUkjAUAAFixf76P45tjH3TeNPHkW0/6IDZllbHtvBp2CmGHNWTzqtj88xieTlWsw7F+00QlV523qUwvnAevtWC2bFPvvtlut7JO7eHlIV7/5PViiuLDq8Pm/QAAAOCrTBgLAACw4vDiFCS2t23cfHATTWqiTW2kJi0qY8upiiPma8lOwes4jXFk7YfjEf00w9X1ZrOAdRa85sHsUPU6nW8imnR59e0lIew0FfH4uYvYv9jHi++/sA4sAAAAZISxAAAAF+iOXbz52Zt5FWxE3H7zNm4+upkFs+PUxNN0wPl+zNeYnc5HnPpNw7qvw7km9X3OAtiUrUObTuvQRiqmPh6D2TyPfUhgWlS6pi7Fyx+8jMPLw6zN8e4oiAUAAICCMBYAAOASXcTx5XFxuLlton3aTuvJRhuzqtnYDdMRD9P5ThWxMZ8SuJweuFYFu1oZW0xJXKtuXZu2uCalfr3XrMN+M6wDe/fzu9h/tr+4PwAAAPi6EsYCAAC8hf2zfR/S5lnn8Hn33i7e+/X3+mmMd6epjKdpjLOK2Ol4zI/PqmmzqYfH7RT0lllrsZ8HvvmxbGfaHl4e4vn3nkfqFovSRoR1YAEAAOBSwlgAAIC3kA4pjodlxWxERHQR3V3XB7HjNMZZEDuGr2NFbXvTntaTzacpbpr6VMTjdMbDsb6zoQq2zFFTiuO+GGdZQJv6dodXh9h/tl+GsQAAAMCDNCml6f/v+smTJ5/nWAAAAL5amohm15wC0uJcbvfeLj743Q+i3bURbSzWps0rZGfXT7tZh1loG9EHrPsX+3jxvReXBaxdRLfvLnlCAAAAoHB/fz99VhkLAABwLamvnO0/nglBm3564Gnt2byKdjjfRBHEZp/X1oQd16o9vDzE8c1xWQ0LAAAAXI3KWAAAgC+Ktn54LWh9iBQpQrErAAAAXJ3KWAAAgC+ilbD0bFUtAAAA8IW08u+uAQAAAAAAAHgbwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " inout material: Material,\n", - " inout hit: Vec3f,\n", - " inout N: Vec3f,\n", - ") -> Bool:\n", - " var spheres_dist = inf[DType.float32]()\n", - "\n", - " for i in range(0, spheres.size):\n", - " var dist: Float32 = 0\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " hit = orig + dir * dist\n", - " N = (hit - spheres[i].center).normalize()\n", - " material = spheres[i].material\n", - "\n", - " return (spheres_dist != inf[DType.float32]())\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - "\n", - " return material.color * diffuse_light_intensity\n", - "\n", - "\n", - "fn create_image_with_spheres_and_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var lights = List[Light]()\n", - "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", - "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", - "\n", - "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "78043756-0ce9-455f-9e49-fb75268d4478", - "metadata": {}, - "source": [ - "## Step 5: Add specular lighting\n", - "\n", - "This section corresponds to the [Step 5 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", - "The changes to the code are quite minimal, but the rendered picture looks much\n", - "more realistic!" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " mut material: Material,\n", + " mut hit: Vec3f,\n", + " mut N: Vec3f,\n", + ") -> Bool:\n", + " var spheres_dist = inf[DType.float32]()\n", + "\n", + " for i in range(0, spheres.size):\n", + " var dist: Float32 = 0\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " hit = orig + dir * dist\n", + " N = (hit - spheres[i].center).normalize()\n", + " material = spheres[i].material\n", + "\n", + " return (spheres_dist != inf[DType.float32]())\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + "\n", + " return material.color * diffuse_light_intensity\n", + "\n", + "\n", + "fn create_image_with_spheres_and_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var lights = List[Light]()\n", + "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", + "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", + "\n", + "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "78043756-0ce9-455f-9e49-fb75268d4478", + "metadata": {}, + "source": [ + "## Step 5: Add specular lighting\n", + "\n", + "This section corresponds to the [Step 5 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", + "The changes to the code are quite minimal, but the rendered picture looks much\n", + "more realistic!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 12, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", - " return I - N * (I @ N) * 2.0\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "a6e7fc32", - "metadata": {}, - "source": [ - "## Step 6: Add background\n", - "\n", - "As a last step, let's use an image for the background instead of a uniform\n", - "fill. The only code that we need to change is the code where we used to return\n", - "`bg_color`. Now we will determine a point in the background image to which the\n", - "ray is directed and draw that." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", + " return I - N * (I @ N) * 2.0\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "a6e7fc32", + "metadata": {}, + "source": [ + "## Step 6: Add background\n", + "\n", + "As a last step, let's use an image for the background instead of a uniform\n", + "fill. The only code that we need to change is the code where we used to return\n", + "`bg_color`. Now we will determine a point in the background image to which the\n", + "ray is directed and draw that." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3de30ee3", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 13, - "id": "3de30ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " bg: Image,\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " # Background\n", - " # Given a direction vector `dir` we need to find a pixel in the image\n", - " var x = dir[0]\n", - " var y = dir[1]\n", - "\n", - " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", - " var w = bg.width\n", - " var h = bg.height\n", - " var col = int((1.0 + x) * 0.5 * (w - 1))\n", - " var row = int((1.0 + y) * 0.5 * (h - 1))\n", - " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - " bg: Image,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var bg = load_image(\"images/background.png\")\n", - "render(\n", - " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", - ")\n" - ] + "data": { + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "We've only explored the basics of ray tracing here, but you can add shadows,\n", - "reflections and so much more! Fortunately these are explained in [the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", - "and we leave the corresponding Mojo implementations as an exercise for you." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] } + ], + "source": [ + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " bg: Image,\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " # Background\n", + " # Given a direction vector `dir` we need to find a pixel in the image\n", + " var x = dir[0]\n", + " var y = dir[1]\n", + "\n", + " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", + " var w = bg.width\n", + " var h = bg.height\n", + " var col = int((1.0 + x) * 0.5 * (w - 1))\n", + " var row = int((1.0 + y) * 0.5 * (h - 1))\n", + " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + " bg: Image,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var bg = load_image(\"images/background.png\")\n", + "render(\n", + " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "We've only explored the basics of ray tracing here, but you can add shadows,\n", + "reflections and so much more! Fortunately these are explained in [the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", + "and we leave the corresponding Mojo implementations as an exercise for you." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Mojo", + "language": "mojo", + "name": "mojo-jupyter-kernel" }, - "nbformat": 4, - "nbformat_minor": 5 + "language_info": { + "codemirror_mode": { + "name": "mojo" + }, + "file_extension": ".mojo", + "mimetype": "text/x-mojo", + "name": "mojo" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/examples/notebooks/environment.yml b/examples/notebooks/environment.yml new file mode 100644 index 0000000000..45a48799ef --- /dev/null +++ b/examples/notebooks/environment.yml @@ -0,0 +1,14 @@ +name: mojo-notebooks +channels: + - pytorch + - https://conda.modular.com/max/ + - conda-forge + - defaults +dependencies: + - python>=3.11,<3.12 + - max>=24.4.0dev6 + - max = "*" +pip = ">=24.0,<25" +jupyterlab = ">=4.2.5,<5" +matplotlib = ">=3.9.2,<4" +numpy = ">=1.26.4,<2" diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7c1b1d0390..9782182c18 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,111 +8,113 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.8-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -120,6 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -134,265 +137,273 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.8-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -400,6 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -414,262 +426,271 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.8-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -677,7 +698,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -689,152 +711,158 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -886,27 +914,28 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 - build: pyhd8ed1ab_0 + version: 2.4.4 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -921,16 +950,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -945,16 +974,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -969,96 +998,100 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: appnope version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 - md5: cc4834a9ee7cc49ce8d25177c47b10d8 + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf + md5: 54898d0f524c9dee622d44bbb081a8ab depends: - - python >=3.7 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 10241 - timestamp: 1707233195627 + size: 10076 + timestamp: 1733332433806 - kind: conda name: argon2-cffi version: 23.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677 - md5: 3afef1f55a1366b4d3b6a0d92e2235e4 + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba depends: - argon2-cffi-bindings - - python >=3.7 + - python >=3.9 - typing-extensions constrains: - argon2_cffi ==999 license: MIT license_family: MIT - size: 18602 - timestamp: 1692818472638 + size: 18594 + timestamp: 1733311166338 - kind: conda name: argon2-cffi-bindings version: 21.2.0 @@ -1119,187 +1152,173 @@ packages: - kind: conda name: arrow version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db - md5: b77d8c2313158e6e461ca0efb1c2c508 + url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 + md5: 46b53236fdd990271b03c3978d4218a9 depends: - - python >=3.8 + - python >=3.9 - python-dateutil >=2.7.0 - types-python-dateutil >=2.8.10 license: Apache-2.0 license_family: Apache - size: 100096 - timestamp: 1696129131844 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb - depends: - - python >=3.8 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 99951 + timestamp: 1733584345583 - kind: conda name: asttokens - version: 2.4.1 - build: pyhd8ed1ab_0 + version: 3.0.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 - md5: 5f25798dcefd8252ce5f9dc494d5f571 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b depends: - - python >=3.5 - - six >=1.12.0 + - python >=3.9 + constrains: + - astroid >=2,<4 license: Apache-2.0 license_family: Apache - size: 28922 - timestamp: 1698341257884 + size: 28206 + timestamp: 1733250564754 - kind: conda name: async-lru version: 2.0.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518 - md5: 3d081de3a6ea9f894bbb585e8e3a4dcb + url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + sha256: 344157f396dfdc929d1dff8fe010abe173cd168d22a56648583e616495f2929e + md5: 40c673c7d585623b8f1ee650c8734eb6 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0 license: MIT license_family: MIT - size: 15342 - timestamp: 1690563152778 + size: 15318 + timestamp: 1733584388228 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1307,8 +1326,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1404,294 +1423,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.5 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.5 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.5 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1792,95 +1811,94 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.7 + build: h318f0b1_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + version: 0.29.7 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + version: 0.29.7 + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + version: 1.11.458 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1888,54 +1906,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h8f08b23_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + version: 1.11.458 + build: hac138a2_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + version: 1.11.458 + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2214,19 +2233,20 @@ packages: - kind: conda name: babel version: 2.16.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 - md5: 6d4e9ecca8d88977147e109fc7053184 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda + sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb + md5: 3e23f7db93ec14c80525257d8affac28 depends: - - python >=3.8 + - python >=3.9 - pytz >=2015.7 license: BSD-3-Clause license_family: BSD - size: 6525614 - timestamp: 1730878929589 + size: 6551057 + timestamp: 1733236466015 - kind: conda name: backoff version: 2.2.1 @@ -2245,35 +2265,37 @@ packages: - kind: conda name: beautifulsoup4 version: 4.12.3 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 - md5: 332493000404d8411859539a5a630865 + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f + md5: d48f7e9fdec44baf6d1da416fe402b04 depends: - - python >=3.6 + - python >=3.9 - soupsieve >=1.2 license: MIT license_family: MIT - size: 118200 - timestamp: 1705564819537 + size: 118042 + timestamp: 1733230951790 - kind: conda name: bleach version: 6.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 - md5: 461bcfab8e65c166e297222ae919a2d4 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + sha256: ffc8e4e53cd92aec0f0ea0bc9e28f5fd1b1e67bde46b0b298170e6fb78eecce1 + md5: 707af59db75b066217403a8f00c1d826 depends: - python >=3.9 - webencodings license: Apache-2.0 AND MIT license_family: Apache - size: 132652 - timestamp: 1730286301829 + size: 132933 + timestamp: 1733302409510 - kind: conda name: brotli-python version: 1.1.0 @@ -2386,47 +2408,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -2565,102 +2589,106 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: comm version: 0.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe - md5: 948d84721b578d426294e17a02e24cbb + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - python >=3.6 + - python >=3.9 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 12134 - timestamp: 1710320435158 + size: 12103 + timestamp: 1733503053903 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.8-py312h2ec8cdc_0.conda - sha256: 9ffdc284d4c67ba9ab88d400fc55890aafba6a559268f2dc3ca5a1c58d1a7ab9 - md5: eb182854d81037c9cfd95b06aba22c06 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a + md5: c522fd70ca7a0c2fe1a861dd13987a57 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2669,16 +2697,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2661121 - timestamp: 1731045067784 + size: 2605093 + timestamp: 1732236790708 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.8-py312h6f74592_0.conda - sha256: 40b11ebc2b693716c327a30346e1def51050838fe4ce0df4c8c680bba175c0f8 - md5: e2dc21ac16b6942079cbb53740cf1445 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda + sha256: 651761a1bba2af89aeb391ab61391cfb4db67d9031f3bf429720782642873115 + md5: d0238a3a2f6127b05c5144aa383d7081 depends: - libgcc >=13 - libstdcxx >=13 @@ -2687,16 +2715,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2604198 - timestamp: 1731045129145 + size: 2596779 + timestamp: 1732236921259 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.8-py312hd8f9ff3_0.conda - sha256: 2a20826d25063bb500a8bda98a02fee024a64da0fa52183a29af026e2d4e81a7 - md5: a47db7a8ec137fa9cc5ba9f20a45394f + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda + sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 + md5: 51085e5bb7f21019186cc88fd9a03164 depends: - __osx >=11.0 - libcxx >=18 @@ -2705,23 +2733,24 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2535797 - timestamp: 1731045204699 + size: 2512030 + timestamp: 1732236996277 - kind: conda name: decorator version: 5.1.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 - md5: 43afe5ab04e35e17ba28649471dd7364 + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 + md5: d622d8d7ee8868870f9cbe259f381181 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 12072 - timestamp: 1641555714315 + size: 14068 + timestamp: 1733236549190 - kind: conda name: defusedxml version: 0.7.1 @@ -2740,142 +2769,149 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: entrypoints version: '0.4' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af - md5: 3cf04868fee0a029769bd41f4b2fbf2d + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 9199 - timestamp: 1643888357950 + size: 11259 + timestamp: 1733327239578 - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: executing version: 2.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 - md5: d0441db20c827c11721889a241df1220 + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT - size: 28337 - timestamp: 1725214501850 + size: 28348 + timestamp: 1733569440265 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2889,8 +2925,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2912,38 +2948,87 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: fqdn version: 1.5.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63 - md5: 642d35437078749ef23a5dca2c9bb1f3 + url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - cached-property >=1.3.0 - - python >=2.7,<4 + - python >=3.9,<4 license: MPL-2.0 license_family: MOZILLA - size: 14395 - timestamp: 1638810388635 + size: 16705 + timestamp: 1733327494780 - kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312h0bf5046_0 + subdir: osx-arm64 url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 md5: 7960352935cc95ac23883c9b8c97f2ff @@ -2992,19 +3077,20 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 - build: pyhff2d567_0 + version: 2024.10.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -3121,51 +3207,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -3189,87 +3278,83 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -3281,24 +3366,24 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -3314,21 +3399,36 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -3348,21 +3448,22 @@ packages: - kind: conda name: importlib_resources version: 6.4.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 - md5: c808991d29b9838fb4d96ce8267ec9ec + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 + md5: 15798fa69312d433af690c8c42b3fb36 depends: - - python >=3.8 + - python >=3.9 - zipp >=3.1.0 constrains: - importlib-resources >=6.4.5,<6.4.6.0a0 license: Apache-2.0 license_family: APACHE - size: 32725 - timestamp: 1725921462405 + size: 32701 + timestamp: 1733231441973 - kind: conda name: ipykernel version: 6.29.5 @@ -3422,13 +3523,13 @@ packages: timestamp: 1719845667420 - kind: conda name: ipython - version: 8.29.0 + version: 8.30.0 build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - sha256: 606723272a208cca1036852e04fbb61741b78451784746e75edd1becb70347d2 - md5: 56db21d7d51410fcfbfeca3d1a6b4269 + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + sha256: 65cdc105e5effea2943d3979cc1592590c923a589009b484d07672faaf047af1 + md5: 5d6e5cb3a4b820f61b2073f0ad5431f1 depends: - __unix - decorator @@ -3445,70 +3546,74 @@ packages: - typing_extensions >=4.6 license: BSD-3-Clause license_family: BSD - size: 599356 - timestamp: 1729866495921 + size: 600248 + timestamp: 1732897026255 - kind: conda name: isoduration version: 20.11.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493 - md5: 4cb68948e0b8429534380243d063a27a + url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a depends: - arrow >=0.15.0 - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 17189 - timestamp: 1638811664194 + size: 19832 + timestamp: 1733493720346 - kind: conda name: jedi version: 0.19.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab - md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: - parso >=0.8.3,<0.9.0 - python >=3.9 license: Apache-2.0 AND MIT - size: 842916 - timestamp: 1731317305873 + size: 843646 + timestamp: 1733300981994 - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: json5 - version: 0.9.28 - build: pyhff2d567_0 + version: 0.10.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - sha256: 402586e586761e0d51dd590fb71786f7f4e21c16353ca7d1c559358a1f849b26 - md5: b5fd1ac9269dd22e003eaac27e249d97 + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af depends: - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 28525 - timestamp: 1731366079831 + size: 31573 + timestamp: 1733272196759 - kind: conda name: jsonpointer version: 3.0.0 @@ -3562,49 +3667,52 @@ packages: - kind: conda name: jsonschema version: 4.23.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff - md5: da304c192ad59975202859b367d0f6a2 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 - jsonschema-specifications >=2023.03.6 - pkgutil-resolve-name >=1.3.10 - - python >=3.8 + - python >=3.9 - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT license_family: MIT - size: 74323 - timestamp: 1720529611305 + size: 74256 + timestamp: 1733472818764 - kind: conda name: jsonschema-specifications version: 2024.10.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 - md5: 720745920222587ef942acfbc578b584 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - python >=3.8 + - python >=3.9 - referencing >=0.31.0 license: MIT license_family: MIT - size: 16165 - timestamp: 1728418976382 + size: 16170 + timestamp: 1733493624968 - kind: conda name: jsonschema-with-format-nongpl version: 4.23.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 - md5: 16b37612b3a2fd77f409329e213b530c + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - fqdn - idna @@ -3617,46 +3725,48 @@ packages: - webcolors >=24.6.0 license: MIT license_family: MIT - size: 7143 - timestamp: 1720529619500 + size: 7135 + timestamp: 1733472820035 - kind: conda name: jupyter-lsp version: 2.2.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - sha256: 2151c2c63e0442a4c69ee0ad8a634195eedab10b7b74c0ec8266471842239a93 - md5: 885867f6adab3d7ecdf8ab6ca0785f51 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 55539 - timestamp: 1712707521811 + size: 55221 + timestamp: 1733493006611 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3679,15 +3789,16 @@ packages: - kind: conda name: jupyter_events version: 0.10.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - sha256: cd3f41dc093162a41d4bae171e40a1b9b115c4d488e9bb837a8fa9d084931fb9 - md5: ed45423c41b3da15ea1df39b1f80c2ca + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + sha256: d7fa4c627d56ce8dc02f09f358757f8fd49eb6137216dc99340a6b4efc7e0491 + md5: 62186e6383f38cc6a3466f0fadde3f2e depends: - jsonschema-with-format-nongpl >=4.18.0 - - python >=3.8 + - python >=3.9 - python-json-logger >=2.0.4 - pyyaml >=5.3 - referencing @@ -3696,17 +3807,18 @@ packages: - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 21475 - timestamp: 1710805759187 + size: 21434 + timestamp: 1733441420606 - kind: conda name: jupyter_server version: 2.14.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - sha256: edab71a05feceac54bdb90e755a257545af7832b9911607c1a70f09be44ba985 - md5: ca23c71f70a7c7935b3d03f0f1a5801d + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + sha256: 082d3517455339c8baea245a257af249758ccec26b8832d969ac928901c234cc + md5: 81ea84b3212287f926e35b9036192963 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 @@ -3720,7 +3832,7 @@ packages: - overrides >=5.0 - packaging >=22.0 - prometheus_client >=0.9 - - python >=3.8 + - python >=3.9 - pyzmq >=24 - send2trash >=1.8.2 - terminado >=0.8.3 @@ -3729,36 +3841,37 @@ packages: - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 323978 - timestamp: 1720816754998 + size: 324289 + timestamp: 1733428731329 - kind: conda name: jupyter_server_terminals version: 0.5.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db - md5: 219b3833aa8ed91d47d1be6ca03f30be + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - python >=3.8 + - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause license_family: BSD - size: 19818 - timestamp: 1710262791393 + size: 19711 + timestamp: 1733428049134 - kind: conda name: jupyterlab - version: 4.3.1 - build: pyhff2d567_0 + version: 4.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - sha256: ff1035eb0020dbaf4e332ef4b81a7068b595dfc57dde3313e9c4a37583772644 - md5: b4f3d579fc21a44518d52c52507461b4 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + sha256: e806f753fe91faaffbad3d1d3aab7ceee785ae01bf0d758a82f1466164d727d6 + md5: 5f0d3b774cae26dd785e443a0e1623ae depends: - async-lru >=1.0.0 - - httpx >=0.25.0 + - httpx >=0.28.0,<0.29.0 - importlib-metadata >=4.8.3 - ipykernel >=6.5.0 - jinja2 >=3.0.3 @@ -3769,42 +3882,43 @@ packages: - notebook-shim >=0.2 - packaging - python >=3.9 - - setuptools >=40.1.0 + - setuptools >=40.8.0 - tomli >=1.2.2 - tornado >=6.2.0 - traitlets license: BSD-3-Clause license_family: BSD - size: 7101932 - timestamp: 1731776859245 + size: 7396800 + timestamp: 1733261150800 - kind: conda name: jupyterlab_pygments version: 0.3.0 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 - md5: afcd1b53bcac8844540358e33f33d28f + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d depends: - pygments >=2.4.1,<3 - - python >=3.7 + - python >=3.9 constrains: - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD - size: 18776 - timestamp: 1707149279640 + size: 18711 + timestamp: 1733328194037 - kind: conda name: jupyterlab_server version: 2.27.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - sha256: a23b26d1a35bccdb91b9232119e5f402624e1e1a252b0e64cc20c6eb5b87cefb - md5: af8239bf1ba7e8c69b689f780f653488 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 depends: - babel >=2.10 - importlib-metadata >=4.8.3 @@ -3813,14 +3927,14 @@ packages: - jsonschema >=4.18 - jupyter_server >=1.21,<3 - packaging >=21.3 - - python >=3.8 + - python >=3.9 - requests >=2.31 constrains: - openapi-core >=0.18.0,<0.19.0 license: BSD-3-Clause license_family: BSD - size: 49355 - timestamp: 1721163412436 + size: 49449 + timestamp: 1733599666357 - kind: conda name: keyutils version: 1.6.1 @@ -3903,6 +4017,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -3935,6 +4096,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -3995,32 +4200,34 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + version: 18.1.0 + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4028,43 +4235,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow - version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + version: 18.1.0 + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4072,25 +4277,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow - version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 + version: 18.1.0 + build: ha2aff55_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4107,7 +4312,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4115,190 +4320,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 578174 + timestamp: 1733607685962 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - - libarrow 18.0.0 hf19f309_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 561495 + timestamp: 1733607973097 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + version: 18.1.0 + build: h3644d33_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + version: 18.1.0 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + version: 18.1.0 + build: hf3d3107_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4670,28 +4875,71 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda - name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 - depends: + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 +- kind: conda + name: libedit + version: 3.1.20191231 + build: hc8eb9b7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca + md5: 30e4362988a2623e9eb34337b83e01f9 + depends: - ncurses >=6.2,<7.0.0a0 license: BSD-2-Clause license_family: BSD @@ -5356,6 +5604,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -5413,6 +5707,49 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5563,62 +5900,105 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + version: 18.1.0 + build: h34a048e_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + version: 18.1.0 + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1204859 + timestamp: 1733607834047 - kind: conda - name: libparquet - version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -5776,97 +6156,95 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -5983,45 +6361,118 @@ packages: size: 324342 timestamp: 1727206096912 - kind: conda - name: libutf8proc - version: 2.8.0 - build: h166bdaf_0 + name: libtiff + version: 4.7.0 + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 370387 + timestamp: 1733443310502 +- kind: conda + name: libtiff + version: 4.7.0 + build: hc4654cb_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 101070 - timestamp: 1667316029302 + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 429018 + timestamp: 1733443013288 +- kind: conda + name: libtiff + version: 4.7.0 + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc - version: 2.8.0 - build: h1a8c8d9_0 + version: 2.9.0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: h4e544f5_0 + version: 2.9.0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - libgcc-ng >=12 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81526 + timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -6093,6 +6544,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -6124,60 +6673,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -6232,19 +6783,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception - size: 281554 - timestamp: 1732102484807 + license_family: APACHE + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -6292,27 +6844,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6322,16 +6876,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6340,16 +6895,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6359,103 +6915,106 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: matplotlib-inline version: 0.1.7 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab - md5: 779345c95648be40d22aaa89de7d4254 + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b depends: - - python >=3.6 + - python >=3.9 - traitlets license: BSD-3-Clause license_family: BSD - size: 14599 - timestamp: 1713250613726 + size: 14467 + timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6468,25 +7027,27 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6499,25 +7060,27 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6530,17 +7093,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6550,55 +7113,57 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mistune version: 3.0.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c - md5: 5cbee699846772cc939bef23a0d524ed + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + sha256: 0a9faaf1692b74f321cedbd37a44f108a1ec3f5d9638bc5bbf860cb3b6ff6db4 + md5: c46df05cae629e55426773ac1f85d68f depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 66022 - timestamp: 1698947249750 + size: 65901 + timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6655,85 +7220,84 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: nbclient - version: 0.10.0 + version: 0.10.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - sha256: 589d72d36d61a23b39d6fff2c488f93e29e20de4fc6f5d315b5f2c16e81028bf - md5: 15b51397e0fe8ea7d7da60d83eb76ebc + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + sha256: 564e22c4048f2f00c7ee79417dea364f95cf069a1f2565dc26d5ece1fc3fd779 + md5: 3ee79082e59a28e1db11e2a9c3bcd85a depends: - jupyter_client >=6.1.12 - jupyter_core >=4.12,!=5.0.* @@ -6742,18 +7306,18 @@ packages: - traitlets >=5.4 license: BSD-3-Clause license_family: BSD - size: 27851 - timestamp: 1710317767117 + size: 27878 + timestamp: 1732882434219 - kind: conda name: nbconvert-core version: 7.16.4 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhff2d567_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 - md5: e2d2abb421c13456a9a9f80272fdf543 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + sha256: 03a1303ce135a8214b450e751d93c9048f55edb37f3f9f06c5e9d78ba3ef2a89 + md5: 0457fdf55c88e52e0e7b63691eafcc48 depends: - beautifulsoup4 - bleach @@ -6773,31 +7337,32 @@ packages: - tinycss2 - traitlets >=5.0 constrains: - - nbconvert =7.16.4=*_1 + - nbconvert =7.16.4=*_2 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause license_family: BSD - size: 189599 - timestamp: 1718135529468 + size: 188505 + timestamp: 1733405603619 - kind: conda name: nbformat version: 5.10.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c - md5: 0b57b5368ab7fc7cdc9e3511fa867214 + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea depends: - jsonschema >=2.6 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause license_family: BSD - size: 101232 - timestamp: 1712239122969 + size: 100945 + timestamp: 1733402844974 - kind: conda name: ncurses version: '6.5' @@ -6844,34 +7409,36 @@ packages: - kind: conda name: nest-asyncio version: 1.6.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a - md5: 6598c056f64dc8800d40add25e4e2c34 + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 + md5: 598fd7d4d0de2455fb74f56063969a97 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 11638 - timestamp: 1705850780510 + size: 11543 + timestamp: 1733325673691 - kind: conda name: notebook-shim version: 0.2.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 - md5: 3d85618e2c97ab896b5b5e298d32b5b3 + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 depends: - jupyter_server >=1.8,<3 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 16880 - timestamp: 1707957948029 + size: 16817 + timestamp: 1733408419340 - kind: conda name: numpy version: 1.26.4 @@ -6939,6 +7506,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -6988,20 +7608,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -7016,6 +7637,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -7037,6 +7659,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -7057,63 +7680,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -7127,6 +7693,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -7145,38 +7712,26 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - size: 81534 - timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - size: 19241 - timestamp: 1732081026829 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -7260,19 +7815,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.2 @@ -7359,64 +7914,141 @@ packages: - kind: conda name: parso version: 0.8.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae - md5: 81534b420deb77da8833f2289b8d47ac + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 75191 - timestamp: 1712320447201 + size: 75295 + timestamp: 1733271352153 - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pexpect version: 4.9.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e - md5: 629f3203c99b32e0988910c93e77f3b6 + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea depends: - ptyprocess >=0.5 - - python >=3.7 + - python >=3.9 license: ISC - size: 53600 - timestamp: 1706113273252 + size: 53561 + timestamp: 1733302019362 - kind: conda name: pickleshare version: 0.7.5 - build: py_1003 - build_number: 1003 + build: pyhd8ed1ab_1004 + build_number: 1004 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 - md5: 415f0ebb6198cc2801c73438a9fb5761 + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 depends: - - python >=3 + - python >=3.9 license: MIT license_family: MIT - size: 9332 - timestamp: 1602536313357 + size: 11748 + timestamp: 1733327448200 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: pip version: 24.3.1 @@ -7437,120 +8069,119 @@ packages: - kind: conda name: pkgutil-resolve-name version: 1.3.10 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a - md5: 405678b942f2481cecdb3e010f4925d9 + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - python >=3.6 + - python >=3.9 license: MIT AND PSF-2.0 - size: 10778 - timestamp: 1694617398467 + size: 10693 + timestamp: 1733344619659 - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: prompt-toolkit version: 3.0.48 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 - md5: 4c05134c48b6a74f33bbb9938e4a115e + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc + md5: 368d4aa48358439e07a97ae237491785 depends: - - python >=3.7 + - python >=3.9 - wcwidth constrains: - prompt_toolkit 3.0.48 license: BSD-3-Clause license_family: BSD - size: 270271 - timestamp: 1727341744544 + size: 269848 + timestamp: 1733302634979 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -7662,133 +8293,176 @@ packages: license_family: BSD size: 488976 timestamp: 1729847306692 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: ptyprocess version: 0.7.0 - build: pyhd3deb0d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - md5: 359eeb6536da0e687af562ed265ec263 + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: - - python + - python >=3.9 license: ISC - size: 16546 - timestamp: 1609419417991 + size: 19457 + timestamp: 1733302371990 - kind: conda name: pure_eval version: 0.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 - md5: 0f051f09d992e0d08941706ad519ee0e + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 16551 - timestamp: 1721585805256 + size: 16668 + timestamp: 1733569518868 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + version: 18.1.0 + build: py312h1f38498_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + version: 18.1.0 + build: py312h7900ff3_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + version: 18.1.0 + build: py312h8025657_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7800,73 +8474,75 @@ packages: - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.3 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7877,16 +8553,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7897,16 +8573,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7917,8 +8593,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -7939,18 +8615,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -8004,13 +8681,12 @@ packages: timestamp: 1728714267954 - kind: conda name: pyobjc-core - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 - md5: 1533727287f098e669d75f9c54dc1601 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + sha256: 6c110c64e7cc0a28416414446698ab310a9261525a6aa630b2c4f50891867719 + md5: 663e894deb5a24c8931fd8224f19a1fd depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -8020,178 +8696,182 @@ packages: - setuptools license: MIT license_family: MIT - size: 490928 - timestamp: 1725739760349 + size: 484571 + timestamp: 1732987487536 - kind: conda name: pyobjc-framework-cocoa - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d - md5: b1c63f8abafc9530a9259e0d6a70e984 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda + sha256: 5a78f97cb7414cb4b78b777dcfcffb08da42ced866e8ef6455a57c2230908bfe + md5: 41e4f28d545565e48f1f819cf8dac5c7 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 10.3.2.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 381079 - timestamp: 1725875188776 + size: 380414 + timestamp: 1733168930888 - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-fastjsonschema - version: 2.20.0 + version: 2.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - sha256: 7d8c931b89c9980434986b4deb22c2917b58d9936c3974139b9c10ae86fdfe60 - md5: b98d2018c01ce9980c03ee2850690fab + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - - python >=3.3 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 226165 - timestamp: 1718477110630 + size: 226259 + timestamp: 1733236073335 - kind: conda name: python-json-logger version: 2.0.7 @@ -8209,34 +8889,36 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 - build: pyhff2d567_0 + version: 0.0.19 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -8341,18 +9023,19 @@ packages: - kind: conda name: pytz version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - sha256: 81c16d9183bb4a6780366ce874e567ee5fc903722f85b2f8d1d9479ef1dafcc9 - md5: 260009d03c9d5c0f111904d851f053dc + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 + md5: f26ec986456c30f6dff154b670ae140f depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 186995 - timestamp: 1726055625738 + size: 185890 + timestamp: 1733215766006 - kind: conda name: pyyaml version: 6.0.2 @@ -8567,20 +9250,21 @@ packages: - kind: conda name: referencing version: 0.35.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 - md5: 0fc8b52192a8898627c3efae1003e9f6 + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f + md5: 8c9083612c1bfe6878715ed5732605f8 depends: - attrs >=22.2.0 - - python >=3.8 + - python >=3.9 - rpds-py >=0.7.0 license: MIT license_family: MIT - size: 42210 - timestamp: 1714619625532 + size: 42201 + timestamp: 1733366868091 - kind: conda name: regex version: 2024.11.6 @@ -8635,40 +9319,42 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rfc3339-validator version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - md5: fed45fc5ea0813240707998abe49f520 + url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 depends: - - python >=3.5 + - python >=3.9 - six license: MIT license_family: MIT - size: 8064 - timestamp: 1638811838081 + size: 10209 + timestamp: 1733600040800 - kind: conda name: rfc3986-validator version: 0.1.1 @@ -8687,29 +9373,30 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 - md5: 37f4ad7cb4214c799f32e5f411c6c69f + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda + sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad + md5: bfb49da0cc9098597d527def04d66f8b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8719,16 +9406,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 336759 - timestamp: 1730922756033 + size: 354410 + timestamp: 1733366814237 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.3 build: py312ha4e36d7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda - sha256: 5573bd19cd90ddb1b446ecd5a3b2c52923d030c91581fe2e63b014d47973a86c - md5: b5758e481b8a8e6f8342836f66fb0bdf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda + sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 + md5: 4d41b57d0d3933b9cab7ac8c05745123 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -8737,16 +9424,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 340149 - timestamp: 1730924593615 + size: 348424 + timestamp: 1733368364148 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555 - md5: 8ea53395d5403ae5ec1adabb1a74719a + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda + sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 + md5: 2f7c4d01946fa2ce73d7ef3eeb041877 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8756,8 +9443,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 295817 - timestamp: 1730922974629 + size: 318920 + timestamp: 1733367225496 - kind: conda name: s2n version: 1.5.9 @@ -8849,141 +9536,150 @@ packages: - kind: conda name: send2trash version: 1.8.3 - build: pyh0d859eb_0 + build: pyh0d859eb_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - sha256: c4401b071e86ddfa0ea4f34b85308db2516b6aeca50053535996864cfdee7b3f - md5: 778594b20097b5a948c59e50ae42482a + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - __linux - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 22868 - timestamp: 1712585140895 + size: 22736 + timestamp: 1733322148326 - kind: conda name: send2trash version: 1.8.3 - build: pyh31c8845_0 + build: pyh31c8845_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - sha256: f911307db932c92510da6c3c15b461aef935720776643a1fbf3683f61001068b - md5: c3cb67fc72fb38020fe7923dbbcf69b0 + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 depends: - __osx - pyobjc-framework-cocoa - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 23165 - timestamp: 1712585504123 + size: 23100 + timestamp: 1733322309409 - kind: conda name: setuptools - version: 75.5.0 - build: pyhff2d567_0 + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyh6c4a22f_0 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: soupsieve version: '2.5' @@ -9020,39 +9716,41 @@ packages: timestamp: 1722520112550 - kind: conda name: stack_data - version: 0.6.2 - build: pyhd8ed1ab_0 + version: 0.6.3 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec - md5: e7df0fdd404616638df5ece6e69ba7af + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc depends: - asttokens - executing - pure_eval - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 26205 - timestamp: 1669632203115 + size: 26988 + timestamp: 1733569565672 - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: terminado version: 0.18.1 @@ -9153,39 +9851,39 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -9193,16 +9891,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -9214,115 +9912,114 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tomli - version: 2.1.0 - build: pyhff2d567_0 + version: 2.2.1 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 - md5: 3fa1089b4722df3a900135925f4519d9 + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT license_family: MIT - size: 18741 - timestamp: 1731426862834 + size: 19167 + timestamp: 1733256819729 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -9334,125 +10031,128 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer - version: 0.13.1 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.15.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49531 + timestamp: 1733408570063 - kind: conda name: types-python-dateutil - version: 2.9.0.20241003 - build: pyhff2d567_0 + version: 2.9.0.20241206 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 - md5: 3d326f8a2aa2d14d51d8c513426b5def + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 + md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 AND MIT - size: 21765 - timestamp: 1727940339297 + size: 22104 + timestamp: 1733612458611 - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: typing_utils version: 0.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739 - md5: eb67e3cace64c66233e2d35949e20f92 + url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c depends: - - python >=3.6.1 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 13829 - timestamp: 1622899345711 + size: 15183 + timestamp: 1733331395943 - kind: conda name: tzdata version: 2024b @@ -9468,80 +10168,82 @@ packages: - kind: conda name: uri-template version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94 - md5: 0944dc65cb4a9b5b68522c3bb585d41c + url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 23999 - timestamp: 1688655976471 + size: 23990 + timestamp: 1733323714454 - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.0 + version: 0.32.1 build: pyh31011fe_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard - version: 0.32.0 + version: 0.32.1 build: h31011fe_1 build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -9598,13 +10300,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -9615,17 +10316,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -9636,17 +10336,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -9657,69 +10356,71 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: wcwidth version: 0.2.13 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 - md5: 68f0738df502a14213624b288c60c9ad + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 32709 - timestamp: 1704731373922 + size: 32581 + timestamp: 1733231433877 - kind: conda name: webcolors - version: 24.8.0 + version: 24.11.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac - md5: eb48b812eb4fbb9ff238a6651fdbbcae + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 + md5: b49f7b291e15494aafb0a7d74806f337 depends: - - python >=3.5 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18378 - timestamp: 1723294800217 + size: 18431 + timestamp: 1733359823938 - kind: conda name: webencodings version: 0.5.1 - build: pyhd8ed1ab_2 - build_number: 2 + build: pyhd8ed1ab_3 + build_number: 3 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 - md5: daf5160ff9cde3a468556965329085b9 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 2841eb5bfc75ce15e9a0054b98dcd64d depends: - - python >=2.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 15600 - timestamp: 1694681458271 + size: 15496 + timestamp: 1733236131358 - kind: conda name: websocket-client version: 1.8.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - sha256: 44a5e3b97feef24cd719f7851cca9af9799dc9c17d3e0298d5856baab2d682f5 - md5: f372c576b8774922da83cda2b12f9d29 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e + md5: 84f8f77f0a9c6ef401ee96611745da8f depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 47066 - timestamp: 1713923494501 + size: 46718 + timestamp: 1733157432924 - kind: conda name: websockets version: '14.1' @@ -9773,73 +10474,160 @@ packages: timestamp: 1731498944076 - kind: conda name: wheel - version: 0.45.0 - build: pyhd8ed1ab_0 + version: 0.45.1 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - sha256: 8a51067f8e1a2cb0b5e89672dbcc0369e344a92e869c38b2946584aa09ab7088 - md5: f9751d7c71df27b2d29f5cab3378982e + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce + md5: 75cb7132eb58d97896e173ef12ac9986 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 62755 - timestamp: 1731120002488 + size: 62931 + timestamp: 1733130309598 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -9880,43 +10668,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h9cdd2b7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 - kind: conda name: yaml version: 0.2.5 @@ -9962,64 +10713,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 @@ -10078,18 +10829,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 18ecbf7803..8f6f1771af 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,26 +8,25 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -36,49 +35,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,74 +103,79 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -176,66 +184,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -244,50 +252,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -295,6 +306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -309,74 +321,79 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -385,65 +402,65 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -452,47 +469,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -500,7 +521,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -512,70 +534,75 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -584,41 +611,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -670,27 +698,28 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 - build: pyhd8ed1ab_0 + version: 2.4.4 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -705,16 +734,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -729,16 +758,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -753,197 +782,181 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb - depends: - - python >=3.8 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -951,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1048,294 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.5 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.5 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.5 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1436,95 +1449,94 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.7 + build: h318f0b1_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + version: 0.29.7 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + version: 0.29.7 + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + version: 1.11.458 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1532,54 +1544,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h8f08b23_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + version: 1.11.458 + build: hac138a2_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + version: 1.11.458 + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1982,47 +1995,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -2129,187 +2144,195 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2323,8 +2346,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2346,17 +2369,65 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2410,19 +2481,20 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 - build: pyhff2d567_0 + version: 2024.10.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2539,51 +2611,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2607,87 +2682,83 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2699,24 +2770,24 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2733,20 +2804,35 @@ packages: size: 12282786 timestamp: 1720853454991 - kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_0 + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -2766,40 +2852,42 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -2901,6 +2989,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2933,6 +3068,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2993,32 +3172,34 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + version: 18.1.0 + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3026,43 +3207,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow - version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + version: 18.1.0 + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3070,25 +3249,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow - version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 + version: 18.1.0 + build: ha2aff55_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3105,7 +3284,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3113,190 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 578174 + timestamp: 1733607685962 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - - libarrow 18.0.0 hf19f309_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 561495 + timestamp: 1733607973097 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + version: 18.1.0 + build: h3644d33_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + version: 18.1.0 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + version: 18.1.0 + build: hf3d3107_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -3668,18 +3847,61 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4354,6 +4576,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4411,6 +4679,49 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4561,62 +4872,105 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + version: 18.1.0 + build: h34a048e_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + version: 18.1.0 + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1204859 + timestamp: 1733607834047 - kind: conda - name: libparquet - version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4774,97 +5128,95 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -4981,45 +5333,118 @@ packages: size: 324342 timestamp: 1727206096912 - kind: conda - name: libutf8proc - version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 - depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 101070 - timestamp: 1667316029302 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: h1a8c8d9_0 + name: libtiff + version: 4.7.0 + build: ha962b0a_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee - license: MIT - license_family: MIT - size: 103492 - timestamp: 1667316405233 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - libgcc-ng >=12 - license: MIT + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 370387 + timestamp: 1733443310502 +- kind: conda + name: libtiff + version: 4.7.0 + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 429018 + timestamp: 1733443013288 +- kind: conda + name: libtiff + version: 4.7.0 + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464857 + timestamp: 1733443105529 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h5505292_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 + license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 83000 + timestamp: 1732868631531 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 81526 + timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5091,6 +5516,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5122,60 +5645,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5230,19 +5755,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception - size: 281554 - timestamp: 1732102484807 + license_family: APACHE + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5290,27 +5816,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5320,16 +5848,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5338,16 +5867,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5357,87 +5887,89 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5450,25 +5982,27 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5481,25 +6015,27 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5512,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5532,40 +6068,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -5622,76 +6159,75 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -5802,6 +6338,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -5851,20 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -5879,6 +6469,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -5900,6 +6491,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -5920,63 +6512,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -5990,6 +6525,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6008,38 +6544,26 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - size: 81534 - timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - size: 19241 - timestamp: 1732081026829 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -6107,19 +6631,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -6195,102 +6719,175 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -6351,104 +6948,145 @@ packages: license_family: BSD size: 447369 timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + version: 18.1.0 + build: py312h1f38498_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + version: 18.1.0 + build: py312h7900ff3_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + version: 18.1.0 + build: py312h8025657_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -6460,73 +7098,75 @@ packages: - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.3 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6537,16 +7177,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6557,16 +7197,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6577,8 +7217,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -6599,18 +7239,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -6665,138 +7306,143 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -6814,34 +7460,36 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 - build: pyhff2d567_0 + version: 0.0.19 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7223,42 +7871,44 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -7349,109 +7999,116 @@ packages: timestamp: 1725632294079 - kind: conda name: setuptools - version: 75.5.0 - build: pyhff2d567_0 + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyh6c4a22f_0 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -7473,20 +8130,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -7535,39 +8193,39 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -7575,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -7596,100 +8254,98 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -7701,96 +8357,98 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer - version: 0.13.1 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.15.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b @@ -7806,65 +8464,66 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.0 + version: 0.32.1 build: pyh31011fe_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard - version: 0.32.0 + version: 0.32.1 build: h31011fe_1 build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -7921,13 +8580,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -7938,17 +8596,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -7959,17 +8616,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -7980,8 +8636,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: websockets version: '14.1' @@ -8035,58 +8691,144 @@ packages: timestamp: 1731498944076 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8127,43 +8869,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h9cdd2b7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 - kind: conda name: yaml version: 0.2.5 @@ -8209,64 +8914,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 @@ -8325,18 +9030,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/operators/my_complex.mojo b/examples/operators/my_complex.mojo index f13462dc26..bd4d03f275 100644 --- a/examples/operators/my_complex.mojo +++ b/examples/operators/my_complex.mojo @@ -55,7 +55,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -78,7 +78,7 @@ struct Complex( else: raise "index out of bounds" - fn __setitem__(inout self, idx: Int, value: Float64) raises: + fn __setitem__(mut self, idx: Int, value: Float64) raises: if idx == 0: self.re = value elif idx == 1: @@ -109,11 +109,11 @@ struct Complex( def __radd__(self, lhs: Float64) -> Self: return Self(self.re + lhs, self.im) - def __iadd__(inout self, rhs: Self): + def __iadd__(mut self, rhs: Self): self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64): + def __iadd__(mut self, rhs: Float64): self.re += rhs def __sub__(self, rhs: Self) -> Self: @@ -125,11 +125,11 @@ struct Complex( def __rsub__(self, lhs: Float64) -> Self: return Self(lhs - self.re, -self.im) - def __isub__(inout self, rhs: Self): + def __isub__(mut self, rhs: Self): self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64): + def __isub__(mut self, rhs: Float64): self.re -= rhs def __mul__(self, rhs: Self) -> Self: @@ -144,13 +144,13 @@ struct Complex( def __rmul__(self, lhs: Float64) -> Self: return Self(lhs * self.re, lhs * self.im) - def __imul__(inout self, rhs: Self): + def __imul__(mut self, rhs: Self): new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64): + def __imul__(mut self, rhs: Float64): self.re *= rhs self.im *= rhs @@ -168,14 +168,14 @@ struct Complex( denom = self.squared_norm() return Self((lhs * self.re) / denom, (-lhs * self.im) / denom) - def __itruediv__(inout self, rhs: Self): + def __itruediv__(mut self, rhs: Self): denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64): + def __itruediv__(mut self, rhs: Float64): self.re /= rhs self.im /= rhs diff --git a/examples/reduce.mojo b/examples/reduce.mojo index 8e213c6b86..9babfd91a0 100644 --- a/examples/reduce.mojo +++ b/examples/reduce.mojo @@ -17,7 +17,6 @@ # Reductions and scans are common algorithm patterns in parallel computing. from random import rand -from time import now from algorithm import sum from benchmark import Unit, benchmark, keep diff --git a/magic.lock b/magic.lock index f0daecd646..23716422b9 100644 --- a/magic.lock +++ b/magic.lock @@ -8,26 +8,25 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -36,49 +35,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,75 +103,80 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -177,66 +185,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -245,50 +253,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -296,6 +307,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -310,75 +322,80 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -387,65 +404,65 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -454,47 +471,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -502,7 +523,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -514,71 +536,76 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -587,41 +614,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -673,27 +701,28 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 - build: pyhd8ed1ab_0 + version: 2.4.4 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -708,16 +737,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -732,16 +761,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -756,197 +785,181 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb - depends: - - python >=3.8 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -954,8 +967,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1051,294 +1064,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.5 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.5 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.5 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1439,95 +1452,94 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.7 + build: h318f0b1_3 + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + version: 0.29.7 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + version: 0.29.7 + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + version: 1.11.458 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1535,54 +1547,55 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h8f08b23_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + version: 1.11.458 + build: hac138a2_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + version: 1.11.458 + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -1985,47 +1998,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -2132,187 +2147,195 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2326,8 +2349,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2349,17 +2372,65 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2413,19 +2484,20 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 - build: pyhff2d567_0 + version: 2024.10.0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2542,51 +2614,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2610,87 +2685,83 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2702,24 +2773,24 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2736,20 +2807,35 @@ packages: size: 12282786 timestamp: 1720853454991 - kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_0 + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -2769,40 +2855,42 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -2904,6 +2992,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2936,6 +3071,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2996,32 +3175,34 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + version: 18.1.0 + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3029,43 +3210,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow - version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + version: 18.1.0 + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3073,25 +3252,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow - version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 + version: 18.1.0 + build: ha2aff55_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3108,7 +3287,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3116,190 +3295,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 578174 + timestamp: 1733607685962 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - - libarrow 18.0.0 hf19f309_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + version: 18.1.0 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + version: 18.1.0 + build: h512cd83_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 561495 + timestamp: 1733607973097 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + version: 18.1.0 + build: h3644d33_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + version: 18.1.0 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + version: 18.1.0 + build: hf3d3107_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -3671,18 +3850,61 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4357,6 +4579,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4414,6 +4682,49 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4564,62 +4875,105 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + version: 18.1.0 + build: h34a048e_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + version: 18.1.0 + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 + depends: + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 +- kind: conda + name: libparquet + version: 18.1.0 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1204859 + timestamp: 1733607834047 - kind: conda - name: libparquet - version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4777,97 +5131,95 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -4984,45 +5336,118 @@ packages: size: 324342 timestamp: 1727206096912 - kind: conda - name: libutf8proc - version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 - depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 101070 - timestamp: 1667316029302 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: h1a8c8d9_0 + name: libtiff + version: 4.7.0 + build: ha962b0a_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee - license: MIT - license_family: MIT - size: 103492 - timestamp: 1667316405233 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - libgcc-ng >=12 + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 370387 + timestamp: 1733443310502 +- kind: conda + name: libtiff + version: 4.7.0 + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 429018 + timestamp: 1733443013288 +- kind: conda + name: libtiff + version: 4.7.0 + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464857 + timestamp: 1733443105529 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h5505292_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 83000 + timestamp: 1732868631531 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 81526 + timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5094,6 +5519,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5125,60 +5648,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5233,34 +5758,35 @@ packages: timestamp: 1727963148474 - kind: conda name: lit - version: 19.1.4 + version: 19.1.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda - sha256: 89dfa22c04e6b781ae0e872a8202ccd7994a670493a89d3fb086348438386a89 - md5: 5ece98668bcee7bfc23d4b214a5a8bb4 + url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + sha256: 07854df4ab39a333155b4813338caf8e0f6fe5a9abc84518d9409aa5cd91f94c + md5: ad3f4f4e25b666610c281c6fb92f06f9 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128424 - timestamp: 1732065621077 + size: 128621 + timestamp: 1733310809397 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception - size: 281554 - timestamp: 1732102484807 + license_family: APACHE + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5308,27 +5834,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5338,16 +5866,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5356,16 +5885,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5375,87 +5905,89 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5468,25 +6000,27 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5499,25 +6033,27 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* + - pillow - fastapi + - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5530,17 +6066,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5550,40 +6086,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -5640,76 +6177,75 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -5820,6 +6356,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -5869,20 +6458,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -5897,6 +6487,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -5918,6 +6509,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -5938,63 +6530,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6008,6 +6543,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6026,38 +6562,26 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - size: 81534 - timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - size: 19241 - timestamp: 1732081026829 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -6125,19 +6649,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -6213,102 +6737,175 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -6369,104 +6966,145 @@ packages: license_family: BSD size: 447369 timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + version: 18.1.0 + build: py312h1f38498_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + version: 18.1.0 + build: py312h7900ff3_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + version: 18.1.0 + build: py312h8025657_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -6478,73 +7116,75 @@ packages: - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.3 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6555,16 +7195,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6575,16 +7215,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6595,8 +7235,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -6617,18 +7257,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -6683,138 +7324,143 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -6832,34 +7478,36 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 - build: pyhff2d567_0 + version: 0.0.19 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7241,42 +7889,44 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -7367,109 +8017,116 @@ packages: timestamp: 1725632294079 - kind: conda name: setuptools - version: 75.5.0 - build: pyhff2d567_0 + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyh6c4a22f_0 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -7491,20 +8148,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -7553,39 +8211,39 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -7593,16 +8251,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.3 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -7614,100 +8272,98 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -7719,96 +8375,98 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer - version: 0.13.1 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.15.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b @@ -7824,65 +8482,66 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn - version: 0.32.0 + version: 0.32.1 build: pyh31011fe_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard - version: 0.32.0 + version: 0.32.1 build: h31011fe_1 build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -7939,13 +8598,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -7956,17 +8614,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -7977,17 +8634,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -7998,8 +8654,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: websockets version: '14.1' @@ -8053,58 +8709,144 @@ packages: timestamp: 1731498944076 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8145,43 +8887,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h9cdd2b7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 - kind: conda name: yaml version: 0.2.5 @@ -8227,64 +8932,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 @@ -8343,18 +9048,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/proposals/improved-hash-module.md b/proposals/improved-hash-module.md index c2f9c460fb..ee2bd138f5 100644 --- a/proposals/improved-hash-module.md +++ b/proposals/improved-hash-module.md @@ -62,16 +62,16 @@ of the `Hashable` trait. ```mojo trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -93,13 +93,13 @@ Below you can see a dummy implementation of a `DefaultHasher` struct DefaultHasher(Hasher): var hash: UInt64 - fn __init__(inout self): + fn __init__(out self): self.hash = 42 - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: return self.hash.cast[dt]() @@ -112,7 +112,7 @@ data flow paradigm instead of call return. ```mojo trait Hashable: - fn hash_with[H: Hasher](self, inout hasher: H): + fn hash_with[H: Hasher](self, mut hasher: H): ... ``` @@ -128,7 +128,7 @@ struct Person(Hashable): var name: String var age: Int - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) ``` @@ -155,21 +155,21 @@ from random import random_si64 trait Hashable: """Trait which every hashable type needs to implement.""" - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): ... trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -184,7 +184,7 @@ struct MyInt(Hashable): var value: Int @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher._update_with_simd(Int64(self.value)) @value @@ -193,7 +193,7 @@ struct MyString(Hashable): var value: StringLiteral @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(MyInt(len(self.value))) hasher._update_with_bytes(self.value.data().bitcast[DType.uint8](), len(self.value)) @@ -203,7 +203,7 @@ struct Person(Hashable): var name: MyString var age: MyInt - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) @@ -235,7 +235,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): var secret: UInt64 @always_inline - fn __init__(inout self): + fn __init__(out self): self.hash_data = 5361 @parameter if custom_secret != 0: @@ -244,13 +244,13 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.secret = _DJBX33A_SECRET() @always_inline - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """The algorithm is not optimal.""" for i in range(n): self.hash_data = self.hash_data * 33 + bytes.load(i).cast[DType.uint64]() @always_inline - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """The algorithm is not optimal.""" alias size_in_bytes = size * dt.sizeof() var bytes = bitcast[DType.uint8, size_in_bytes](value) @@ -259,7 +259,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.hash_data = self.hash_data * 33 + bytes[i].cast[DType.uint64]() @always_inline - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): value.__hash__(self) @always_inline diff --git a/proposals/opt-in-implicit-conversion.md b/proposals/opt-in-implicit-conversion.md index ea3858da06..e2d7dc7e81 100644 --- a/proposals/opt-in-implicit-conversion.md +++ b/proposals/opt-in-implicit-conversion.md @@ -69,7 +69,7 @@ let foo: Foo = 10 ```python struct Foo: @implicit_conversion - fn __init__(inout self, i: Int): + fn __init__(out self, i: Int): pass var foo: Foo = 10 diff --git a/proposals/remove-let-decls.md b/proposals/remove-let-decls.md index ec09b19359..34f8eb3b7c 100644 --- a/proposals/remove-let-decls.md +++ b/proposals/remove-let-decls.md @@ -68,7 +68,7 @@ a great way to define defaulted field values, e.g.: struct Thing: # This is not actually supported right now, but imagine it were. let field = 42 - fn __init__(inout self): + fn __init__(out self): self.field = 17 # shouldn't be able to overwrite field? ``` diff --git a/proposals/stdlib-insider-docs.md b/proposals/stdlib-insider-docs.md new file mode 100644 index 0000000000..1bf0abfef2 --- /dev/null +++ b/proposals/stdlib-insider-docs.md @@ -0,0 +1,136 @@ +# Stdlib Insider Docs + +Owen Hilyard, Created November 17, 2024 + +**Status**: Initial Proposal + +## Motivation + +For most languages, people who work on the standard library have the ability +to look inside of the compiler to clarify questions they have about the +semantics of particular operations or compiler builtins. For Mojo, that is +not the case for many people working on the standard library. As a result, +the exact semantics of some important compiler builtins, such as +`lit.ownership.mark_destroyed`, are not fully known to a large number of +people working on the standard library. For example, the fact that +`lit.ownership.mark_destroyed` still runs the destructors of fields was a +surprise to many at the stdlib meeting. This creates issues where Modular +employees have to catch misuses. These language-internal dialects are, like +Mojo itself, subject to enhancements, breaking changes, and even complete +removal. This presents a problem since the stdlib is correctness-critical code, +and when people who don't understand the API contract of a construct use it +in correctness-critical code, issues are bound to happen. + +## Proposal + +In order to help address this, I propose the creation of a "stdlib insider" +document, which contains information on MLIR operations/types, WIP features and +other parts of the language which are either intended to only be used in the +standard library/MAX drivers or language features which are still subject to +change and evolution. This can be substantially less polished than the Mojo +manual, including "X is like Y in C++ but ...", links to academic +papers, links to LLVM docs, pseudocode, and other ways one might explain a +concept to a colleague. This document, likely maintained as a markdown file in +/docs, is intended to be internally facing to core Mojo developers. This means +that a large "everything in here is subject to being totally rewritten in a +bugfix release or security update, do not use outside of the standard library +or MAX" warning, which will hopefully dissuade people from using what is +documented there in ways that will get them stuck on old Mojo versions. + +For MLIR operations, I'd like the following information documented +for each operation used in the standard library; Operation name, +arguments (potentially as Mojo function syntax), a description of the +operation, pre-conditions, post-conditions, and clear hazards. Clear hazards +would ways in which the operation can cause UB (ex: is what happens with a +null pointer well defined?), conditions under which the operation will force +the program to abort or other like "`lit.ownership.mark_destroyed` +still runs the destructors of fields" which may be surprising behavior. + +For MLIR types, information about what a type is intended to do, what +parameters the type has (and their types), the size of the instantiated type +(for alignment), and any non-trivialities in the type (is it ok to copy/move +it?). MLIR attributes should have similar information. + +For features, a short description of what the feature is intended for, and +then syntax examples that show the capabilities of the feature. Ideally, some +differentiation between the design and the current implementation should be +present, slowly moving parts of the documentation over as they are available +on nightly. Documenting known sharp edges or limitations is also helpful, for +instance if trait objects could only represent a single trait (ex: no Movable +\+ Copyable + Formattable trait) or if some part of the implementation has a +high time or space complexity (ex: O(N^2) compile time overhead in the number +of traits in a trait object). + +## Current State + +At present, the majority of MLIR operations are things which I think +are reasonable to explain with a link to LLVM or C++ docs. For example, `pop.max` +is mostly self-explanatory, so unless there are extra semantics I don't +think it really needs more of an explanation than "see C++ std::max". + +What I consider the important things to document: + +### `pop.external_call` + +Lots of people want to call into OpenSSL to get basic HTTPS working, and that +needs to be done correctly. There's also a lot of ABI issues around this, +for instance whether Mojo structs are C layout (for now) or whether we need +a mechanism to force that behavior. + +### `co.*` + +This area is WIP, but some community discussion around the direction would be +helpful. Information about the API of each of the types would also be nice +since it looks like we would need to use MLIR to implement future combinators +like Rust's `FuturesUnordered`. Documentation around synchronization +requirements is also important for correctness as people move towards async io. + +### `#kgen.param.expr LLVM type conversions, +Documenting limitations is also helpful, for instance, can is `@call` ok to +use? Can I directly write phi nodes? I had a lot of difficulty interacting +with anything that returns a `!llvm.struct` or `!llvm.vec`. + +### `pop.inline_asm` + +A lot of CPU functionality doesn't have LLVM intrinsics and we'll need to use +assembly (CPU time stamp counters, poking MSRs for runtime capability +discovery, etc). I personally ran into difficulties doing multiple return +(ex: x86 `cpuid` returns results in 4 registers). Information on the asm +dialect, how to create clobbers and scratch registers, and rules for control +flow (ex: can I implement computed gotos, jump into the middle of a function or +return from the current function?). + +### `!lit.origin.set` + +This is used in Coroutines (presumably to store capture origins), but it looks +like it may be useful for storing collections of references. + +### The backing allocator(s) for `pop.aligned_alloc` and `pop.global_alloc` + +Time spent in GDB has led me to believe this is tcmalloc, but knowing for +sure means we have information like the minimum alignment the allocator will +provide (storing information in the lower bits), what kind of caching it does, +information about how it handles memory overcommit being off (db servers), and +what kind of instrumentation we might have access to. diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 42ab4732f0..2a302ec80f 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -15,6 +15,7 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from algorithm import elementwise from benchmark import Bench, BenchConfig, Bencher, BenchId from buffer import Buffer @@ -22,11 +23,11 @@ from buffer import Buffer from utils.index import Index, IndexList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark elementwise -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_elementwise[n: Int](inout b: Bencher) raises: +fn bench_elementwise[n: Int](mut b: Bencher) raises: var vector = Buffer[DType.index, n].stack_allocation() for i in range(len(vector)): diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index 5a469936f8..2d65c690c3 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -17,11 +17,11 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_stringify_small_integers(inout b: Bencher) raises: +fn bench_stringify_small_integers(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -32,9 +32,9 @@ fn bench_stringify_small_integers(inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_stringify_small_integers]( diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 57bfcc9e5b..a44fc3a150 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -14,26 +14,27 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, Bencher, BenchId, keep, BenchConfig, Unit, run -from memory import UnsafePointer from random import * + +from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run +from memory import UnsafePointer from stdlib.builtin.sort import ( - sort, - _small_sort, - _insertion_sort, _heap_sort, + _insertion_sort, + _small_sort, _SortWrapper, + sort, ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn randomize_list[ dt: DType -](inout list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): +](mut list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): @parameter if dt.is_integral(): randint(list.data, size, 0, int(max)) @@ -45,7 +46,7 @@ fn randomize_list[ @always_inline -fn insertion_sort[type: DType](inout list: List[Scalar[type]]): +fn insertion_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -56,7 +57,7 @@ fn insertion_sort[type: DType](inout list: List[Scalar[type]]): @always_inline -fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): +fn small_sort[size: Int, type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -67,7 +68,7 @@ fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): @always_inline -fn heap_sort[type: DType](inout list: List[Scalar[type]]): +fn heap_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -77,19 +78,19 @@ fn heap_sort[type: DType](inout list: List[Scalar[type]]): _heap_sort[_less_than](list) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a tiny list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: +fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: alias small_list_size = 5 @parameter for count in range(2, small_list_size + 1): @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -108,7 +109,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_small_sort(inout b: Bencher) raises: + fn bench_small_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -127,7 +128,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -156,14 +157,14 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a small list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -182,7 +183,7 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -208,14 +209,14 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a large list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -234,7 +235,7 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -261,16 +262,14 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with low delta lists -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -fn bench_low_cardinality_list_sort( - inout m: Bench, count: Int, delta: Int -) raises: +fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) @@ -289,7 +288,7 @@ fn bench_low_cardinality_list_sort( _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) @@ -315,9 +314,9 @@ fn bench_low_cardinality_list_sort( ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index d8c782846e..e93406f837 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -14,19 +14,19 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. +from collections import Dict, Optional +from collections.dict import DictEntry +from math import ceil from random import * +from sys import sizeof from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from sys import sizeof from bit import bit_ceil -from math import ceil -from collections import Dict, Optional -from collections.dict import DictEntry -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_dict[size: Int]() -> Dict[Int, Int]: var d = Dict[Int, Int]() for i in range(0, size): @@ -34,11 +34,11 @@ fn make_dict[size: Int]() -> Dict[Int, Int]: return d -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_dict_init(inout b: Bencher) raises: +fn bench_dict_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -50,11 +50,11 @@ fn bench_dict_init(inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Insert -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_dict_insert[size: Int](inout b: Bencher) raises: +fn bench_dict_insert[size: Int](mut b: Bencher) raises: """Insert 100 new items.""" var items = make_dict[size]() @@ -68,11 +68,11 @@ fn bench_dict_insert[size: Int](inout b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Lookup -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_dict_lookup[size: Int](inout b: Bencher) raises: +fn bench_dict_lookup[size: Int](mut b: Bencher) raises: """Lookup 100 items.""" var items = make_dict[size]() var closest_divisor = ceil(100 / size) @@ -96,9 +96,9 @@ fn bench_dict_lookup[size: Int](inout b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Memory Footprint -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn total_bytes_used(items: Dict[Int, Int]) -> Int: @@ -121,9 +121,9 @@ fn total_bytes_used(items: Dict[Int, Int]) -> Int: return amnt_bytes -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index be397e082e..3cee895b73 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -14,18 +14,20 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from random import random_si64, seed -from pathlib import _dir_of_current_file -from collections import Optional, Dict -from os import abort +from collections import Dict, Optional from collections.string import String +from os import abort +from pathlib import _dir_of_current_file +from random import random_si64, seed + +from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run + from utils._utf8_validation import _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_string[ length: UInt = 0 ](filename: StringLiteral = "UN_charter_EN.txt") -> String: @@ -59,11 +61,11 @@ fn make_string[ return abort[String]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_string_init(inout b: Bencher) raises: +fn bench_string_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -74,15 +76,15 @@ fn bench_string_init(inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_count[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: StringLiteral = "a", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -95,15 +97,15 @@ fn bench_string_count[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string split -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_split[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: Optional[StringLiteral] = None, -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -122,13 +124,13 @@ fn bench_string_split[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string splitlines -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_splitlines[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -141,13 +143,13 @@ fn bench_string_splitlines[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string lower -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_lower[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -160,13 +162,13 @@ fn bench_string_lower[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string upper -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_upper[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -179,16 +181,16 @@ fn bench_string_upper[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string replace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_replace[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", old: StringLiteral = "a", new: StringLiteral = "A", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -201,13 +203,13 @@ fn bench_string_replace[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_is_valid_utf8[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".html") @always_inline @@ -220,9 +222,9 @@ fn bench_string_is_valid_utf8[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=5)) diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 1f4f93c0cc..6d2ba54044 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -14,20 +14,21 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, BenchConfig, Bencher, BenchId -from bit import byte_swap, rotate_bits_left -from memory import UnsafePointer -from hashlib.hash import hash as old_hash from hashlib._ahash import ( + MULTIPLE, + ROT, + U128, + U256, AHasher, _folded_multiply, _read_small, - U256, - U128, - MULTIPLE, - ROT, ) from hashlib._hasher import _hash_with_hasher +from hashlib.hash import hash as old_hash + +from benchmark import Bench, BenchConfig, Bencher, BenchId +from bit import byte_swap, rotate_bits_left +from memory import UnsafePointer # Source: https://www.101languages.net/arabic/most-common-arabic-words/ alias words_ar = """ @@ -48,7 +49,7 @@ alias words_ar = """ تحت, الأشياء, معه, يريد, أننا, أنظر, لما, اعرف, إلي, ثلاثة, انتظر, الرجال, الذين, حصلت, أني, سعيد, لابد, عزيزتي, الشيء, فكرة, انهم, الله, الباب, سيدى, دائما, رأيت, مشكلة, استطيع, تكن, تذهب, ليلة, شيئ, أظن, طوال, - جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, + جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, أعني, لدى, بهذه, أحب, سنوات, بأس, الأفضل, بالنسبة, أنتم, عظيم, يقول, جميلة, جون, جاك, بسبب, الوحيد, أمر, بل, بالفعل, الشخص, الي, دعني, خارج, اجل, الخير, ــ, حالك, للغاية, فحسب, كانوا, أردت, فتاة, بشأن, يعني, كبيرة, ترى, آسفة, دقيقة, أنهم, يستطيع, احد, بأنك, تعمل, @@ -79,7 +80,7 @@ alias words_ar = """ غدا, ظننت, ولن, المرأة, لهذه, تحرك, يهم, تبقى, الطبيب, اسم, انظري, تبا, أتذكر, فترة, ساعات, تفكر, تحصل, بأي, النقود, لعبة, زوجتي, الكلام, ستفعل, أسف, فهو, الملك, مدينة, بكم, الوحيدة, أمام, عدد, اخرج, بول, سأعود, جئت, لأني, تحدث, السلامة, الماضية, أمك, اعتقدت, مره, مساء, بطريقة, الرب, ابدا, أهذا, وفي, وكل, أتيت, منكم, - انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, + انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, ارجوك, المسيح, جاء, كهذا, سنذهب, تعالى, إثنان, فعلا, حتي, سيحدث, الجيد, وشك, القادم, معرفة, صورة, أعود, اسمي, طلب, آنسة, الثانية, فقدت, حفلة, تنظر, مثير, اننى, وصلت, أنتظر, السماء, يقولون, الهراء, معهم, ابي, وعندما, مجموعة, العاهرة, ماري, حسن, الزواج, نحو, دعيني, الجديدة, مهم, أمس, اتصل, ابتعد, هراء, ستة, @@ -90,7 +91,7 @@ alias words_ar = """ الدخول, جين, امرأة, متأكدة, هيه, تخبرني, مدى, إلهى, احب, عما, نرى, بيننا, تعيش, قتلت, الأحمق, تشارلي, بيل, عليكم, سؤال, طلبت, الهواء, وهذه, صوت, انتم, ميلاد, ماكس, - تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, + تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, بضعة, المناسب, المنطقة, قم, بالداخل, البداية, لأجل, زوجتك, مقابل, يحب, هاري, ممتاز, قريبا, سنكون, فعلته, بتلك, التفكير, أسفل, للعمل, العجوز, امي, الكلب, انتظري, مازال, إننا, اشعر, الجيش, شرطة """ @@ -255,13 +256,13 @@ alias words_he = """ לגרום, המשחק, שרה, לעצמך, במיוחד, המשטרה, צוות, אחזור, שאמרתי, גברים, קורא, בראש, רחוק, למקום, לשלם, להפסיק, מיוחד, הז, שמו, שמחה, כיף, אגיד, למי, ניתן, מאחורי, תמשיך, כיצד, להוציא, מתים, כולכם, אצל, חבל, האישה, לעצמי, גברתי, תוכלי, רואים, דוד, להציל, שצריך, - בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, + בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, עזוב, יצא, נתן, שניות, בעיר, סי, חשבת, שאלות, אלינו, ידע, תנו, לשים, שאולי, בכך, יכולת, אן, היד, שאוכל, מין, דקה, לדאוג, שמה, תרצה, ראה, הצילו, נוסף, החרא, אופן, כשהוא, צעיר, הפה, עולה, עובדת, שמך, לתפוס, נמצאת, כלבה, האקדח, עדיף, הטלפון, טום, פול, חכו, קר, תלך, במקרה, יעשה, שניכם, הארי, זוז, יקירתי, בהצלחה, לשבת, אנא, דין, מכיוון, יד, הקטנה, לבן, בנו, בעצמי, יין, תוריד, - למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, + למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, רד, אחורה, איכפת, איתם, ממנה, חם, מבקש, שש, מידע, השנה, אכן, אהבתי, בשעה, בסוף, שקרה, לכו, אליה, לבחור, תחשוב, ספק, המים, הפנים, לכולם, תדאגי, קחי, שתוק, לברוח, מתוק, ארלי, התיק, שים, מישהי, לקרות, לטפל, לחפש, הידיים, ח, במצב, ואל @@ -269,313 +270,313 @@ alias words_he = """ # Source: https://www.101languages.net/latvian/most-common-latvian-words/ alias words_lv = """ - ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, - mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, - mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, - būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, - šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, - zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, - nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, - šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, - kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, - vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, - laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, - ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, - iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, - laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, - tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, - tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, - visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, - tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, - pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, - līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, - sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, - tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, - pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, - visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, - vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, - beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, - zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, - cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, - nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, - abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, - pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, - acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, - bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, - nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, - piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, - dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, - sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, - viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, - nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, - pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, - tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, - aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, - tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, - satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, - šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, - jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, - daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, - prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, - dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, - vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, - problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, - mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, - karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, - ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, - istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, - braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, - dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, - pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, - vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, - lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, - spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, - bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, - klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, - kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, - nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, - manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, - jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, - mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, - donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, - kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, - spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, - darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, - veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, - daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, - dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, - svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, - mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, - bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, + ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, + mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, + mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, + būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, + šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, + zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, + nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, + šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, + kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, + vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, + laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, + ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, + iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, + laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, + tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, + tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, + visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, + tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, + pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, + līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, + sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, + tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, + pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, + visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, + vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, + beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, + zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, + cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, + nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, + abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, + pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, + acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, + bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, + nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, + piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, + dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, + sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, + viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, + nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, + pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, + tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, + aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, + tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, + satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, + šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, + jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, + daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, + prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, + dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, + vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, + problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, + mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, + karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, + ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, + istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, + braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, + dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, + pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, + vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, + lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, + spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, + bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, + klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, + kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, + nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, + manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, + jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, + mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, + donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, + kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, + spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, + darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, + veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, + daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, + dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, + svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, + mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, + bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, grāmatas, diemžēl, tevī, kļūt, endij, patika, nabaga, tuvojas, tēvoci, dienām, plāns """ # Source: https://www.101languages.net/polish/most-common-polish-words/ alias words_pl = """ -nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, -tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, -teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, -bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, -nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, -możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, -zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, -dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, -mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, -was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, -myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, -powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, -wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, -dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, -sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, -tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, -przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, -później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, -życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, -widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, -znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, -nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, -wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, -nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, -mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, -byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, -oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, -powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, -dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, -panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, -nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, -swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, -musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, -podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, -swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, -parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, -gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, -dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, -sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, -chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, -chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, -szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, -ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, -mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, -brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, -mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, -strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, -wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, -potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, -spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, -chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, -napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, -jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, -nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, -robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, -leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, -miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, -pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, -dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, -dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, -myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, -nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, -słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, -będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, -mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, -musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, -trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, -znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, -włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, -strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, +nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, +tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, +teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, +bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, +nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, +możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, +zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, +dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, +mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, +was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, +myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, +powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, +wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, +dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, +sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, +tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, +przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, +później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, +życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, +widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, +znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, +nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, +wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, +nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, +mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, +byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, +oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, +powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, +dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, +panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, +nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, +swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, +musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, +podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, +swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, +parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, +gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, +dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, +sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, +chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, +chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, +szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, +ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, +mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, +brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, +mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, +strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, +wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, +potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, +spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, +chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, +napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, +jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, +nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, +robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, +leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, +miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, +pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, +dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, +dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, +myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, +nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, +słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, +będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, +mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, +musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, +trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, +znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, +włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, +strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, proste, zacząć, myśl, wstawaj, rany, prawdziwe, takiej, jakiegoś, umrzeć, złego, okazji """ # Source: https://www.101languages.net/greek/most-common-greek-words/ alias words_el = """ - να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, - από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, - πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, - έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, - ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, - σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, - ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, - όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, - έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, - μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, - καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, - μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, - γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, + να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, + από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, + πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, + έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, + ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, + σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, + ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, + όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, + έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, + μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, + καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, + μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, + γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, πρόβλημα, άλλη, είπες, φυσικά, κάποιον, όσο, πήγαινε, πάλι, λάθος, ως, έχετε, εσένα, πράγμα, κυρία, - χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, - ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, - αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, - χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, - μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, - σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, - ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, - κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, - ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, - τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, - νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, - κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, - κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, - νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, - κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, - τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, - αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, - γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, - θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, - καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, - σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, - δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, - είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, - τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, - ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, - κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, - τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, - δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, - υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, - κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, - μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, - βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, - πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, - φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, - κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, - σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, - μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, - κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, - σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, - σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, - μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, - είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, - πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, - φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, - είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, - μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, - ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, - συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, - χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, - τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, - μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, - αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, - κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, - λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, - φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, - βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, - γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, - παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, - νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, + χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, + ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, + αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, + χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, + μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, + σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, + ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, + κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, + ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, + τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, + νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, + κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, + κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, + νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, + κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, + τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, + αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, + γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, + θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, + καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, + σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, + δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, + είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, + τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, + ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, + κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, + τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, + δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, + υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, + κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, + μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, + βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, + πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, + φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, + κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, + σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, + μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, + κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, + σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, + σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, + μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, + είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, + πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, + φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, + είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, + μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, + ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, + συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, + χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, + τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, + μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, + αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, + κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, + λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, + φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, + βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, + γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, + παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, + νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, βρες, τού """ # Source: https://www.101languages.net/russian/most-common-russian-words/ alias words_ru = """ -я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, -за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, -вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, -быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, -знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, -сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, -тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, -сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, -такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, -им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, -боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, -эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, -папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, -снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, -простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, -думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, -именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, -будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, -нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, -скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, -работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, -самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, -вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, -собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, -плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, -опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, -машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, -убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, -видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, -кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, -сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, -проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, -ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, -насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, -вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, -момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, -конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, -долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, -какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, -смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, -ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, -далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, -пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, -места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, -других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, -помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, -дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, -обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, -бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, -слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, -чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, -двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, -сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, -помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, -делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, -минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, -всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, -клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, -настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, -твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, -благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, -абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, -обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, -крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, -хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, -повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, -звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, -профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, -историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, -говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, -you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, +я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, +за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, +вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, +быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, +знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, +сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, +тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, +сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, +такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, +им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, +боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, +эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, +папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, +снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, +простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, +думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, +именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, +будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, +нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, +скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, +работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, +самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, +вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, +собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, +плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, +опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, +машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, +убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, +видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, +кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, +сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, +проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, +ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, +насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, +вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, +момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, +конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, +долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, +какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, +смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, +ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, +далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, +пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, +места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, +других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, +помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, +дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, +обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, +бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, +слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, +чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, +двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, +сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, +помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, +делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, +минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, +всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, +клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, +настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, +твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, +благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, +абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, +обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, +крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, +хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, +повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, +звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, +профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, +историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, +говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, +you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, волосы, последние, брата, месяца """ @@ -585,7 +586,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(",") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) @@ -594,11 +595,11 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_small_keys[s: String](inout b: Bencher) raises: +fn bench_small_keys[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -612,7 +613,7 @@ fn bench_small_keys[s: String](inout b: Bencher) raises: @parameter -fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_small_keys_new_hash_function[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -626,7 +627,7 @@ fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key[s: String](inout b: Bencher) raises: +fn bench_long_key[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -637,7 +638,7 @@ fn bench_long_key[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_long_key_new_hash_function[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -647,9 +648,9 @@ fn bench_long_key_new_hash_function[s: String](inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_small_keys[words_ar]](BenchId("bench_small_keys_ar")) diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index 1ba4175a74..3e17eaf282 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -19,9 +19,9 @@ from random import * from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias input_type = Float32 @@ -54,15 +54,15 @@ fn make_int_inputs(begin: Int, end: Int, num: Int) -> List[Int]: var inputs = make_inputs(0, 10_000, 1_000_000) var int_inputs = make_int_inputs(0, 10_000_000, 1_000_000) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark math_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math[ math_f1p: fn[type: DType, size: Int] (SIMD[type, size]) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -73,15 +73,15 @@ fn bench_math[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark fma -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math3[ math_f3p: fn[type: DType, size: Int] ( SIMD[type, size], SIMD[type, size], SIMD[type, size] ) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -92,11 +92,11 @@ fn bench_math3[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark lcm/gcd -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](inout b: Bencher) raises: +fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -107,9 +107,9 @@ fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 83c4c44e82..12896f3c91 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -15,22 +15,23 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_writer_int[n: Int](inout b: Bencher) raises: +fn bench_writer_int[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -42,7 +43,7 @@ fn bench_writer_int[n: Int](inout b: Bencher) raises: @parameter -fn bench_writer_simd[n: Int](inout b: Bencher) raises: +fn bench_writer_simd[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -53,9 +54,9 @@ fn bench_writer_simd[n: Int](inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_writer_int[42]](BenchId("bench_writer_int_42")) diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 6fd0b16a89..777557784e 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -15,16 +15,17 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from memory import memcmp, bitcast, UnsafePointer, pack_bits +from memory import UnsafePointer, bitcast, memcmp, pack_bits from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# var haystack = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sed dictum est, et finibus ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam tincidunt vel lacus vitae pulvinar. Donec ac ligula elementum, mollis purus a, lacinia quam. Maecenas vulputate mauris quis sem euismod sollicitudin. Proin accumsan nulla vel nisl congue varius. Morbi a erat dui. Aliquam maximus interdum orci, vitae pretium lorem bibendum non. Vestibulum eu lacus ullamcorper, egestas dui vel, pharetra ipsum. Pellentesque sagittis, urna a tincidunt sodales, leo sem placerat eros, vitae molestie felis diam at dolor. Donec viverra sem sit amet facilisis laoreet. Morbi semper convallis nisi, vitae congue velit tincidunt vel. Fusce ultrices, libero vel venenatis placerat, justo tellus porttitor massa, at volutpat tortor nunc id dui. Morbi eu ex quis odio porttitor ultricies vel eget massa. Aenean quis luctus nulla. Fusce sit amet leo at quam hendrerit mattis. Morbi sed quam nisl. Quisque purus enim, iaculis sed laoreet vel, pellentesque ut orci. Vivamus risus orci, varius eu pharetra quis, tincidunt non enim. Suspendisse bibendum lacus ex, quis blandit lectus malesuada a. Maecenas iaculis porta lacus, sit amet tristique ante scelerisque non. Proin auctor elit in lacus dictum egestas. Pellentesque tincidunt justo sed vehicula blandit. Pellentesque vehicula facilisis tellus in viverra. @@ -142,9 +143,9 @@ Curabitur auctor volutpat diam vitae vehicula. Vivamus est arcu, efficitur nec i var needle = "school" # a word intentionally not in the test data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Baseline `_memmem` implementation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _memmem_baseline[ type: DType @@ -184,11 +185,11 @@ fn _memmem_baseline[ return UnsafePointer[Scalar[type]]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter -fn bench_find_baseline(inout b: Bencher) raises: +fn bench_find_baseline(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -203,7 +204,7 @@ fn bench_find_baseline(inout b: Bencher) raises: @parameter -fn bench_find_optimized(inout b: Bencher) raises: +fn bench_find_optimized(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -217,9 +218,9 @@ fn bench_find_optimized(inout b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_find_baseline](BenchId("find_baseline")) diff --git a/stdlib/docs/bencher/Bench.md b/stdlib/docs/bencher/Bench.md index 1e71a29c53..19133b572f 100644 --- a/stdlib/docs/bencher/Bench.md +++ b/stdlib/docs/bencher/Bench.md @@ -33,7 +33,7 @@ Defines the main Benchmark struct which executes a Benchmark and print result.
```mojo -__init__(inout self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) +__init__(out self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) ```
@@ -56,7 +56,7 @@ Constructs a Benchmark object based on specific configuration and mode.
```mojo -bench_with_input[T: AnyType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -66,7 +66,7 @@ Benchmarks an input function with input args of type AnyType. **Parameters:** - ​T (`AnyType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -83,7 +83,7 @@ Benchmarks an input function with input args of type AnyType.
```mojo -bench_with_input[T: AnyTrivialRegType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyTrivialRegType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -93,7 +93,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType. **Parameters:** - ​T (`AnyTrivialRegType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -112,7 +112,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType.
```mojo -bench_function[bench_fn: fn(inout Bencher) capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -121,7 +121,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) capturing -> None`): The function to be +- ​bench_fn (`fn(mut Bencher) capturing -> None`): The function to be benchmarked. **Args:** @@ -137,7 +137,7 @@ Benchmarks or Tests an input function.
```mojo -bench_function[bench_fn: fn(inout Bencher) raises capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) raises capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -146,7 +146,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) raises capturing -> None`): The function +- ​bench_fn (`fn(mut Bencher) raises capturing -> None`): The function to be benchmarked. **Args:** diff --git a/stdlib/docs/bencher/BenchConfig.md b/stdlib/docs/bencher/BenchConfig.md index cebb46f13f..8a83984d5e 100644 --- a/stdlib/docs/bencher/BenchConfig.md +++ b/stdlib/docs/bencher/BenchConfig.md @@ -48,7 +48,7 @@ frequency.
```mojo -__init__(inout self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) +__init__(out self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) ```
diff --git a/stdlib/docs/bencher/BenchId.md b/stdlib/docs/bencher/BenchId.md index e305f890fe..0d215bd972 100644 --- a/stdlib/docs/bencher/BenchId.md +++ b/stdlib/docs/bencher/BenchId.md @@ -30,7 +30,7 @@ execution.
-`__init__(inout self: Self, func_name: String, input_id: String)` +`__init__(out self: Self, func_name: String, input_id: String)`
@@ -47,7 +47,7 @@ Constructs a Benchmark Id object from input function name and Id phrase.
-`__init__(inout self: Self, func_name: String)` +`__init__(out self: Self, func_name: String)`
diff --git a/stdlib/docs/bencher/Bencher.md b/stdlib/docs/bencher/Bencher.md index 4270a7a714..91d68e80d8 100644 --- a/stdlib/docs/bencher/Bencher.md +++ b/stdlib/docs/bencher/Bencher.md @@ -30,7 +30,7 @@ Defines a Bencher struct which facilitates the timing of a target function.
-`__init__(inout self: Self, num_iters: Int)` +`__init__(out self: Self, num_iters: Int)`
@@ -48,7 +48,7 @@ Constructs a Bencher object to run and time a function.
-`iter[iter_fn: fn() capturing -> None](inout self: Self)` +`iter[iter_fn: fn() capturing -> None](mut self: Self)`
@@ -65,7 +65,7 @@ of times.
-`iter[iter_fn: fn() raises capturing -> None](inout self: Self)` +`iter[iter_fn: fn() raises capturing -> None](mut self: Self)`
@@ -85,7 +85,7 @@ of times.
-`iter_custom[iter_fn: fn(Int) capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) capturing -> Int](mut self: Self)`
@@ -101,7 +101,7 @@ Times a target function with custom number of iterations.
-`iter_custom[iter_fn: fn(Int) raises capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) raises capturing -> Int](mut self: Self)`
diff --git a/stdlib/docs/bencher/BenchmarkInfo.md b/stdlib/docs/bencher/BenchmarkInfo.md index 88eafec487..52b2922fa0 100644 --- a/stdlib/docs/bencher/BenchmarkInfo.md +++ b/stdlib/docs/bencher/BenchmarkInfo.md @@ -33,7 +33,7 @@ Defines a Benchmark Info struct to record execution Statistics.
-`__init__(inout self: Self, name: String, result: Report, elems: Optional[Int])` +`__init__(out self: Self, name: String, result: Report, elems: Optional[Int])`
diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md new file mode 100644 index 0000000000..b80fd03dca --- /dev/null +++ b/stdlib/docs/internal/README.md @@ -0,0 +1,16 @@ +## WARNING + +Everything in this file/directory is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Purpose + +This directory contains internal documentation for the implementation details +of the Mojo compiler, runtime, and stdlib. You must always reference the +current version of this documentation on the branch nightly before using the +operations or behavior documented within. Any new files should contain the +above warning. diff --git a/stdlib/docs/internal/mlir.md b/stdlib/docs/internal/mlir.md new file mode 100644 index 0000000000..ca0c174c4b --- /dev/null +++ b/stdlib/docs/internal/mlir.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## MLIR Documentation diff --git a/stdlib/docs/internal/runtime.md b/stdlib/docs/internal/runtime.md new file mode 100644 index 0000000000..6d4921138b --- /dev/null +++ b/stdlib/docs/internal/runtime.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Runtime Documentation diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index f1c135cf4f..82002c152c 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -111,9 +111,9 @@ structure of header comments separating the various kinds of methods that can be defined on structs. ```mojo -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # MyStruct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct MyStruct(Sized, Stringable): @@ -283,7 +283,7 @@ the same type: ```mojo struct MyStruct: # Invoked as `MyStruct(other)` - fn __init__(inout self, other: Self): + fn __init__(out self, other: Self): # do a deep copy of MyStruct ``` diff --git a/stdlib/scripts/check-docstrings.py b/stdlib/scripts/check-docstrings.py index eb4b180125..cdd5b02f98 100644 --- a/stdlib/scripts/check-docstrings.py +++ b/stdlib/scripts/check-docstrings.py @@ -31,7 +31,7 @@ def main(): ] result = subprocess.run(command, capture_output=True) if result.stderr or result.returncode != 0: - print(f"Docstring issue found in the stdlib: ") + print("Docstring issue found in the stdlib: ") print(result.stderr.decode()) sys.exit(1) diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index d867a91be5..74b8c31501 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -24,10 +24,12 @@ Instructions, ACM Transactions on the Web 12 (3), 2018. https://arxiv.org/abs/1704.00605 """ -from builtin.simd import _sub_with_saturation from collections import InlineArray from math.math import _compile_time_iota -from memory import memcpy, bitcast, UnsafePointer +from sys import llvm_intrinsic + +from memory import UnsafePointer, bitcast, memcpy + from utils import IndexList alias Bytes = SIMD[DType.uint8, _] @@ -211,7 +213,7 @@ fn store_incomplete_simd[ # TODO: Use Span instead of List as input when Span is easier to use @no_inline fn b64encode_with_buffers( - input_bytes: List[UInt8, _], inout result: List[UInt8, _] + input_bytes: List[UInt8, _], mut result: List[UInt8, _] ): alias simd_width = sys.simdbytewidth() alias input_simd_width = simd_width * 3 // 4 @@ -291,3 +293,13 @@ fn _rshift_bits_in_u16[shift: Int](input: Bytes) -> __type_of(input): var u16 = bitcast[DType.uint16, input.size // 2](input) var res = bit.rotate_bits_right[shift](u16) return bitcast[DType.uint8, input.size](res) + + +@always_inline +fn _sub_with_saturation[ + width: Int, // +](a: SIMD[DType.uint8, width], b: SIMD[DType.uint8, width]) -> SIMD[ + DType.uint8, width +]: + # generates a single `vpsubusb` on x86 with AVX + return llvm_intrinsic["llvm.usub.sat", __type_of(a)](a, b) diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 0bf4f2a3b9..6a9d585fb5 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -21,12 +21,14 @@ from base64 import b64encode from collections import List from sys import simdwidthof + import bit + from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -57,13 +59,13 @@ fn _ascii_to_value(char: String) -> Int: return -1 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # TODO: Use Span instead of List as input when Span is easier to use -fn b64encode(input_bytes: List[UInt8, _], inout result: List[UInt8, _]): +fn b64encode(input_bytes: List[UInt8, _], mut result: List[UInt8, _]): """Performs base64 encoding on the input string. Args: @@ -104,9 +106,9 @@ fn b64encode(input_bytes: List[UInt8, _]) -> String: return String(result^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -151,9 +153,9 @@ fn b64decode(str: String) -> String: return p -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn b16encode(str: String) -> String: @@ -188,9 +190,9 @@ fn b16encode(str: String) -> String: return String(out^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index e41c3ca52c..75004d3618 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -21,6 +21,7 @@ from .bit import ( byte_swap, count_leading_zeros, count_trailing_zeros, + log2_floor, is_power_of_two, pop_count, rotate_bits_left, diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index 5405411ab1..fb4170f825 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -22,9 +22,9 @@ from bit import count_leading_zeros from sys import llvm_intrinsic, sizeof from sys.info import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_leading_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -66,9 +66,9 @@ fn count_leading_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_trailing_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -110,9 +110,9 @@ fn count_trailing_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_reverse -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -154,9 +154,9 @@ fn bit_reverse[ ](val) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # byte_swap -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -212,9 +212,9 @@ fn byte_swap[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # pop_count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -256,9 +256,9 @@ fn pop_count[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_not -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -286,9 +286,9 @@ fn bit_not[ return __mlir_op.`pop.simd.xor`(val.value, neg_one.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_width -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -343,10 +343,30 @@ fn bit_width[ return bitwidth - leading_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# +# log2_floor +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn log2_floor(val: Int) -> Int: + """Returns the floor of the base-2 logarithm of an integer value. + + Args: + val: The input value. + + Returns: + The floor of the base-2 logarithm of the input value, which is equal to + the position of the highest set bit. Returns -1 if val is 0. + """ + if val <= 1: + return 0 + return bitwidthof[Int]() - count_leading_zeros(val) - 1 + + +# ===-----------------------------------------------------------------------===# # is_power_of_two -# ===----------------------------------------------------------------------===# -# reference: https://en.cppreference.com/w/cpp/numeric/has_single_bit +# ===-----------------------------------------------------------------------===# @always_inline @@ -391,9 +411,9 @@ fn is_power_of_two[ return (val > 0) & (val & (val - 1) == 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_ceil -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_ceil @@ -447,9 +467,9 @@ fn bit_ceil[ return (val > 1).select(1 << bit_width(val - ones), ones) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_floor -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_floor @@ -500,9 +520,9 @@ fn bit_floor[ return (val > 0).select(1 << (bit_width(val) - 1), zeros) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_left -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -578,9 +598,9 @@ fn rotate_bits_left[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_right -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 2686917119..95d7e8a30e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -25,10 +25,12 @@ # ===----------------------------------------------------------------------=== # from collections import InlineArray from math import log2 -from memory import bitcast from sys.info import sizeof -from utils import StaticTuple, Span + from builtin.io import _printf +from memory import bitcast, Span + +from utils import StaticTuple from utils.numerics import FPUtils, isinf, isnan @@ -38,7 +40,7 @@ struct _UInt128: var high: UInt64 var low: UInt64 - fn __iadd__(inout self, n: UInt64): + fn __iadd__(mut self, n: UInt64): var sum = (self.low + n) & UInt64.MAX self.high += 1 if sum < self.low else 0 self.low = sum @@ -69,9 +71,8 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias carrier_bits = sizeof[Self.CarrierDType]() * 8 alias sig_bits = FPUtils[type].mantissa_width() alias exp_bits = FPUtils[type].exponent_width() - alias min_exponent = FPUtils[type].min_exponent() - alias max_exponent = FPUtils[type].max_exponent() - alias exp_bias = -Self.max_exponent + alias neg_exp_bias = -FPUtils[type].exponent_bias() + alias min_normal_exp = Self.neg_exp_bias + 1 alias cache_bits = 64 if Self.CarrierDType == DType.uint32 else 128 alias min_k = -31 if Self.CarrierDType == DType.uint32 else -292 alias max_k = 46 if Self.CarrierDType == DType.uint32 else 326 @@ -87,9 +88,7 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias small_divisor = pow(10, Self.kappa) -fn _write_float[ - W: Writer, type: DType, // -](inout writer: W, value: Scalar[type]): +fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): """Write a SIMD float type into a Writer, using the dragonbox algorithm for perfect roundtrip, shortest representable format, and high performance. Paper: https://github.com/jk-jeon/dragonbox/blob/master/other_files/Dragonbox.pdf @@ -105,117 +104,128 @@ fn _write_float[ """ constrained[type.is_floating_point()]() - # Currently only specialized for float32 and float64, upcast anything else - # to float32 - casted = value.cast[ - DType.float64 if type == DType.float64 else DType.float32 - ]() + @parameter + if type is DType.float8e5m2: + return writer.write(float8e5m2_to_str[int(bitcast[DType.uint8](value))]) + elif type is DType.float8e4m3: + return writer.write(float8e4m3_to_str[int(bitcast[DType.uint8](value))]) + elif type is DType.float8e5m2fnuz: + return writer.write( + float8e5m2fnuz_to_str[int(bitcast[DType.uint8](value))] + ) + elif type is DType.float8e4m3fnuz: + return writer.write( + float8e4m3fnuz_to_str[int(bitcast[DType.uint8](value))] + ) + else: + # Upcast the float16 types to float32 + casted = value.cast[ + DType.float64 if type == DType.float64 else DType.float32 + ]() + + # Bitcast the float and separate the sig and exp, to enable manipulating + # bits as a UInt64 and Int: + # - The significand (sig) is the raw binary fraction + # - The exponent (exp) is still in biased form + var sig = FPUtils.get_mantissa_uint(casted) + var exp = FPUtils.get_exponent_biased(casted) + var sign = FPUtils.get_sign(casted) - # Bitcast the float and separate the sig and exp, to enable manipulating - # bits as a UInt64 and Int: - # - The significand (sig) is the raw binary fraction - # - The exponent (exp) is still in biased form - var sig = FPUtils.get_mantissa_uint(casted) - var exp = FPUtils.get_exponent_without_bias(casted) - var sign = FPUtils.get_sign(casted) + if isinf(value): + if sign: + return writer.write("-inf") + return writer.write("inf") + + if isnan(value): + return writer.write("nan") - if isinf(value): if sign: writer.write("-") - writer.write("inf") - return - - if isnan(value): - writer.write("nan") - return - - if sign: - writer.write("-") - - if not sig and not exp: - writer.write("0.0") - return - - # Convert the binary components to a decimal representation: - # - The raw binary sig into a decimal sig - # - The biased binary exp into a decimal power of 10 exp - # This does all the heavy lifting for perfect roundtrip, shortest - # representable format, bankers rounding etc. - _to_decimal[casted.type](sig, exp) - - # This is a custom routine for writing the decimal following python behavior. - # it can be further optimized with a lookup table, there is overhead here - # compared to snprintf. - var orig_sig = sig - var abs_exp = abs(exp) - var digits = StaticTuple[Byte, 21]() - var idx = 0 - while sig > 0: - digits[idx] = (sig % 10).cast[DType.uint8]() - sig //= 10 - idx += 1 - if sig > 0: - exp += 1 - var leading_zeroes = abs_exp - idx - - # Write in scientific notation if < 0.0001 or exp > 15 - if (exp < 0 and leading_zeroes > 3) or exp > 15: - # Handle single digit case - if orig_sig < 10: - writer.write(orig_sig) - else: - # Write digit before decimal point - writer.write(digits[idx - 1]) - writer.write(".") - # Write digits after decimal point - for i in reversed(range(idx - 1)): - writer.write(digits[i]) - # Write exponent - if exp < 0: - writer.write("e-") - exp = -exp - else: - writer.write("e+") - # Pad exponent with a 0 if less than two digits - if exp < 10: - writer.write("0") - var exp_digits = StaticTuple[Byte, 10]() - var exp_idx = 0 - while exp > 0: - exp_digits[exp_idx] = exp % 10 - exp //= 10 - exp_idx += 1 - for i in reversed(range(exp_idx)): - writer.write(exp_digits[i]) - # If between 0 and 0.0001 - elif exp < 0 and leading_zeroes > 0: - writer.write("0.") - for _ in range(leading_zeroes): - writer.write("0") - for i in reversed(range(idx)): - writer.write(digits[i]) - # All other floats > 0.0001 with an exponent <= 15 - else: - var point_written = False - for i in reversed(range(idx)): - if leading_zeroes < 1 and exp == idx - i - 2: - # No integer part so write leading 0 - if i == idx - 1: - writer.write("0") - writer.write(".") - point_written = True - writer.write(digits[i]) - # If exp - idx + 1 > 0 it's a positive number with more 0's than the sig - for _ in range(exp - idx + 1): - writer.write("0") - if not point_written: - writer.write(".0") + if not sig and not exp: + return writer.write("0.0") + + # Convert the binary components to a decimal representation: + # - The raw binary sig into a decimal sig + # - The biased binary exp into a decimal power of 10 exp + # This does all the heavy lifting for perfect roundtrip, shortest + # representable format, bankers rounding etc. + _to_decimal[casted.type](sig, exp) + + # This is a custom routine for writing the decimal following python + # behavior. it can be further optimized with a lookup table, there is + # overhead here compared to snprintf. + var orig_sig = sig + var abs_exp = abs(exp) + var digits = StaticTuple[Byte, 21]() + var idx = 0 + while sig > 0: + digits[idx] = (sig % 10).cast[DType.uint8]() + sig //= 10 + idx += 1 + if sig > 0: + exp += 1 + var leading_zeroes = abs_exp - idx + + # Write in scientific notation if < 0.0001 or exp > 15 + if (exp < 0 and leading_zeroes > 3) or exp > 15: + # Handle single digit case + if orig_sig < 10: + writer.write(orig_sig) + else: + # Write digit before decimal point + writer.write(digits[idx - 1]) + writer.write(".") + # Write digits after decimal point + for i in reversed(range(idx - 1)): + writer.write(digits[i]) + # Write exponent + if exp < 0: + writer.write("e-") + exp = -exp + else: + writer.write("e+") + # Pad exponent with a 0 if less than two digits + if exp < 10: + writer.write("0") + var exp_digits = StaticTuple[Byte, 10]() + var exp_idx = 0 + while exp > 0: + exp_digits[exp_idx] = exp % 10 + exp //= 10 + exp_idx += 1 + for i in reversed(range(exp_idx)): + writer.write(exp_digits[i]) + # If between 0 and 0.0001 + elif exp < 0 and leading_zeroes > 0: + writer.write("0.") + for _ in range(leading_zeroes): + writer.write("0") + for i in reversed(range(idx)): + writer.write(digits[i]) + # All other floats > 0.0001 with an exponent <= 15 + else: + var point_written = False + for i in reversed(range(idx)): + if leading_zeroes < 1 and exp == idx - i - 2: + # No integer part so write leading 0 + if i == idx - 1: + writer.write("0") + writer.write(".") + point_written = True + writer.write(digits[i]) + + # If exp - idx + 1 > 0 it's a positive number with more 0's than the + # sig + for _ in range(exp - idx + 1): + writer.write("0") + if not point_written: + writer.write(".0") fn _to_decimal[ CarrierDType: DType, //, type: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Transform the raw binary significand to decimal significand, and biased binary exponent into a decimal power of 10 exponent. """ @@ -224,7 +234,7 @@ fn _to_decimal[ # For normal numbers if binary_exp != 0: - binary_exp += FP[type].exp_bias - FP[type].sig_bits + binary_exp += FP[type].neg_exp_bias - FP[type].sig_bits if two_fc == 0: var minus_k = (binary_exp * 631305 - 261663) >> 21 var beta = binary_exp + _floor_log2_pow10(-minus_k) @@ -282,7 +292,7 @@ fn _to_decimal[ two_fc |= Scalar[CarrierDType](1) << (FP[type].sig_bits + 1) else: # For subnormal numbers - binary_exp = FP[type].min_exponent - FP[type].sig_bits + binary_exp = FP[type].min_normal_exp - FP[type].sig_bits ########################################## # Step 1: Schubfach multiplier calculation @@ -368,7 +378,7 @@ fn _compute_endpoint[ CarrierDType: DType, sig_bits: Int, total_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int, left_endpoint: Bool) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] if left_endpoint: return ( @@ -405,9 +415,9 @@ fn _print_bits[type: DType](x: Scalar[type]) -> String: if i % 8 == 0: output.write(" ") else: - alias sig_bits = 23 if type == DType.float32 else 52 - alias exp_bits = 8 if type == DType.float32 else 11 - alias cast_type = DType.uint32 if type == DType.float32 else DType.uint64 + alias sig_bits = 23 if type is DType.float32 else 52 + alias exp_bits = 8 if type is DType.float32 else 11 + alias cast_type = DType.uint32 if type is DType.float32 else DType.uint64 var casted = bitcast[cast_type](x) for i in reversed(range(total_bits)): output.write((casted >> i) & 1) @@ -433,7 +443,7 @@ fn _rotr[ CarrierDType: DType ](n: Scalar[CarrierDType], r: Scalar[CarrierDType]) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint32: + if CarrierDType is DType.uint32: var r_masked = r & 31 return (n >> r_masked) | (n << ((32 - r_masked) & 31)) else: @@ -487,13 +497,13 @@ fn _umul128[ fn _remove_trailing_zeros[ CarrierDType: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Fastest alg for removing trailing zeroes: https://github.com/jk-jeon/rtz_benchmark. """ @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var r = _rotr(sig * 28999941890838049, 8) var b = r < 184467440738 var s = int(b) @@ -545,7 +555,7 @@ fn _divide_by_pow10[ CarrierDType: DType, //, N: Int, n_max: Scalar[CarrierDType] ](n: Scalar[CarrierDType]) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: @parameter if N == 1 and bool(n_max <= 4611686018427387908): @@ -581,7 +591,7 @@ fn _umul192_lower128(x: UInt64, y: _UInt128) -> _UInt128: fn _compute_mul_parity[ CarrierDType: DType ](two_f: Scalar[CarrierDType], cache_index: Int, beta: Int) -> _MulParity: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: debug_assert(1 <= beta < 64, "beta must be between 1 and 64") var r = _umul192_lower128( two_f.cast[DType.uint64](), cache_f64[cache_index] @@ -616,7 +626,7 @@ fn _check_divisibility_and_divide_by_pow10[ CarrierDType: DType, //, carrier_bits: Int, divide_magic_number: StaticTuple[UInt32, 2], -](inout n: Scalar[CarrierDType], N: Int) -> Bool: +](mut n: Scalar[CarrierDType], N: Int) -> Bool: # Make sure the computation for max_n does not overflow. debug_assert(N + 1 <= _floor_log10_pow2(carrier_bits)) @@ -653,7 +663,7 @@ fn _umul96_upper64[ fn _compute_mul[ CarrierDType: DType ](u: Scalar[CarrierDType], cache_index: Int) -> _MulResult[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var r = _umul192_upper128(u, cache_f64[cache_index]) return _MulResult[CarrierDType](r.high.cast[CarrierDType](), r.low == 0) else: @@ -667,7 +677,7 @@ fn _compute_mul[ fn _compute_delta[ CarrierDType: DType, total_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int) -> Scalar[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] return (cache.high >> (total_bits - 1 - beta)).cast[CarrierDType]() else: @@ -722,7 +732,7 @@ fn _count_factors[ fn _compute_round_up_for_shorter_interval_case[ CarrierDType: DType, total_bits: Int, sig_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int) -> Scalar[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] return ( ( @@ -1426,3 +1436,1039 @@ alias cache_f64 = StaticTuple[_UInt128, 619]( _UInt128(0xC5A05277621BE293, 0xC7098B7305241886), _UInt128(0xF70867153AA2DB38, 0xB8CBEE4FC66D1EA8), ) + +alias float8e5m2_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "1.52587890625e-05", + "3.0517578125e-05", + "4.57763671875e-05", + "6.103515625e-05", + "7.62939453125e-05", + "9.1552734375e-05", + "0.0001068115234375", + "0.0001220703125", + "0.000152587890625", + "0.00018310546875", + "0.000213623046875", + "0.000244140625", + "0.00030517578125", + "0.0003662109375", + "0.00042724609375", + "0.00048828125", + "0.0006103515625", + "0.000732421875", + "0.0008544921875", + "0.0009765625", + "0.001220703125", + "0.00146484375", + "0.001708984375", + "0.001953125", + "0.00244140625", + "0.0029296875", + "0.00341796875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.01953125", + "0.0234375", + "0.02734375", + "0.03125", + "0.0390625", + "0.046875", + "0.0546875", + "0.0625", + "0.078125", + "0.09375", + "0.109375", + "0.125", + "0.15625", + "0.1875", + "0.21875", + "0.25", + "0.3125", + "0.375", + "0.4375", + "0.5", + "0.625", + "0.75", + "0.875", + "1.0", + "1.25", + "1.5", + "1.75", + "2.0", + "2.5", + "3.0", + "3.5", + "4.0", + "5.0", + "6.0", + "7.0", + "8.0", + "10.0", + "12.0", + "14.0", + "16.0", + "20.0", + "24.0", + "28.0", + "32.0", + "40.0", + "48.0", + "56.0", + "64.0", + "80.0", + "96.0", + "112.0", + "128.0", + "160.0", + "192.0", + "224.0", + "256.0", + "320.0", + "384.0", + "448.0", + "512.0", + "640.0", + "768.0", + "896.0", + "1024.0", + "1280.0", + "1536.0", + "1792.0", + "2048.0", + "2560.0", + "3072.0", + "3584.0", + "4096.0", + "5120.0", + "6144.0", + "7168.0", + "8192.0", + "10240.0", + "12288.0", + "14336.0", + "16384.0", + "20480.0", + "24576.0", + "28672.0", + "32768.0", + "40960.0", + "49152.0", + "57344.0", + "inf", + "nan", + "nan", + "nan", + "-0.0", + "-1.52587890625e-05", + "-3.0517578125e-05", + "-4.57763671875e-05", + "-6.103515625e-05", + "-7.62939453125e-05", + "-9.1552734375e-05", + "-0.0001068115234375", + "-0.0001220703125", + "-0.000152587890625", + "-0.00018310546875", + "-0.000213623046875", + "-0.000244140625", + "-0.00030517578125", + "-0.0003662109375", + "-0.00042724609375", + "-0.00048828125", + "-0.0006103515625", + "-0.000732421875", + "-0.0008544921875", + "-0.0009765625", + "-0.001220703125", + "-0.00146484375", + "-0.001708984375", + "-0.001953125", + "-0.00244140625", + "-0.0029296875", + "-0.00341796875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.01953125", + "-0.0234375", + "-0.02734375", + "-0.03125", + "-0.0390625", + "-0.046875", + "-0.0546875", + "-0.0625", + "-0.078125", + "-0.09375", + "-0.109375", + "-0.125", + "-0.15625", + "-0.1875", + "-0.21875", + "-0.25", + "-0.3125", + "-0.375", + "-0.4375", + "-0.5", + "-0.625", + "-0.75", + "-0.875", + "-1.0", + "-1.25", + "-1.5", + "-1.75", + "-2.0", + "-2.5", + "-3.0", + "-3.5", + "-4.0", + "-5.0", + "-6.0", + "-7.0", + "-8.0", + "-10.0", + "-12.0", + "-14.0", + "-16.0", + "-20.0", + "-24.0", + "-28.0", + "-32.0", + "-40.0", + "-48.0", + "-56.0", + "-64.0", + "-80.0", + "-96.0", + "-112.0", + "-128.0", + "-160.0", + "-192.0", + "-224.0", + "-256.0", + "-320.0", + "-384.0", + "-448.0", + "-512.0", + "-640.0", + "-768.0", + "-896.0", + "-1024.0", + "-1280.0", + "-1536.0", + "-1792.0", + "-2048.0", + "-2560.0", + "-3072.0", + "-3584.0", + "-4096.0", + "-5120.0", + "-6144.0", + "-7168.0", + "-8192.0", + "-10240.0", + "-12288.0", + "-14336.0", + "-16384.0", + "-20480.0", + "-24576.0", + "-28672.0", + "-32768.0", + "-40960.0", + "-49152.0", + "-57344.0", + "-inf", + "nan", + "nan", + "nan", +) + +alias float8e4m3_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "0.001953125", + "0.00390625", + "0.005859375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.017578125", + "0.01953125", + "0.021484375", + "0.0234375", + "0.025390625", + "0.02734375", + "0.029296875", + "0.03125", + "0.03515625", + "0.0390625", + "0.04296875", + "0.046875", + "0.05078125", + "0.0546875", + "0.05859375", + "0.0625", + "0.0703125", + "0.078125", + "0.0859375", + "0.09375", + "0.1015625", + "0.109375", + "0.1171875", + "0.125", + "0.140625", + "0.15625", + "0.171875", + "0.1875", + "0.203125", + "0.21875", + "0.234375", + "0.25", + "0.28125", + "0.3125", + "0.34375", + "0.375", + "0.40625", + "0.4375", + "0.46875", + "0.5", + "0.5625", + "0.625", + "0.6875", + "0.75", + "0.8125", + "0.875", + "0.9375", + "1.0", + "1.125", + "1.25", + "1.375", + "1.5", + "1.625", + "1.75", + "1.875", + "2.0", + "2.25", + "2.5", + "2.75", + "3.0", + "3.25", + "3.5", + "3.75", + "4.0", + "4.5", + "5.0", + "5.5", + "6.0", + "6.5", + "7.0", + "7.5", + "8.0", + "9.0", + "10.0", + "11.0", + "12.0", + "13.0", + "14.0", + "15.0", + "16.0", + "18.0", + "20.0", + "22.0", + "24.0", + "26.0", + "28.0", + "30.0", + "32.0", + "36.0", + "40.0", + "44.0", + "48.0", + "52.0", + "56.0", + "60.0", + "64.0", + "72.0", + "80.0", + "88.0", + "96.0", + "104.0", + "112.0", + "120.0", + "128.0", + "144.0", + "160.0", + "176.0", + "192.0", + "208.0", + "224.0", + "240.0", + "256.0", + "288.0", + "320.0", + "352.0", + "384.0", + "416.0", + "448.0", + "nan", + "-0.0", + "-0.001953125", + "-0.00390625", + "-0.005859375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.017578125", + "-0.01953125", + "-0.021484375", + "-0.0234375", + "-0.025390625", + "-0.02734375", + "-0.029296875", + "-0.03125", + "-0.03515625", + "-0.0390625", + "-0.04296875", + "-0.046875", + "-0.05078125", + "-0.0546875", + "-0.05859375", + "-0.0625", + "-0.0703125", + "-0.078125", + "-0.0859375", + "-0.09375", + "-0.1015625", + "-0.109375", + "-0.1171875", + "-0.125", + "-0.140625", + "-0.15625", + "-0.171875", + "-0.1875", + "-0.203125", + "-0.21875", + "-0.234375", + "-0.25", + "-0.28125", + "-0.3125", + "-0.34375", + "-0.375", + "-0.40625", + "-0.4375", + "-0.46875", + "-0.5", + "-0.5625", + "-0.625", + "-0.6875", + "-0.75", + "-0.8125", + "-0.875", + "-0.9375", + "-1.0", + "-1.125", + "-1.25", + "-1.375", + "-1.5", + "-1.625", + "-1.75", + "-1.875", + "-2.0", + "-2.25", + "-2.5", + "-2.75", + "-3.0", + "-3.25", + "-3.5", + "-3.75", + "-4.0", + "-4.5", + "-5.0", + "-5.5", + "-6.0", + "-6.5", + "-7.0", + "-7.5", + "-8.0", + "-9.0", + "-10.0", + "-11.0", + "-12.0", + "-13.0", + "-14.0", + "-15.0", + "-16.0", + "-18.0", + "-20.0", + "-22.0", + "-24.0", + "-26.0", + "-28.0", + "-30.0", + "-32.0", + "-36.0", + "-40.0", + "-44.0", + "-48.0", + "-52.0", + "-56.0", + "-60.0", + "-64.0", + "-72.0", + "-80.0", + "-88.0", + "-96.0", + "-104.0", + "-112.0", + "-120.0", + "-128.0", + "-144.0", + "-160.0", + "-176.0", + "-192.0", + "-208.0", + "-224.0", + "-240.0", + "-256.0", + "-288.0", + "-320.0", + "-352.0", + "-384.0", + "-416.0", + "-448.0", + "nan", +) + +alias float8e5m2fnuz_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "7.62939453125e-06", + "1.52587890625e-05", + "2.288818359375e-05", + "3.0517578125e-05", + "3.814697265625e-05", + "4.57763671875e-05", + "5.340576171875e-05", + "6.103515625e-05", + "7.62939453125e-05", + "9.1552734375e-05", + "0.0001068115234375", + "0.0001220703125", + "0.000152587890625", + "0.00018310546875", + "0.000213623046875", + "0.000244140625", + "0.00030517578125", + "0.0003662109375", + "0.00042724609375", + "0.00048828125", + "0.0006103515625", + "0.000732421875", + "0.0008544921875", + "0.0009765625", + "0.001220703125", + "0.00146484375", + "0.001708984375", + "0.001953125", + "0.00244140625", + "0.0029296875", + "0.00341796875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.01953125", + "0.0234375", + "0.02734375", + "0.03125", + "0.0390625", + "0.046875", + "0.0546875", + "0.0625", + "0.078125", + "0.09375", + "0.109375", + "0.125", + "0.15625", + "0.1875", + "0.21875", + "0.25", + "0.3125", + "0.375", + "0.4375", + "0.5", + "0.625", + "0.75", + "0.875", + "1.0", + "1.25", + "1.5", + "1.75", + "2.0", + "2.5", + "3.0", + "3.5", + "4.0", + "5.0", + "6.0", + "7.0", + "8.0", + "10.0", + "12.0", + "14.0", + "16.0", + "20.0", + "24.0", + "28.0", + "32.0", + "40.0", + "48.0", + "56.0", + "64.0", + "80.0", + "96.0", + "112.0", + "128.0", + "160.0", + "192.0", + "224.0", + "256.0", + "320.0", + "384.0", + "448.0", + "512.0", + "640.0", + "768.0", + "896.0", + "1024.0", + "1280.0", + "1536.0", + "1792.0", + "2048.0", + "2560.0", + "3072.0", + "3584.0", + "4096.0", + "5120.0", + "6144.0", + "7168.0", + "8192.0", + "10240.0", + "12288.0", + "14336.0", + "16384.0", + "20480.0", + "24576.0", + "28672.0", + "32768.0", + "40960.0", + "49152.0", + "57344.0", + "nan", + "-7.62939453125e-06", + "-1.52587890625e-05", + "-2.288818359375e-05", + "-3.0517578125e-05", + "-3.814697265625e-05", + "-4.57763671875e-05", + "-5.340576171875e-05", + "-6.103515625e-05", + "-7.62939453125e-05", + "-9.1552734375e-05", + "-0.0001068115234375", + "-0.0001220703125", + "-0.000152587890625", + "-0.00018310546875", + "-0.000213623046875", + "-0.000244140625", + "-0.00030517578125", + "-0.0003662109375", + "-0.00042724609375", + "-0.00048828125", + "-0.0006103515625", + "-0.000732421875", + "-0.0008544921875", + "-0.0009765625", + "-0.001220703125", + "-0.00146484375", + "-0.001708984375", + "-0.001953125", + "-0.00244140625", + "-0.0029296875", + "-0.00341796875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.01953125", + "-0.0234375", + "-0.02734375", + "-0.03125", + "-0.0390625", + "-0.046875", + "-0.0546875", + "-0.0625", + "-0.078125", + "-0.09375", + "-0.109375", + "-0.125", + "-0.15625", + "-0.1875", + "-0.21875", + "-0.25", + "-0.3125", + "-0.375", + "-0.4375", + "-0.5", + "-0.625", + "-0.75", + "-0.875", + "-1.0", + "-1.25", + "-1.5", + "-1.75", + "-2.0", + "-2.5", + "-3.0", + "-3.5", + "-4.0", + "-5.0", + "-6.0", + "-7.0", + "-8.0", + "-10.0", + "-12.0", + "-14.0", + "-16.0", + "-20.0", + "-24.0", + "-28.0", + "-32.0", + "-40.0", + "-48.0", + "-56.0", + "-64.0", + "-80.0", + "-96.0", + "-112.0", + "-128.0", + "-160.0", + "-192.0", + "-224.0", + "-256.0", + "-320.0", + "-384.0", + "-448.0", + "-512.0", + "-640.0", + "-768.0", + "-896.0", + "-1024.0", + "-1280.0", + "-1536.0", + "-1792.0", + "-2048.0", + "-2560.0", + "-3072.0", + "-3584.0", + "-4096.0", + "-5120.0", + "-6144.0", + "-7168.0", + "-8192.0", + "-10240.0", + "-12288.0", + "-14336.0", + "-16384.0", + "-20480.0", + "-24576.0", + "-28672.0", + "-32768.0", + "-40960.0", + "-49152.0", + "-57344.0", +) + +alias float8e4m3fnuz_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "0.0009765625", + "0.001953125", + "0.0029296875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.0087890625", + "0.009765625", + "0.0107421875", + "0.01171875", + "0.0126953125", + "0.013671875", + "0.0146484375", + "0.015625", + "0.017578125", + "0.01953125", + "0.021484375", + "0.0234375", + "0.025390625", + "0.02734375", + "0.029296875", + "0.03125", + "0.03515625", + "0.0390625", + "0.04296875", + "0.046875", + "0.05078125", + "0.0546875", + "0.05859375", + "0.0625", + "0.0703125", + "0.078125", + "0.0859375", + "0.09375", + "0.1015625", + "0.109375", + "0.1171875", + "0.125", + "0.140625", + "0.15625", + "0.171875", + "0.1875", + "0.203125", + "0.21875", + "0.234375", + "0.25", + "0.28125", + "0.3125", + "0.34375", + "0.375", + "0.40625", + "0.4375", + "0.46875", + "0.5", + "0.5625", + "0.625", + "0.6875", + "0.75", + "0.8125", + "0.875", + "0.9375", + "1.0", + "1.125", + "1.25", + "1.375", + "1.5", + "1.625", + "1.75", + "1.875", + "2.0", + "2.25", + "2.5", + "2.75", + "3.0", + "3.25", + "3.5", + "3.75", + "4.0", + "4.5", + "5.0", + "5.5", + "6.0", + "6.5", + "7.0", + "7.5", + "8.0", + "9.0", + "10.0", + "11.0", + "12.0", + "13.0", + "14.0", + "15.0", + "16.0", + "18.0", + "20.0", + "22.0", + "24.0", + "26.0", + "28.0", + "30.0", + "32.0", + "36.0", + "40.0", + "44.0", + "48.0", + "52.0", + "56.0", + "60.0", + "64.0", + "72.0", + "80.0", + "88.0", + "96.0", + "104.0", + "112.0", + "120.0", + "128.0", + "144.0", + "160.0", + "176.0", + "192.0", + "208.0", + "224.0", + "240.0", + "nan", + "-0.0009765625", + "-0.001953125", + "-0.0029296875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.0087890625", + "-0.009765625", + "-0.0107421875", + "-0.01171875", + "-0.0126953125", + "-0.013671875", + "-0.0146484375", + "-0.015625", + "-0.017578125", + "-0.01953125", + "-0.021484375", + "-0.0234375", + "-0.025390625", + "-0.02734375", + "-0.029296875", + "-0.03125", + "-0.03515625", + "-0.0390625", + "-0.04296875", + "-0.046875", + "-0.05078125", + "-0.0546875", + "-0.05859375", + "-0.0625", + "-0.0703125", + "-0.078125", + "-0.0859375", + "-0.09375", + "-0.1015625", + "-0.109375", + "-0.1171875", + "-0.125", + "-0.140625", + "-0.15625", + "-0.171875", + "-0.1875", + "-0.203125", + "-0.21875", + "-0.234375", + "-0.25", + "-0.28125", + "-0.3125", + "-0.34375", + "-0.375", + "-0.40625", + "-0.4375", + "-0.46875", + "-0.5", + "-0.5625", + "-0.625", + "-0.6875", + "-0.75", + "-0.8125", + "-0.875", + "-0.9375", + "-1.0", + "-1.125", + "-1.25", + "-1.375", + "-1.5", + "-1.625", + "-1.75", + "-1.875", + "-2.0", + "-2.25", + "-2.5", + "-2.75", + "-3.0", + "-3.25", + "-3.5", + "-3.75", + "-4.0", + "-4.5", + "-5.0", + "-5.5", + "-6.0", + "-6.5", + "-7.0", + "-7.5", + "-8.0", + "-9.0", + "-10.0", + "-11.0", + "-12.0", + "-13.0", + "-14.0", + "-15.0", + "-16.0", + "-18.0", + "-20.0", + "-22.0", + "-24.0", + "-26.0", + "-28.0", + "-30.0", + "-32.0", + "-36.0", + "-40.0", + "-44.0", + "-48.0", + "-52.0", + "-56.0", + "-60.0", + "-64.0", + "-72.0", + "-80.0", + "-88.0", + "-96.0", + "-104.0", + "-112.0", + "-120.0", + "-128.0", + "-144.0", + "-160.0", + "-176.0", + "-192.0", + "-208.0", + "-224.0", + "-240.0", +) diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 0940e49f8e..463cba7b08 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -42,7 +42,7 @@ struct _SourceLocation(Writable, Stringable): """ return "At " + str(self) + ": " + str(msg) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the source location to the provided Writer. @@ -57,7 +57,7 @@ struct _SourceLocation(Writable, Stringable): @always_inline("nodebug") fn __source_location() -> _SourceLocation: - """Returns the location where it's called. + """Returns the location for where this function is called. This currently doesn't work when called in a parameter expression. @@ -68,7 +68,7 @@ fn __source_location() -> _SourceLocation: var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 0 : i64}`, + inlineCount = Int(0).value, _type = ( __mlir_type.index, __mlir_type.index, @@ -80,26 +80,35 @@ fn __source_location() -> _SourceLocation: @always_inline("nodebug") -fn __call_location() -> _SourceLocation: - """Returns the location where the enclosing function is called. +fn __call_location[inline_count: Int = 1]() -> _SourceLocation: + """Returns the location for where the caller of this function is called. An + optional `inline_count` parameter can be specified to skip over that many + levels of calling functions. - This should only be used in `@always_inline` or `@always_inline("nodebug")` - functions so that it returns the source location of where the enclosing - function is called at (even if inside another `@always_inline("nodebug")` - function). + This should only be used when enclosed in a series of `@always_inline` or + `@always_inline("nodebug")` function calls, where the layers of calling + functions is no fewer than `inline_count`. - This currently doesn't work when this or the enclosing function is called in - a parameter expression. + For example, when `inline_count = 1`, only the caller of this function needs + to be `@always_inline` or `@always_inline("nodebug")`. This function will + return the source location of the caller's invocation. + + When `inline_count = 2`, the caller of the caller of this function also + needs to be inlined. This function will return the source location of the + caller's caller's invocation. + + This currently doesn't work when the `inline_count`-th wrapping caller is + called in a parameter expression. Returns: - The location information of where the enclosing function (i.e. the + The location information of where the caller of this function (i.e. the function whose body __call_location() is used in) is called. """ var line: __mlir_type.index var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 1 : i64}`, + inlineCount = inline_count.value, _type = ( __mlir_type.index, __mlir_type.index, diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index 2644bceba2..5e1d8c874c 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -11,32 +11,29 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, stack_allocation - -from sys import sizeof, alignof +from collections import Optional +from sys import alignof, sizeof import python._cpython as cp -from python import TypedPythonObject, Python, PythonObject -from python.python import _get_global_python_itf -from python._cpython import ( - PyObjectPtr, - PyMethodDef, - PyType_Slot, - PyType_Spec, - CPython, -) -from python._bindings import ( - Pythonable, +from memory import UnsafePointer, stack_allocation +from python import Python, PythonObject, TypedPythonObject +from python._bindings import ( # Imported for use by the compiler ConvertibleFromPython, PyMojoObject, - python_type_object, - py_c_function_wrapper, + Pythonable, check_argument_type, - # Imported for use by the compiler check_arguments_arity, + py_c_function_wrapper, + python_type_object, ) - -from collections import Optional +from python._cpython import ( + CPython, + PyMethodDef, + PyObjectPtr, + PyType_Slot, + PyType_Spec, +) +from python.python import _get_global_python_itf alias PyModule = TypedPythonObject["Module"] @@ -64,10 +61,13 @@ fn fail_initialization(owned err: Error) -> PythonObject: fn pointer_bitcast[ To: AnyType -](ptr: Pointer) -> Pointer[To, ptr.origin, ptr.address_space, *_, **_] as out: - return __type_of(out)( +]( + ptr: Pointer, + out result: Pointer[To, ptr.origin, ptr.address_space, *_, **_], +): + return __type_of(result)( _mlir_value=__mlir_op.`lit.ref.from_pointer`[ - _type = __type_of(out)._mlir_type + _type = __type_of(result)._mlir_type ]( UnsafePointer(__mlir_op.`lit.ref.to_pointer`(ptr._value)) .bitcast[To]() @@ -79,7 +79,7 @@ fn pointer_bitcast[ fn gen_pytype_wrapper[ T: Pythonable, name: StringLiteral, -](inout module: PythonObject) raises: +](mut module: PythonObject) raises: # TODO(MOCO-1301): Add support for member method generation. # TODO(MOCO-1302): Add support for generating member field as computed properties. # TODO(MOCO-1307): Add support for constructor generation. @@ -102,7 +102,7 @@ fn add_wrapper_to_module[ PythonObject, TypedPythonObject["Tuple"] ) raises -> PythonObject, func_name: StringLiteral, -](inout module_obj: PythonObject) raises: +](mut module_obj: PythonObject) raises: var module = TypedPythonObject["Module"](unsafe_unchecked_from=module_obj) Python.add_functions( module, @@ -165,7 +165,8 @@ fn _try_convert_arg[ type_name_id: StringLiteral, py_args: TypedPythonObject["Tuple"], argidx: Int, -) raises -> T as result: + out result: T, +) raises: try: result = T.try_from_python(py_args[argidx]) except convert_err: diff --git a/stdlib/src/builtin/_startup.mojo b/stdlib/src/builtin/_startup.mojo index 97a815742f..e6efe691e0 100644 --- a/stdlib/src/builtin/_startup.mojo +++ b/stdlib/src/builtin/_startup.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # """Implements functionality to start a mojo execution.""" -from memory import UnsafePointer from sys import external_call -from sys.ffi import _get_global, OpaquePointer +from sys.ffi import OpaquePointer, _get_global + +from memory import UnsafePointer fn _init_global_runtime(ignored: OpaquePointer) -> OpaquePointer: diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 92e661dc00..3b5a12fdac 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -13,9 +13,9 @@ from builtin.range import _StridedRangeIterator, _UIntStridedRangeIterator -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __MLIRType -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -23,18 +23,18 @@ struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): var value: T -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # parameter_for -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait _IntNext(Copyable): - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: ... trait _UIntNext(Copyable): - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: ... diff --git a/stdlib/src/builtin/anytype.mojo b/stdlib/src/builtin/anytype.mojo index 8c7a061ba5..c76235fc9c 100644 --- a/stdlib/src/builtin/anytype.mojo +++ b/stdlib/src/builtin/anytype.mojo @@ -20,6 +20,20 @@ These are Mojo built-ins, so you don't need to import them. # ===----------------------------------------------------------------------=== # +# TODO(MOCO-1468): Add @explicit_destroy here so we get an error message, +# preferably one that mentions a link the user can go to to learn about +# linear types. +trait UnknownDestructibility: + """The UnknownDestructibility trait is the most basic trait, that all other + types extend. + + This has no __del__ method. For types that should have the __del__ method, + use ImplicitlyDestructible instead. + """ + + pass + + trait AnyType: """The AnyType trait describes a type that has a destructor. @@ -32,10 +46,9 @@ trait AnyType: lifetime, and the resultant type receives a destructor regardless of whether the user explicitly defines one. - All types pessimistically require a destructor when used in generic - functions. Hence, all Mojo traits are considered to inherit from - AnyType, providing a default no-op destructor implementation for types - that may need them. + Unless they specify @explicit_destroy, all Mojo structs and traits are + considered to inherit from AnyType, providing a default no-op destructor + implementation for types that may need them. Example implementing the `AnyType` trait on `Foo` that frees the allocated memory: @@ -66,3 +79,8 @@ trait AnyType: end of this function. """ ... + + +# A temporary alias to help with the linear types transition, see +# https://www.notion.so/modularai/Linear-Types-14a1044d37bb809ab074c990fe1a84e3. +alias ImplicitlyDestructible = AnyType diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index c9073c3558..e48f1c9f5a 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -15,10 +15,10 @@ These are Mojo built-ins, so you don't need to import them. """ -from collections import Set, List +from collections import List, Set -from utils._visualizers import lldb_formatter_wrapping_type from utils._select import _select_register_value +from utils._visualizers import lldb_formatter_wrapping_type # ===----------------------------------------------------------------------=== # # Boolable @@ -155,7 +155,7 @@ struct Bool( @always_inline("nodebug") @implicit - fn __init__[T: ImplicitlyBoolable, //](inout self, value: T): + fn __init__[T: ImplicitlyBoolable, //](mut self, value: T): """Convert an ImplicitlyBoolable value to a Bool. Parameters: @@ -226,7 +226,7 @@ struct Bool( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this boolean to the provided Writer. @@ -404,7 +404,7 @@ struct Bool( return __mlir_op.`pop.and`(self.value, rhs.value) @always_inline("nodebug") - fn __iand__(inout self, rhs: Bool): + fn __iand__(mut self, rhs: Bool): """Computes `self & rhs` and store the result in `self`. Args: @@ -440,7 +440,7 @@ struct Bool( return __mlir_op.`pop.or`(self.value, rhs.value) @always_inline("nodebug") - fn __ior__(inout self, rhs: Bool): + fn __ior__(mut self, rhs: Bool): """Computes `self | rhs` and store the result in `self`. Args: @@ -476,7 +476,7 @@ struct Bool( return __mlir_op.`pop.xor`(self.value, rhs.value) @always_inline("nodebug") - fn __ixor__(inout self, rhs: Bool): + fn __ixor__(mut self, rhs: Bool): """Computes `self ^ rhs` and stores the result in `self`. Args: diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 80e4b61185..e74b93cad3 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -17,10 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from memory import Pointer, UnsafePointer - -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # ListLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): @@ -120,9 +119,9 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): return value in self.storage -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicList / VariadicListMem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -136,7 +135,7 @@ struct _VariadicListIter[type: AnyTrivialRegType]: var index: Int var src: VariadicList[type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.index += 1 return self.src[self.index - 1] @@ -222,7 +221,7 @@ struct VariadicList[type: AnyTrivialRegType](Sized): struct _VariadicListMemIter[ elt_is_mutable: Bool, //, elt_type: AnyType, - elt_origin: Origin[elt_is_mutable].type, + elt_origin: Origin[elt_is_mutable], list_origin: ImmutableOrigin, ]: """Iterator for VariadicListMem. @@ -234,18 +233,23 @@ struct _VariadicListMemIter[ list_origin: The origin of the VariadicListMem. """ - alias variadic_list_type = VariadicListMem[elt_type, elt_origin] + alias variadic_list_type = VariadicListMem[ + elt_type, elt_origin._mlir_origin + ] var index: Int - var src: Pointer[Self.variadic_list_type, list_origin] + var src: Pointer[ + Self.variadic_list_type, + list_origin, + ] fn __init__( - inout self, index: Int, ref [list_origin]list: Self.variadic_list_type + mut self, index: Int, ref [list_origin]list: Self.variadic_list_type ): self.index = index self.src = Pointer.address_of(list) - fn __next__(inout self) -> Self.variadic_list_type.reference_type: + fn __next__(mut self) -> Self.variadic_list_type.reference_type: self.index += 1 # TODO: Need to make this return a dereferenced reference, not a # reference that must be deref'd by the user. @@ -261,42 +265,10 @@ struct _VariadicListMemIter[ return len(self.src[]) - self.index -# Helper to compute the union of two origins: -# TODO: parametric aliases would be nice. -struct _lit_origin_union[ - is_mutable: Bool, //, - a: Origin[is_mutable].type, - b: Origin[is_mutable].type, -]: - alias result = __mlir_attr[ - `#lit.origin.union<`, - a, - `,`, - b, - `> : !lit.origin<`, - is_mutable.value, - `>`, - ] - - -struct _lit_mut_cast[ - is_mutable: Bool, //, - operand: Origin[is_mutable].type, - result_mutable: Bool, -]: - alias result = __mlir_attr[ - `#lit.origin.mutcast<`, - operand, - `> : !lit.origin<`, - +result_mutable.value, - `>`, - ] - - struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, ](Sized): """A utility class to access variadic function arguments of memory-only types that may have ownership. It exposes references to the elements in a @@ -304,7 +276,7 @@ struct VariadicListMem[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument. + mut or owned argument. element_type: The type of the elements in the list. origin: The reference origin of the underlying elements. """ @@ -312,7 +284,7 @@ struct VariadicListMem[ alias reference_type = Pointer[element_type, origin] alias _mlir_ref_type = Self.reference_type._mlir_type alias _mlir_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, borrow_in_mem>` + `!kgen.variadic<`, Self._mlir_ref_type, `, read_mem>` ] var value: Self._mlir_type @@ -327,7 +299,7 @@ struct VariadicListMem[ # Life cycle methods # ===-------------------------------------------------------------------===# - # Provide support for borrowed variadic arguments. + # Provide support for read-only variadic arguments. @doc_private @always_inline @implicit @@ -340,11 +312,11 @@ struct VariadicListMem[ self.value = value self._is_owned = False - # Provide support for variadics of *inout* arguments. The reference will + # Provide support for variadics of *mut* arguments. The reference will # automatically be inferred to be mutable, and the !kgen.variadic will have - # convention=inout. + # convention=mut. alias _inout_variadic_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, inout>` + `!kgen.variadic<`, Self._mlir_ref_type, `, mut>` ] @always_inline @@ -434,13 +406,12 @@ struct VariadicListMem[ fn __getitem__( self, idx: Int ) -> ref [ - _lit_origin_union[ - origin, - # cast mutability of self to match the mutability of the element, - # since that is what we want to use in the ultimate reference and - # the union overall doesn't matter. - _lit_mut_cast[__origin_of(self), elt_is_mutable].result, - ].result + # cast mutability of self to match the mutability of the element, + # since that is what we want to use in the ultimate reference and + # the union overall doesn't matter. + Origin[elt_is_mutable] + .cast_from[__origin_of(origin, self)] + .result ] element_type: """Gets a single element on the variadic list. @@ -470,9 +441,9 @@ struct VariadicListMem[ ](0, self) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicPack -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] @@ -481,7 +452,7 @@ alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] @register_passable struct VariadicPack[ elt_is_mutable: Bool, //, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, element_trait: _AnyTypeMetaType, *element_types: element_trait, ](Sized): @@ -490,7 +461,7 @@ struct VariadicPack[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument pack. + mut or owned argument pack. origin: The reference origin of the underlying elements. element_trait: The trait that each element of the pack conforms to. element_types: The list of types held by the argument pack. @@ -520,7 +491,7 @@ struct VariadicPack[ Args: value: The argument to construct the pack with. - is_owned: Whether this is an 'owned' pack or 'inout'/'borrowed'. + is_owned: Whether this is an 'owned' pack or 'mut'/'read-only'. """ self._value = value self._is_owned = is_owned @@ -603,7 +574,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. @@ -620,7 +591,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index cc5a6d2f1a..0d0fe96750 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -66,7 +66,7 @@ struct Slice( @always_inline fn __init__( - inout self, + mut self, start: Optional[Int], end: Optional[Int], step: Optional[Int], @@ -115,7 +115,7 @@ struct Slice( return self.__str__() @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write Slice string representation to a `Writer`. Parameters: diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index c7cbb756b4..b50ca11e71 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -54,4 +54,38 @@ fn constrained[cond: Bool, msg: StringLiteral = "param assertion failed"](): __mlir_op.`kgen.param.assert`[ cond = cond.__mlir_i1__(), message = msg.value ]() - return + + +@always_inline("nodebug") +fn constrained[cond: Bool, msg: String](): + """Compile time checks that the condition is true. + + The `constrained` is similar to `static_assert` in C++ and is used to + introduce constraints on the enclosing function. In Mojo, the assert places + a constraint on the function. The message is displayed when the assertion + fails, and takes a generalized string. + + Parameters: + cond: The bool value to assert. + msg: The message to display on failure. + + Example: + + ```mojo + from sys.info import num_physical_cores + + def main(): + alias cores_to_use = 2 + multicore_check[cores_to_use]() + + def multicore_check[cores: Int](): + constrained[ + cores <= num_physical_cores(), + "build failed: not enough cores" + ]() + constrained[ + cores >= 2, + "at least two cores are required" + ]() + """ + constrained[cond, StringLiteral.get[msg]()]() diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index d33445e100..c2c0ee1d81 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -78,6 +78,7 @@ fn _coro_resume_noop_callback(null: AnyCoroutine): # ===----------------------------------------------------------------------=== # +@explicit_destroy @register_passable struct Coroutine[type: AnyType, origins: OriginSet]: """Represents a coroutine. @@ -130,12 +131,13 @@ struct Coroutine[type: AnyType, origins: OriginSet]: self._handle = handle @always_inline - fn __del__(owned self): + fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) + __disable_del self @always_inline - fn __await__(owned self) -> type as out: + fn __await__(owned self, out result: type): """Suspends the current coroutine until the coroutine is complete. Returns: @@ -145,12 +147,14 @@ struct Coroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self __mlir_op.`co.await`[_type=NoneType]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), + ) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) ) - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) # ===----------------------------------------------------------------------=== # @@ -158,6 +162,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: # ===----------------------------------------------------------------------=== # +@explicit_destroy @register_passable struct RaisingCoroutine[type: AnyType, origins: OriginSet]: """Represents a coroutine that can raise. @@ -211,12 +216,13 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: self._handle = handle @always_inline - fn __del__(owned self): + fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) + __disable_del self @always_inline - fn __await__(owned self) raises -> type as out: + fn __await__(owned self, out result: type) raises: """Suspends the current coroutine until the coroutine is complete. Returns: @@ -226,10 +232,10 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self if __mlir_op.`co.await`[_type = __mlir_type.i1]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), __mlir_op.`lit.ref.to_pointer`( __get_mvalue_as_litref(__get_nearest_error_slot()) ), @@ -238,4 +244,6 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __get_mvalue_as_litref(__get_nearest_error_slot()) ) __mlir_op.`lit.raise`() - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) + ) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 6d33f5f5e4..e66c968189 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -17,15 +17,20 @@ These are Mojo built-ins, so you don't need to import them. from os import abort -from sys import is_nvidia_gpu, llvm_intrinsic +from sys import is_gpu, is_nvidia_gpu, llvm_intrinsic from sys._build import is_debug_build +from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string -from sys.ffi import external_call, c_uint, c_size_t, c_char -from memory import UnsafePointer -from utils.write import _WriteBufferHeap, _WriteBufferStack, write_args - from builtin._location import __call_location, _SourceLocation +from memory import UnsafePointer, Span + +from utils.write import ( + _ArgBytes, + _WriteBufferHeap, + _WriteBufferStack, + write_args, +) alias defined_mode = env_get_string["ASSERT", "safe"]() @@ -44,7 +49,7 @@ fn _assert_enabled[assert_mode: StringLiteral, cpu_only: Bool]() -> Bool: ]() @parameter - if defined_mode == "none" or (is_nvidia_gpu() and cpu_only): + if defined_mode == "none" or (is_gpu() and cpu_only): return False elif defined_mode == "all" or defined_mode == "warn" or is_debug_build(): return True @@ -236,19 +241,33 @@ fn _debug_assert_msg( var stdout = sys.stdout @parameter - if is_nvidia_gpu(): - var buffer = _WriteBufferHeap[4096](stdout) - buffer.write("At ", loc, ": ") - _write_gpu_thread_context(buffer) - - @parameter - if defined_mode == "warn": - buffer.write(" Assert Warning: ") - else: - buffer.write(" Assert Error: ") - + if is_gpu(): + # Count the total length of bytes to allocate only once + var arg_bytes = _ArgBytes() + arg_bytes.write( + "At ", + loc, + ": ", + _ThreadContext(), + " Assert ", + "Warning: " if defined_mode == "warn" else " Error: ", + ) + write_args(arg_bytes, messages, end="\n") + + var buffer = _WriteBufferHeap(arg_bytes.size + 1) + buffer.write( + "At ", + loc, + ": ", + _ThreadContext(), + " Assert ", + "Warning: " if defined_mode == "warn" else "Error: ", + ) write_args(buffer, messages, end="\n") - buffer.flush() + buffer.data[buffer.pos] = 0 + stdout.write_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) + ) @parameter if defined_mode != "warn": @@ -272,28 +291,43 @@ fn _debug_assert_msg( abort() -# Can't import gpu module at this stage in compilation for thread/block idx -fn _write_gpu_thread_context[W: Writer](inout writer: W): - writer.write("block: [") - _write_id["block", "x"](writer) - writer.write(",") - _write_id["block", "y"](writer) - writer.write(",") - _write_id["block", "z"](writer) - writer.write("] thread: [") - _write_id["thread", "x"](writer) - writer.write(",") - _write_id["thread", "y"](writer) - writer.write(",") - _write_id["thread", "z"](writer) - writer.write("]") - - -fn _write_id[ - W: Writer, //, type: StringLiteral, dim: StringLiteral -](inout writer: W): +struct _ThreadContext(Writable): + var block_x: Int32 + var block_y: Int32 + var block_z: Int32 + var thread_x: Int32 + var thread_y: Int32 + var thread_z: Int32 + + fn __init__(out self): + self.block_x = _get_id["block", "x"]() + self.block_y = _get_id["block", "y"]() + self.block_z = _get_id["block", "z"]() + self.thread_x = _get_id["thread", "x"]() + self.thread_y = _get_id["thread", "y"]() + self.thread_z = _get_id["thread", "z"]() + + fn write_to[W: Writer](self, mut writer: W): + writer.write( + "block: [", + self.block_x, + ",", + self.block_y, + ",", + self.block_z, + "] thread: [", + self.thread_x, + ",", + self.thread_y, + ",", + self.thread_z, + "]", + ) + + +fn _get_id[type: StringLiteral, dim: StringLiteral]() -> Int32: alias intrinsic_name = _get_intrinsic_name[type, dim]() - writer.write(llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]()) + return llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]() fn _get_intrinsic_name[ diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index fa7a222492..b8a7dff5d6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. from collections import KeyElement from hashlib._hasher import _HashableWithHasher, _Hasher -from sys import sizeof, bitwidthof, os_is_windows +from sys import bitwidthof, os_is_windows, sizeof alias _mIsSigned = UInt8(1) alias _mIsInteger = UInt8(1 << 7) @@ -66,11 +66,65 @@ struct DType( alias float8e5m2 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E5M2 floating point format whose bitwidth is 8.""" + """Represents a FP8E5M2 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 15 + - nan: {0,1}11111{01,10,11} + - inf: 01111100 + - -inf: 11111100 + - -0: 10000000 + """ + alias float8e5m2fnuz = DType( + __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` + ) + """Represents a FP8E5M2FNUZ floating point format. + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 16 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias float8e4m3 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E4M3 floating point format whose bitwidth is 8.""" + """Represents a FP8E4M3 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some + frameworks, as it does not encode -inf or inf. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 7 + - nan: 01111111, 11111111 + - -0: 10000000 + - fn: finite (no inf or -inf encodings) + """ + alias float8e4m3fnuz = DType( + __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` + ) + """Represents a FP8E4M3FNUZ floating point format. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 8 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias bfloat16 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) @@ -101,6 +155,16 @@ struct DType( """ self = other + @always_inline + @implicit + fn __init__(out self, value: Self.type): + """Construct a DType from MLIR dtype. + + Args: + value: The MLIR dtype. + """ + self.value = value + @staticmethod fn _from_str(str: String) -> DType: """Construct a DType from a string. @@ -132,8 +196,12 @@ struct DType( return DType.index elif str == String("float8e5m2"): return DType.float8e5m2 + elif str == String("float8e5m2fnuz"): + return DType.float8e5m2fnuz elif str == String("float8e4m3"): return DType.float8e4m3 + elif str == String("float8e4m3fnuz"): + return DType.float8e4m3fnuz elif str == String("bfloat16"): return DType.bfloat16 elif str == String("float16"): @@ -160,7 +228,7 @@ struct DType( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this dtype to the provided Writer. @@ -193,8 +261,12 @@ struct DType( return writer.write("index") if self == DType.float8e5m2: return writer.write("float8e5m2") + if self == DType.float8e5m2fnuz: + return writer.write("float8e5m2fnuz") if self == DType.float8e4m3: return writer.write("float8e4m3") + if self == DType.float8e4m3fnuz: + return writer.write("float8e4m3fnuz") if self == DType.bfloat16: return writer.write("bfloat16") if self == DType.float16: @@ -307,7 +379,7 @@ struct DType( """ return hash(UInt8(self._as_i8())) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this `DType` value. Parameters: @@ -397,13 +469,18 @@ struct DType( @always_inline("nodebug") fn is_float8(self) -> Bool: """Returns True if the type is a 8bit-precision floating point type, - e.g. either float8e5m2 or float8e4m3. + e.g. float8e5m2, float8e5m2fnuz, float8e4m3 and float8e4m3fnuz. Returns: True if the type is a 8bit-precision float, false otherwise. """ - return self in (DType.float8e5m2, DType.float8e4m3) + return self in ( + DType.float8e5m2, + DType.float8e4m3, + DType.float8e5m2fnuz, + DType.float8e4m3fnuz, + ) @always_inline("nodebug") fn is_half_float(self) -> Bool: @@ -459,8 +536,12 @@ struct DType( return sizeof[DType.index]() if self == DType.float8e5m2: return sizeof[DType.float8e5m2]() + if self == DType.float8e5m2fnuz: + return sizeof[DType.float8e5m2fnuz]() if self == DType.float8e4m3: return sizeof[DType.float8e4m3]() + if self == DType.float8e4m3fnuz: + return sizeof[DType.float8e4m3fnuz]() if self == DType.bfloat16: return sizeof[DType.bfloat16]() if self == DType.float16: @@ -482,9 +563,9 @@ struct DType( """ return 8 * self.sizeof() - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_integral - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_integral[ @@ -519,9 +600,9 @@ struct DType( else: raise Error("only integral types are supported") - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_floating - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_floating[ @@ -597,9 +678,9 @@ struct DType( "dispatch_custom: dynamic_type does not match any dtype parameters" ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_arithmetic - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_arithmetic[ diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index c319e708ea..e282d56ba0 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -23,9 +23,9 @@ from memory.memory import _free from utils import StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Error -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable @@ -162,7 +162,7 @@ struct Error( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this error to the provided Writer. diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 0803d4f3e0..f5f4e6e5f6 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -34,9 +34,10 @@ with open("my_file.txt", "r") as f: from os import PathLike, abort from sys import external_call, sizeof from sys.ffi import OpaquePointer -from utils import Span, StringRef, StringSlice, write_buffered -from memory import AddressSpace, UnsafePointer +from memory import AddressSpace, UnsafePointer, Span + +from utils import StringRef, StringSlice, write_buffered @register_passable @@ -111,7 +112,7 @@ struct FileHandle: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" if not self.handle: return @@ -404,7 +405,7 @@ struct FileHandle: return pos @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -422,7 +423,7 @@ struct FileHandle: if err_msg: abort(err_msg^.consume_as_error()) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -436,7 +437,9 @@ struct FileHandle: fn _write[ address_space: AddressSpace - ](self, ptr: UnsafePointer[UInt8, address_space], len: Int) raises: + ]( + self, ptr: UnsafePointer[UInt8, address_space=address_space], len: Int + ) raises: """Write the data to the file. Params: diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 241fa10bf3..fef115e471 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -23,11 +23,11 @@ f.close() ``` """ -from utils import Span -from builtin.io import _printf from sys.ffi import external_call -from sys.info import is_nvidia_gpu -from memory import UnsafePointer +from sys.info import is_gpu + +from builtin.io import _printf +from memory import UnsafePointer, Span @value @@ -57,7 +57,7 @@ struct FileDescriptor(Writer): self.value = f._get_raw_fd() @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -67,7 +67,7 @@ struct FileDescriptor(Writer): var len_bytes = len(bytes) @parameter - if is_nvidia_gpu(): + if is_gpu(): _printf["%*s"](len_bytes, bytes.unsafe_ptr()) else: written = external_call["write", Int32]( @@ -81,7 +81,7 @@ struct FileDescriptor(Writer): written, ) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 81308401b5..6cee98bafa 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -17,9 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from math import Ceilable, CeilDivable, Floorable, Truncable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # FloatLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -466,7 +466,7 @@ struct FloatLiteral( # ===------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: FloatLiteral): + fn __iadd__(mut self, rhs: FloatLiteral): """In-place addition operator. Args: @@ -475,7 +475,7 @@ struct FloatLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: FloatLiteral): + fn __isub__(mut self, rhs: FloatLiteral): """In-place subtraction operator. Args: @@ -484,7 +484,7 @@ struct FloatLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: FloatLiteral): + fn __imul__(mut self, rhs: FloatLiteral): """In-place multiplication operator. Args: @@ -493,7 +493,7 @@ struct FloatLiteral( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: FloatLiteral): + fn __itruediv__(mut self, rhs: FloatLiteral): """In-place division. Args: diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 940ac43683..0598bb816a 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -16,16 +16,17 @@ These are Mojo built-ins, so you don't need to import them. """ +from collections import InlineArray, List, Optional from os import abort -from collections import List, Optional, InlineArray -from utils import StringSlice, StaticString + +from utils import StaticString, StringSlice alias _DEFAULT_DIGIT_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz" -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bin -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bin(num: Scalar, /, *, prefix: StaticString = "0b") -> String: @@ -81,9 +82,9 @@ fn bin[T: Indexer, //](num: T, /, *, prefix: StaticString = "0b") -> String: return bin(Scalar[DType.index](index(num)), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # hex -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn hex(value: Scalar, /, *, prefix: StaticString = "0x") -> String: @@ -143,9 +144,9 @@ fn hex(value: Scalar[DType.bool], /, *, prefix: StaticString = "0x") -> String: return hex(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # oct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn oct(value: Scalar, /, *, prefix: StaticString = "0o") -> String: @@ -205,9 +206,9 @@ fn oct(value: Scalar[DType.bool], /, *, prefix: StaticString = "0o") -> String: return oct(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer formatting utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _try_format_int( @@ -248,7 +249,7 @@ fn _write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, @@ -267,7 +268,7 @@ fn _try_write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 960ac5e00b..92cb98be75 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -16,23 +16,23 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import KeyElement - -from math import Ceilable, CeilDivable, Floorable, Truncable -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher -from builtin.io import _snprintf from collections.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, ) +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd +from math import Ceilable, CeilDivable, Floorable, Truncable +from sys import bitwidthof + +from builtin.io import _snprintf +from memory import UnsafePointer from python import Python, PythonObject from python._cpython import Py_ssize_t -from memory import UnsafePointer from utils import Writable, Writer -from utils._visualizers import lldb_formatter_wrapping_type from utils._select import _select_register_value as select -from sys import is_nvidia_gpu, bitwidthof +from utils._visualizers import lldb_formatter_wrapping_type # ===----------------------------------------------------------------------=== # # Indexer @@ -241,21 +241,39 @@ fn int[T: IntableRaising](value: T) raises -> Int: fn int(value: String, base: Int = 10) raises -> Int: - """Parses the given string as an integer in the given base and returns that value. + """Parses and returns the given string as an integer in the given base. - For example, `atol("19")` returns `19`. If the given string cannot be parsed - as an integer value, an error is raised. For example, `atol("hi")` raises an - error. - - If base is 0 the the string is parsed as an Integer literal, - see: https://docs.python.org/3/reference/lexical_analysis.html#integers + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) Args: value: A string to be parsed as an integer in the given base. base: Base used for conversion, value must be between 2 and 36, or 0. Returns: - An integer value that represents the string, or otherwise raises. + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> int("32") + 32 + >>> int("FF", 16) + 255 + >>> int("0xFF", 0) + 255 + >>> int("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). """ return atol(value, base) @@ -400,7 +418,7 @@ struct Int( @always_inline("nodebug") @implicit - fn __init__[IndexerTy: Indexer](inout self, value: IndexerTy): + fn __init__[IndexerTy: Indexer](mut self, value: IndexerTy): """Construct Int from the given Indexer value. Parameters: @@ -742,12 +760,12 @@ struct Int( """ return __mlir_op.`index.or`(self.value, rhs.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Int): + fn __iadd__(mut self, rhs: Int): """Compute `self + rhs` and save the result in self. Args: @@ -756,7 +774,7 @@ struct Int( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Int): + fn __isub__(mut self, rhs: Int): """Compute `self - rhs` and save the result in self. Args: @@ -765,7 +783,7 @@ struct Int( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Int): + fn __imul__(mut self, rhs: Int): """Compute self*rhs and save the result in self. Args: @@ -773,7 +791,7 @@ struct Int( """ self = self * rhs - fn __itruediv__(inout self, rhs: Int): + fn __itruediv__(mut self, rhs: Int): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -785,7 +803,7 @@ struct Int( self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Int): + fn __ifloordiv__(mut self, rhs: Int): """Compute `self // rhs` and save the result in self. Args: @@ -793,7 +811,7 @@ struct Int( """ self = self // rhs - fn __imod__(inout self, rhs: Int): + fn __imod__(mut self, rhs: Int): """Compute `self % rhs` and save the result in self. Args: @@ -802,7 +820,7 @@ struct Int( self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -811,7 +829,7 @@ struct Int( self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Int): + fn __ilshift__(mut self, rhs: Int): """Compute `self << rhs` and save the result in self. Args: @@ -820,7 +838,7 @@ struct Int( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Int): + fn __irshift__(mut self, rhs: Int): """Compute `self >> rhs` and save the result in self. Args: @@ -829,7 +847,7 @@ struct Int( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Int): + fn __iand__(mut self, rhs: Int): """Compute `self & rhs` and save the result in self. Args: @@ -838,7 +856,7 @@ struct Int( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Int): + fn __ixor__(mut self, rhs: Int): """Compute `self ^ rhs` and save the result in self. Args: @@ -847,7 +865,7 @@ struct Int( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Int): + fn __ior__(mut self, rhs: Int): """Compute self|rhs and save the result in self. Args: @@ -855,9 +873,9 @@ struct Int( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Int) -> Int: @@ -1123,7 +1141,7 @@ struct Int( # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.int64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this int value. Parameters: @@ -1136,7 +1154,7 @@ struct Int( @doc_private @staticmethod - fn try_from_python(obj: PythonObject) raises -> Self as result: + fn try_from_python(obj: PythonObject, out result: Self) raises: """Construct an `Int` from a Python integer value. Raises: @@ -1162,7 +1180,7 @@ struct Int( # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this integer to the provided Writer. @@ -1175,7 +1193,7 @@ struct Int( writer.write(Int64(self)) - fn write_padded[W: Writer](self, inout writer: W, width: Int): + fn write_padded[W: Writer](self, mut writer: W, width: Int): """Write the int right-aligned to a set padding. Parameters: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 0432c933d3..3d50918458 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -373,12 +373,12 @@ struct IntLiteral( ](self.value, rhs.value) ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Compute `self + rhs` and save the result in self. Args: @@ -387,7 +387,7 @@ struct IntLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Compute `self - rhs` and save the result in self. Args: @@ -396,7 +396,7 @@ struct IntLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Compute self*rhs and save the result in self. Args: @@ -405,7 +405,7 @@ struct IntLiteral( self = self * rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """Compute self//rhs and save the result in self. Args: @@ -414,7 +414,7 @@ struct IntLiteral( self = self // rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Compute `self << rhs` and save the result in self. Args: @@ -423,7 +423,7 @@ struct IntLiteral( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Compute `self >> rhs` and save the result in self. Args: @@ -432,7 +432,7 @@ struct IntLiteral( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Compute `self & rhs` and save the result in self. Args: @@ -441,7 +441,7 @@ struct IntLiteral( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Compute `self ^ rhs` and save the result in self. Args: @@ -450,7 +450,7 @@ struct IntLiteral( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Compute self|rhs and save the result in self. Args: @@ -458,9 +458,9 @@ struct IntLiteral( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: @@ -717,9 +717,9 @@ struct IntLiteral( """ return -(self // -denominator) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Methods - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn _bit_width(self) -> IntLiteral: diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c2d3f82a33..bb15718f20 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -15,23 +15,30 @@ These are Mojo built-ins, so you don't need to import them. """ +from collections import InlineArray +from sys import _libc as libc from sys import ( bitwidthof, external_call, - stdout, + is_amd_gpu, + is_gpu, is_nvidia_gpu, - _libc as libc, + stdout, ) from sys._libc import dup, fclose, fdopen, fflush from sys.ffi import OpaquePointer -from utils import Span, write_buffered, write_args -from collections import InlineArray from builtin.dtype import _get_dtype_printf_format from builtin.file_descriptor import FileDescriptor from memory import UnsafePointer, memcpy -from utils import StringRef, StaticString, StringSlice +from utils import ( + StaticString, + StringRef, + StringSlice, + write_args, + write_buffered, +) # ===----------------------------------------------------------------------=== # # _file_handle @@ -170,6 +177,9 @@ fn _printf[ _ = external_call["vprintf", Int32]( fmt.unsafe_cstr_ptr(), Pointer.address_of(loaded_pack) ) + elif is_amd_gpu(): + # constrained[False, "_printf on AMDGPU is not implemented"]() + pass else: with _fdopen(file) as fd: _ = __mlir_op.`pop.external_call`[ @@ -255,10 +265,16 @@ fn print[ flush: If set to true, then the stream is forcibly flushed. file: The output stream. """ + + # TODO(MSTDL-1027): Print on AMD GPUs is not implemented yet. + @parameter + if is_amd_gpu(): + return + write_buffered[buffer_size=4096](file, values, sep=sep, end=end) @parameter - if not is_nvidia_gpu(): + if not is_gpu(): if flush: _flush(file=file) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index eb1b088242..428407f857 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -182,7 +182,7 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -191,8 +191,16 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise maximum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.max`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return max(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.max`(x.value, y.value) # ===----------------------------------------------------------------------=== # @@ -236,7 +244,7 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -245,8 +253,16 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise minimum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.min`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return min(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.min`(x.value, y.value) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index 3cfc856b32..2e5dc6ef35 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -75,7 +75,7 @@ struct NoneType( return "None" @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write `None` to a writer stream. Parameters: diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index c54d99fc18..fce05d2476 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -16,10 +16,10 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import Dict, List -from sys.intrinsics import _type_is_eq from sys.ffi import OpaquePointer +from sys.intrinsics import _type_is_eq -from memory import Arc, memcmp, memcpy, UnsafePointer +from memory import ArcPointer, UnsafePointer, memcmp, memcpy from utils import StringRef, Variant @@ -75,11 +75,11 @@ struct _RefCountedList: ref-counted data types. """ - var impl: Arc[List[_ObjectImpl]] + var impl: ArcPointer[List[_ObjectImpl]] """The list value.""" fn __init__(out self): - self.impl = Arc[List[_ObjectImpl]](List[_ObjectImpl]()) + self.impl = ArcPointer[List[_ObjectImpl]](List[_ObjectImpl]()) @register_passable("trivial") @@ -115,16 +115,16 @@ struct _RefCountedAttrsDict: directly with `x.attr`, the key will always be a `StringLiteral`. """ - var impl: Arc[Dict[StringLiteral, _ObjectImpl]] + var impl: ArcPointer[Dict[StringLiteral, _ObjectImpl]] """The implementation of the map.""" fn __init__(out self): - self.impl = Arc[Dict[StringLiteral, _ObjectImpl]]( + self.impl = ArcPointer[Dict[StringLiteral, _ObjectImpl]]( Dict[StringLiteral, _ObjectImpl]() ) @always_inline - fn set(inout self, key: StringLiteral, value: _ObjectImpl) raises: + fn set(mut self, key: StringLiteral, value: _ObjectImpl) raises: if key in self.impl[]: self.impl[][key].destroy() self.impl[][key] = value @@ -210,7 +210,7 @@ struct _Function(CollectionElement, CollectionElementNew): """The function pointer.""" @always_inline - fn __init__[FnT: AnyTrivialRegType](inout self, value: FnT): + fn __init__[FnT: AnyTrivialRegType](mut self, value: FnT): # FIXME: No "pointer bitcast" for signature function pointers. var f = UnsafePointer[Int16]() UnsafePointer.address_of(f).bitcast[FnT]()[] = value @@ -320,7 +320,8 @@ struct _ObjectImpl( self.value = Self.type(value) @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + @implicit + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): @parameter if dt.is_integral(): self.value = Self.type(value) @@ -517,7 +518,7 @@ struct _ObjectImpl( return self.get_as_int().cast[DType.float64]() @staticmethod - fn coerce_comparison_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_comparison_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing comparisons, in order of increasing priority: bool, int, and then float. @@ -528,7 +529,7 @@ struct _ObjectImpl( return @parameter - fn convert(inout value: _ObjectImpl, id: Int, to: Int): + fn convert(mut value: _ObjectImpl, id: Int, to: Int): if to == Self.int: value = value.convert_bool_to_int() else: @@ -543,7 +544,7 @@ struct _ObjectImpl( convert(lhs, lhsId, rhsId) @staticmethod - fn coerce_arithmetic_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_arithmetic_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing arithmetic operations. Bools are always converted to integers, to match Python's behavior. @@ -560,7 +561,7 @@ struct _ObjectImpl( lhs = lhs.convert_int_to_float() @staticmethod - fn coerce_integral_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_integral_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of integral type to the appropriate lowest-common denominator type for performing bitwise operations. """ @@ -571,7 +572,7 @@ struct _ObjectImpl( else: lhs = lhs.convert_bool_to_int() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. """ @@ -653,7 +654,7 @@ struct _ObjectImpl( # ===------------------------------------------------------------------=== # @always_inline - fn get_list_ptr(self) -> Arc[List[_ObjectImpl]]: + fn get_list_ptr(self) -> ArcPointer[List[_ObjectImpl]]: return self.get_as_list().lst.bitcast[_RefCountedList]()[].impl @always_inline @@ -785,7 +786,8 @@ struct object( self._value = value @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + @implicit + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initializes the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -842,7 +844,8 @@ struct object( self._value = impl @always_inline - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + @implicit + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initializes the object from a list literal. Parameters: @@ -1003,7 +1006,7 @@ struct object( """ return self.__bool__() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. @@ -1537,7 +1540,7 @@ struct object( # ===------------------------------------------------------------------=== # @always_inline - fn __iadd__(inout self, rhs: object) raises: + fn __iadd__(mut self, rhs: object) raises: """In-place addition or concatenation operator. Args: @@ -1546,7 +1549,7 @@ struct object( self = self + rhs @always_inline - fn __isub__(inout self, rhs: object) raises: + fn __isub__(mut self, rhs: object) raises: """In-place subtraction operator. Args: @@ -1555,7 +1558,7 @@ struct object( self = self - rhs @always_inline - fn __imul__(inout self, rhs: object) raises: + fn __imul__(mut self, rhs: object) raises: """In-place multiplication operator. Args: @@ -1564,7 +1567,7 @@ struct object( self = self * rhs @always_inline - fn __ipow__(inout self, rhs: object) raises: + fn __ipow__(mut self, rhs: object) raises: """In-place exponentiation operator. Args: @@ -1573,7 +1576,7 @@ struct object( self = self**rhs @always_inline - fn __imod__(inout self, rhs: object) raises: + fn __imod__(mut self, rhs: object) raises: """In-place modulo operator. Args: @@ -1582,7 +1585,7 @@ struct object( self = self % rhs @always_inline - fn __itruediv__(inout self, rhs: object) raises: + fn __itruediv__(mut self, rhs: object) raises: """In-place true division operator. Args: @@ -1591,7 +1594,7 @@ struct object( self = self / rhs @always_inline - fn __ifloordiv__(inout self, rhs: object) raises: + fn __ifloordiv__(mut self, rhs: object) raises: """In-place floor division operator. Args: @@ -1600,7 +1603,7 @@ struct object( self = self // rhs @always_inline - fn __ilshift__(inout self, rhs: object) raises: + fn __ilshift__(mut self, rhs: object) raises: """In-place left shift operator. Args: @@ -1609,7 +1612,7 @@ struct object( self = self << rhs @always_inline - fn __irshift__(inout self, rhs: object) raises: + fn __irshift__(mut self, rhs: object) raises: """In-place right shift operator. Args: @@ -1618,7 +1621,7 @@ struct object( self = self >> rhs @always_inline - fn __iand__(inout self, rhs: object) raises: + fn __iand__(mut self, rhs: object) raises: """In-place AND operator. Args: @@ -1627,7 +1630,7 @@ struct object( self = self & rhs @always_inline - fn __ior__(inout self, rhs: object) raises: + fn __ior__(mut self, rhs: object) raises: """In-place OR operator. Args: @@ -1636,7 +1639,7 @@ struct object( self = self | rhs @always_inline - fn __ixor__(inout self, rhs: object) raises: + fn __ixor__(mut self, rhs: object) raises: """In-place XOR operator. Args: @@ -1861,7 +1864,7 @@ struct object( var impl = _ImmutableString(UnsafePointer[UInt8].alloc(1), 1) var char = self._value.get_as_string().data[index] impl.data.init_pointee_move(char) - return _ObjectImpl(impl) + return object(impl) return self._value.get_list_element(i._value.get_as_int().value) @always_inline @@ -1936,7 +1939,7 @@ struct object( return self._value.get_obj_attr(key) @always_inline - fn __setattr__(inout self, key: StringLiteral, value: object) raises: + fn __setattr__(mut self, key: StringLiteral, value: object) raises: """Sets the named attribute. Args: diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index b97b8c1586..3bc6b6c96d 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -16,12 +16,14 @@ These are Mojo built-ins, so you don't need to import them. """ +from math import ceildiv + # FIXME(MOCO-658): Explicit conformance to these traits shouldn't be needed. from builtin._stubs import _IntIterable, _StridedIterable, _UIntStridedIterable from python import ( PythonObject, ) # TODO: remove this and fixup downstream imports -from math import ceildiv + from utils._select import _select_register_value as select from utils.string_slice import StringSlice, _StringSliceIter, Stringlike from collections.list import _ListIter @@ -67,7 +69,7 @@ struct _ZeroStartingRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var curr = self.curr self.curr -= 1 return self.end - curr @@ -101,7 +103,7 @@ struct _SequentialRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var start = self.start self.start += 1 return start @@ -141,7 +143,7 @@ struct _StridedRangeIterator(Sized): return 0 @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -169,7 +171,7 @@ struct _StridedRange(Sized, ReversibleRange, _StridedIterable): return _StridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -344,7 +346,7 @@ struct _UIntZeroStartingRange(UIntSized): return self @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var curr = self.curr self.curr -= 1 return self.end - curr @@ -375,7 +377,7 @@ struct _UIntStridedRangeIterator(UIntSized): return select(self.start < self.end, self.end - self.start, 0) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var result = self.start self.start += self.step return result @@ -413,7 +415,7 @@ struct _UIntStridedRange(UIntSized, _UIntStridedIterable): return _UIntStridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: if self.start >= self.end: return self.end var result = self.start @@ -485,7 +487,7 @@ struct _ZeroStartingScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var curr = self.curr self.curr -= 1 return self.end - curr @@ -522,7 +524,7 @@ struct _SequentialScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var start = self.start self.start += 1 return start @@ -564,7 +566,7 @@ struct _StridedScalarRangeIterator[type: DType]: return self.end < self.start @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var result = self.start self.start += self.step return result diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index 50713bd26d..399aa1f859 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,6 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter +from memory.span import Span, _SpanIter from utils.string_slice import _StringSliceIter, StringSlice, Stringlike from .range import _StridedRange @@ -137,7 +138,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictValueIter[K, V, dict_origin]) -> _DictValueIter[ K, V, dict_origin, False ]: @@ -162,7 +163,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictEntryIter[K, V, dict_origin]) -> _DictEntryIter[ K, V, dict_origin, False ]: @@ -186,6 +187,26 @@ fn reversed[ ) +@always_inline +fn reversed[ + T: CollectionElement +](value: Span[T]) -> _SpanIter[T, value.origin, forward=False]: + """Get a reversed iterator of the input Span. + + **Note**: iterators are currently non-raising. + + Parameters: + T: The type of the elements in the Span. + + Args: + value: The Span to get the reversed iterator of. + + Returns: + The reversed iterator of the Span. + """ + return value.__reversed__() + + @always_inline fn reversed[ T: Stringlike diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 9d9fe69a00..d93be3a050 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -16,36 +16,43 @@ These are Mojo built-ins, so you don't need to import them. """ import math +from collections import InlineArray +from collections.string import ( + _calc_format_buffer_size, + _calc_initial_buffer_size, +) +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd +from math import Ceilable, CeilDivable, Floorable, Truncable from math.math import _call_ptx_intrinsic +from os import abort from sys import ( PrefetchOptions, _RegisterPackType, + alignof, + bitwidthof, has_neon, + is_amd_gpu, + is_gpu, + is_nvidia_gpu, is_x86, llvm_intrinsic, prefetch, simdwidthof, - is_nvidia_gpu, - bitwidthof, + sizeof, ) -from sys.info import _current_arch, _is_sm_8x, _is_sm_9x - from sys._assembly import inlined_assembly -from os import abort +from sys.info import _current_arch, _is_sm_8x, _is_sm_9x from bit import pop_count -from documentation import doc_private -from math import Ceilable, CeilDivable, Floorable, Truncable +from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher from builtin.format_int import _try_write_int -from builtin._format_float import _write_float from builtin.io import _snprintf -from collections import InlineArray -from memory import bitcast, UnsafePointer +from documentation import doc_private +from memory import UnsafePointer, bitcast, Span -from utils import StringSlice, StaticTuple, IndexList, Span +from utils import IndexList, StaticTuple, StringSlice from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan @@ -54,17 +61,12 @@ from utils.numerics import max_or_inf as _max_or_inf from utils.numerics import min_finite as _min_finite from utils.numerics import min_or_neg_inf as _min_or_neg_inf from utils.numerics import nan as _nan -from sys import sizeof, alignof from .dtype import ( _get_dtype_printf_format, _integral_type_of, - _unsigned_integral_type_of, _scientific_notation_digits, -) -from collections.string import ( - _calc_format_buffer_size, - _calc_initial_buffer_size, + _unsigned_integral_type_of, ) # ===----------------------------------------------------------------------=== # @@ -92,9 +94,59 @@ alias UInt64 = Scalar[DType.uint64] """Represents a 64-bit unsigned scalar integer.""" alias Float8e5m2 = Scalar[DType.float8e5m2] -"""Represents a FP8E5M2 floating point format whose bitwidth is 8.""" +"""Represents a FP8E5M2 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 15 +- nan: {0,1}11111{01,10,11} +- inf: 01111100 +- -inf: 11111100 +- -0: 10000000 +""" +alias Float8e5m2fnuz = Scalar[DType.float8e5m2fnuz] +"""Represents a FP8E5M2FNUZ floating point format. + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 16 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias Float8e4m3 = Scalar[DType.float8e4m3] -"""Represents a FP8E4M3 floating point format whose bitwidth is 8.""" +"""Represents a FP8E4M3 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some +frameworks, as it does not encode -inf or inf. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 7 +- nan: 01111111, 11111111 +- -0: 10000000 +- fn: finite (no inf or -inf encodings) +""" +alias Float8e4m3fnuz = Scalar[DType.float8e4m3fnuz] +"""Represents a FP8E4M3FNUZ floating point format. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 8 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias BFloat16 = Scalar[DType.bfloat16] """Represents a 16-bit brain floating point value.""" alias Float16 = Scalar[DType.float16] @@ -135,6 +187,13 @@ fn _simd_construction_checks[type: DType, size: Int](): not (type.is_float8() and not _has_native_f8_support()), "f8 is not supported on non sm_89 and sm_90 architectures", ]() + constrained[ + not ( + type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz) + and not is_amd_gpu() + ), + "f8 fnuz variants is only supported for AMD GPU.", + ]() @always_inline("nodebug") @@ -156,12 +215,12 @@ fn _unchecked_zero[type: DType, size: Int]() -> SIMD[type, size]: @always_inline("nodebug") fn _has_native_bf16_support() -> Bool: - return is_nvidia_gpu() + return is_gpu() @always_inline("nodebug") fn _has_native_f8_support() -> Bool: - return _is_sm_9x() or is_nvidia_gpu["sm_89"]() + return _is_sm_9x() or is_nvidia_gpu["sm_89"]() or is_amd_gpu() # ===----------------------------------------------------------------------=== # @@ -222,7 +281,7 @@ struct SIMD[type: DType, size: Int]( alias MIN_FINITE = Self(_min_finite[type]()) """Returns the minimum (lowest) finite value of SIMD value.""" - alias _default_alignment = alignof[Scalar[type]]() if is_nvidia_gpu() else 1 + alias _default_alignment = alignof[Scalar[type]]() if is_gpu() else 1 # ===-------------------------------------------------------------------===# # Life cycle methods @@ -337,7 +396,7 @@ struct SIMD[type: DType, size: Int]( @always_inline("nodebug") @implicit fn __init__( - inout self, + mut self, value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`], ): """Initializes the SIMD vector with the underlying mlir value. @@ -424,16 +483,86 @@ struct SIMD[type: DType, size: Int]( # TODO (#36686): This introduces unneeded casts here to work around # parameter if issues. @parameter - if type is DType.float16: + if type is DType.float8e4m3: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E4M3 + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e4m3fnuz: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E4M3FNUZ + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e5m2: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E5M2 + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e5m2fnuz: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E5M2FNUZ + ](value.value) + ) + ) + ) + ) + elif type is DType.float16: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -451,9 +580,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -471,9 +598,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -491,9 +616,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -507,7 +630,7 @@ struct SIMD[type: DType, size: Int]( fn __init__[ int_type: DType, // - ](inout self, *, from_bits: SIMD[int_type, size]): + ](mut self, *, from_bits: SIMD[int_type, size]): """Initializes the SIMD vector from the bits of an integral SIMD vector. Parameters: @@ -538,7 +661,7 @@ struct SIMD[type: DType, size: Int]( ](self.value, index(idx).value) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Scalar[type]): + fn __setitem__(mut self, idx: Int, val: Scalar[type]): """Sets an element in the vector. Args: @@ -721,7 +844,7 @@ struct SIMD[type: DType, size: Int]( specified exponent value. """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - return _pow[type, size, DType.index](self, exp) + return _pow(self, SIMD[DType.index, size](exp)) # TODO(#22771): remove this overload. @always_inline("nodebug") @@ -995,7 +1118,7 @@ struct SIMD[type: DType, size: Int]( # ===------------------------------------------------------------------=== # @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Performs in-place addition. The vector is mutated where each element at position `i` is computed as @@ -1008,7 +1131,7 @@ struct SIMD[type: DType, size: Int]( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Performs in-place subtraction. The vector is mutated where each element at position `i` is computed as @@ -1021,7 +1144,7 @@ struct SIMD[type: DType, size: Int]( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Performs in-place multiplication. The vector is mutated where each element at position `i` is computed as @@ -1034,7 +1157,7 @@ struct SIMD[type: DType, size: Int]( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: Self): + fn __itruediv__(mut self, rhs: Self): """In-place true divide operator. The vector is mutated where each element at position `i` is computed as @@ -1047,7 +1170,7 @@ struct SIMD[type: DType, size: Int]( self = self / rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """In-place flood div operator. The vector is mutated where each element at position `i` is computed as @@ -1060,7 +1183,7 @@ struct SIMD[type: DType, size: Int]( self = self // rhs @always_inline("nodebug") - fn __imod__(inout self, rhs: Self): + fn __imod__(mut self, rhs: Self): """In-place mod operator. The vector is mutated where each element at position `i` is computed as @@ -1073,7 +1196,7 @@ struct SIMD[type: DType, size: Int]( self = self.__mod__(rhs) @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """In-place pow operator. The vector is mutated where each element at position `i` is computed as @@ -1086,7 +1209,7 @@ struct SIMD[type: DType, size: Int]( self = self.__pow__(rhs) @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Computes `self & rhs` and save the result in `self`. Constraints: @@ -1102,7 +1225,7 @@ struct SIMD[type: DType, size: Int]( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Computes `self ^ rhs` and save the result in `self`. Constraints: @@ -1118,7 +1241,7 @@ struct SIMD[type: DType, size: Int]( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Computes `self | rhs` and save the result in `self`. Constraints: @@ -1134,7 +1257,7 @@ struct SIMD[type: DType, size: Int]( self = self | rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Computes `self << rhs` and save the result in `self`. Constraints: @@ -1147,7 +1270,7 @@ struct SIMD[type: DType, size: Int]( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Computes `self >> rhs` and save the result in `self`. Constraints: @@ -1562,7 +1685,7 @@ struct SIMD[type: DType, size: Int]( """ return _hash_simd(self) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this SIMD value. Parameters: @@ -1701,7 +1824,7 @@ struct SIMD[type: DType, size: Int]( ](self.value) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this SIMD value to the provided Writer. @@ -2206,7 +2329,7 @@ struct SIMD[type: DType, size: Int]( ](self, value, Int64(offset)) @always_inline("nodebug") - fn join(self, other: Self) -> SIMD[type, 2 * size] as result: + fn join(self, other: Self, out result: SIMD[type, 2 * size]): """Concatenates the two vectors together. Args: @@ -2871,17 +2994,13 @@ fn _tbl1( @always_inline fn _pow[ - BaseTy: DType, simd_width: Int, ExpTy: DType -](base: SIMD[BaseTy, simd_width], exp: SIMD[ExpTy, simd_width]) -> __type_of( - base -): + simd_width: Int +](base: SIMD[_, simd_width], exp: SIMD[_, simd_width]) -> __type_of(base): """Computes the power of the elements of a SIMD vector raised to the corresponding elements of another SIMD vector. Parameters: - BaseTy: The `dtype` of the `base` SIMD vector. simd_width: The width of the input and output SIMD vectors. - ExpTy: The `dtype` of the `exp` SIMD vector. Args: base: Base of the power operation. @@ -2892,9 +3011,9 @@ fn _pow[ """ @parameter - if ExpTy.is_floating_point() and BaseTy == ExpTy: + if exp.type.is_floating_point() and base.type is exp.type: return _powf(base, exp) - elif ExpTy.is_integral(): + elif exp.type.is_integral(): # Common cases if all(exp == 2): return base * base @@ -2949,12 +3068,15 @@ fn _powf[ @always_inline -fn _powi[type: DType](base: Scalar[type], exp: Int32) -> __type_of(base): +fn _powi(base: Scalar, exp: Int32) -> __type_of(base): + alias type = base.type + if type.is_integral() and exp < 0: # Not defined for Integers, this should raise an # exception. debug_assert(False, "exponent < 0 is undefined for integers") return 0 + var a = base var b = abs(exp) if type.is_floating_point() else exp var res: Scalar[type] = 1 @@ -3309,16 +3431,6 @@ fn _modf(x: SIMD) -> Tuple[__type_of(x), __type_of(x)]: return (result_int, result_frac) -@always_inline("nodebug") -fn _sub_with_saturation[ - width: Int, // -](a: SIMD[DType.uint8, width], b: SIMD[DType.uint8, width]) -> SIMD[ - DType.uint8, width -]: - # generates a single `vpsubusb` on x86 with AVX - return llvm_intrinsic["llvm.usub.sat", __type_of(a)](a, b) - - # ===----------------------------------------------------------------------=== # # floor # ===----------------------------------------------------------------------=== # @@ -3351,7 +3463,7 @@ fn _floor(x: SIMD) -> __type_of(x): fn _write_scalar[ dtype: DType, W: Writer, //, -](inout writer: W, value: Scalar[dtype]): +](mut writer: W, value: Scalar[dtype]): @parameter if dtype == DType.bool: if value: @@ -3362,24 +3474,10 @@ fn _write_scalar[ elif dtype.is_floating_point(): _write_float(writer, value) - # TODO: bring in modern int formatter and remove GPU specific code + # TODO(MSTDL-1039): bring in performant integer to string formatter elif dtype.is_integral(): - - @parameter - if is_nvidia_gpu(): - var err = _try_write_int(writer, value) - if err: - abort( - "unreachable: unexpected write int failure condition: " - + str(err.value()) - ) - else: - # Stack allocate enough bytes to store any formatted Scalar value. - alias size: Int = _calc_format_buffer_size[dtype]() - var buf = InlineArray[UInt8, size](fill=0) - var wrote = _snprintf[_get_dtype_printf_format[dtype]()]( - buf.unsafe_ptr(), size, value - ) - # SAFETY: - # Create a slice to only those bytes in `buf` that have been initialized. - writer.write_bytes(Span[Byte](buf)[:wrote]) + _ = _try_write_int(writer, value) + else: + constrained[ + False, "unable to write dtype, only integral/float/bool supported" + ]() diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 8e2f0aadbe..23429d9b4f 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -16,16 +16,15 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import List -from sys import bitwidthof from math import ceil +from sys import bitwidthof from bit import count_leading_zeros -from memory import UnsafePointer -from utils import Span +from memory import UnsafePointer, Span -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias insertion_sort_threshold = 32 @@ -259,9 +258,9 @@ fn _quicksort[ stack.append(ImmSpan(ptr=ptr, length=pivot)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stable sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _merge[ @@ -365,9 +364,9 @@ fn _stable_sort[ temp_buff.free() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # partition -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -500,9 +499,9 @@ fn partition[ _partition[_cmp_fn](span, k) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Junction from public to private API @@ -685,9 +684,9 @@ fn sort[ sort[_cmp_fn, stable=stable](span) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort networks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index abf8bb5f0b..ed55ad0704 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -15,25 +15,20 @@ These are Mojo built-ins, so you don't need to import them. """ -from sys.ffi import c_char - -from memory import memcpy, UnsafePointer from collections import List from hashlib._hasher import _HashableWithHasher, _Hasher -from utils import StringRef, Span, StringSlice, StaticString -from utils import Writable, Writer -from utils._visualizers import lldb_formatter_wrapping_type +from sys.ffi import c_char + +from memory import UnsafePointer, memcpy, Span -from utils.string_slice import ( - _StringSliceIter, - _FormatCurlyEntry, - _CurlyEntryFormattable, - _to_string_list, -) +from utils import StaticString, StringRef, StringSlice, Writable, Writer +from utils._visualizers import lldb_formatter_wrapping_type +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry +from utils.string_slice import _StringSliceIter, _to_string_list -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type @@ -88,6 +83,56 @@ struct StringLiteral( """ self = other + # TODO(MOCO-1460): This should be: fn __init__[*, value: String](out self): + # but Mojo tries to bind the parameter in `StringLiteral["foo"]()` to the + # type instead of the initializer. Use a static method to work around this + # for now. + @always_inline("nodebug") + @staticmethod + fn _from_string[value: String]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time String value. + + Parameters: + value: The string value to use. + + Returns: + The string value as a StringLiteral. + """ + return __mlir_attr[ + `#kgen.param.expr : !kgen.string`, + ] + + @always_inline("nodebug") + @staticmethod + fn get[value: String]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time String value. + + Parameters: + value: The value to convert to StringLiteral. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[value]() + + @always_inline("nodebug") + @staticmethod + fn get[type: Stringable, //, value: type]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time stringable value. + + Parameters: + type: The type of the value. + value: The value to serialize. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[str(value)]() + # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# @@ -105,7 +150,7 @@ struct StringLiteral( return __mlir_op.`pop.string.concat`(self.value, rhs.value) @always_inline("nodebug") - fn __iadd__(inout self, rhs: StringLiteral): + fn __iadd__(mut self, rhs: StringLiteral): """Concatenate a string literal to an existing one. Can only be evaluated at compile time using the `alias` keyword, which will write the result into the binary. @@ -370,7 +415,7 @@ struct StringLiteral( """ return hash(self.unsafe_ptr(), len(self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -533,7 +578,7 @@ struct StringLiteral( """ return _FormatCurlyEntry.format(self, args) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string literal to the provided Writer. @@ -599,6 +644,50 @@ struct StringLiteral( """ return str(self).join(elems) + fn join(self, *elems: Int) -> String: + """Joins the elements from the tuple using the current string literal as a + delimiter. + + Args: + elems: The input tuple. + + Returns: + The joined string. + """ + if len(elems) == 0: + return "" + var curr = str(elems[0]) + for i in range(1, len(elems)): + curr += self + str(elems[i]) + return curr + + fn join[*Types: Stringable](self, *elems: *Types) -> String: + """Joins string elements using the current string as a delimiter. + + Parameters: + Types: The types of the elements. + + Args: + elems: The input values. + + Returns: + The joined string. + """ + + var result: String = "" + var is_first = True + + @parameter + fn add_elt[T: Stringable](a: T): + if is_first: + is_first = False + else: + result += self + result += str(a) + + elems.each[add_elt]() + return result + fn split(self, sep: String, maxsplit: Int = -1) raises -> List[String]: """Split the string literal by a separator. diff --git a/stdlib/src/builtin/swap.mojo b/stdlib/src/builtin/swap.mojo index fed7502fd1..549e71e28b 100644 --- a/stdlib/src/builtin/swap.mojo +++ b/stdlib/src/builtin/swap.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. @always_inline -fn swap[T: Movable](inout lhs: T, inout rhs: T): +fn swap[T: Movable](mut lhs: T, mut rhs: T): """Swaps the two given arguments. Parameters: diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 698a73286e..b18221e3b3 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -16,13 +16,14 @@ These are Mojo built-ins, so you don't need to import them. """ from sys.intrinsics import _type_is_eq + from memory import UnsafePointer from utils._visualizers import lldb_formatter_wrapping_type -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Tuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type @@ -58,7 +59,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): @always_inline("nodebug") fn __init__( - inout self, + mut self, *, owned storage: VariadicPack[_, CollectionElement, *element_types], ): @@ -80,8 +81,10 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(self[i]) ) - # Mark the elements as destroyed. - storage._is_owned = False + # Do not destroy the elements when 'storage' goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __del__(owned self): """Destructor that destroys all of the elements.""" @@ -125,6 +128,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(existing[i]).move_pointee_into( UnsafePointer.address_of(self[i]) ) + # Note: The destructor on `existing` is auto-disabled in a moveinit. @always_inline @staticmethod diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 70d70a664e..762746f8c2 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -18,10 +18,10 @@ These are Mojo built-ins, so you don't need to import them. alias AnyTrivialRegType = __mlir_type.`!kgen.type` """Represents any register passable Mojo data type.""" -alias ImmutableOrigin = __mlir_type.`!lit.origin<0>` +alias ImmutableOrigin = Origin[False] """Immutable origin reference type.""" -alias MutableOrigin = __mlir_type.`!lit.origin<1>` +alias MutableOrigin = Origin[True] """Mutable origin reference type.""" alias ImmutableAnyOrigin = __mlir_attr.`#lit.any.origin : !lit.origin<0>` @@ -42,18 +42,78 @@ alias OriginSet = __mlir_type.`!lit.origin.set` """A set of origin parameters.""" -# Helper to build a value of !lit.origin type. -# TODO: Should be a parametric alias. +@value +@register_passable("trivial") struct Origin[is_mutable: Bool]: - """This represents a origin reference of potentially parametric type. - TODO: This should be replaced with a parametric type alias. + """This represents a origin reference for a memory value. Parameters: - is_mutable: Whether the origin reference is mutable. + is_mutable: Whether the origin is mutable. """ - alias type = __mlir_type[ + alias _mlir_type = __mlir_type[ `!lit.origin<`, is_mutable.value, `>`, ] + + alias cast_from = _lit_mut_cast[result_mutable=is_mutable] + """Cast an existing Origin to be of the specified mutability. + + This is a low-level way to coerce Origin mutability. This should be used + rarely, typically when building low-level fundamental abstractions. Strongly + consider alternatives before reaching for this "escape hatch". + + Safety: + This is an UNSAFE operation if used to cast an immutable origin to + a mutable origin. + + Examples: + + Cast a mutable origin to be immutable: + + ```mojo + struct Container[mut: Bool, //, origin: Origin[mut]]: + var data: Int + + fn imm_borrow(self) -> Container[ImmutableOrigin.cast_from[origin].result]: + # ... + ``` + """ + + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + var _mlir_origin: Self._mlir_type + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + # NOTE: + # Needs to be @implicit convertible for the time being so that + # `__origin_of(..)` can implicilty convert to `Origin` in use cases like: + # Span[Byte, __origin_of(self)] + @implicit + @always_inline("nodebug") + fn __init__(out self, mlir_origin: Self._mlir_type): + """Initialize an Origin from a raw MLIR `!lit.origin` value. + + Args: + mlir_origin: The raw MLIR origin value.""" + self._mlir_origin = mlir_origin + + +struct _lit_mut_cast[ + is_mutable: Bool, //, + result_mutable: Bool, + operand: Origin[is_mutable], +]: + alias result = __mlir_attr[ + `#lit.origin.mutcast<`, + operand._mlir_origin, + `> : !lit.origin<`, + result_mutable.value, + `>`, + ] diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 2c0f3f7de9..9c3feb155f 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -15,11 +15,13 @@ These are Mojo built-ins, so you don't need to import them. """ +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd from sys import bitwidthof -from utils._visualizers import lldb_formatter_wrapping_type + from documentation import doc_private -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher + +from utils._visualizers import lldb_formatter_wrapping_type @lldb_formatter_wrapping_type @@ -128,7 +130,7 @@ struct UInt(IntLike, _HashableWithHasher): return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this integer to the provided Writer. Parameters: @@ -166,7 +168,7 @@ struct UInt(IntLike, _HashableWithHasher): # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.uint64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this uint value. Parameters: @@ -396,12 +398,12 @@ struct UInt(IntLike, _HashableWithHasher): """ return __mlir_op.`index.ceildivu`(self.value, denominator.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: UInt): + fn __iadd__(mut self, rhs: UInt): """Compute `self + rhs` and save the result in self. Args: @@ -410,7 +412,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: UInt): + fn __isub__(mut self, rhs: UInt): """Compute `self - rhs` and save the result in self. Args: @@ -419,7 +421,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: UInt): + fn __imul__(mut self, rhs: UInt): """Compute self*rhs and save the result in self. Args: @@ -427,7 +429,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self * rhs - fn __itruediv__(inout self, rhs: UInt): + fn __itruediv__(mut self, rhs: UInt): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -439,7 +441,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: UInt): + fn __ifloordiv__(mut self, rhs: UInt): """Compute `self // rhs` and save the result in self. Args: @@ -447,7 +449,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self // rhs - fn __imod__(inout self, rhs: UInt): + fn __imod__(mut self, rhs: UInt): """Compute `self % rhs` and save the result in self. Args: @@ -456,7 +458,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: UInt): + fn __ipow__(mut self, rhs: UInt): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -465,7 +467,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: UInt): + fn __ilshift__(mut self, rhs: UInt): """Compute `self << rhs` and save the result in self. Args: @@ -474,7 +476,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: UInt): + fn __irshift__(mut self, rhs: UInt): """Compute `self >> rhs` and save the result in self. Args: @@ -483,7 +485,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: UInt): + fn __iand__(mut self, rhs: UInt): """Compute `self & rhs` and save the result in self. Args: @@ -492,7 +494,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: UInt): + fn __ixor__(mut self, rhs: UInt): """Compute `self ^ rhs` and save the result in self. Args: @@ -501,7 +503,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: UInt): + fn __ior__(mut self, rhs: UInt): """Compute self|rhs and save the result in self. Args: @@ -509,9 +511,9 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index fab16a7b44..3dc291c522 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -109,7 +109,7 @@ trait ExplicitlyCopyable: initializer is called intentionally by the programmer. An explicit copy initializer is just a normal `__init__` method that takes - a `borrowed` argument of `Self`. + a `read-only` argument of `Self`. Example implementing the `ExplicitlyCopyable` trait on `Foo` which requires the `__init__(.., Self)` method: diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index e6000ce5fb..55baedf606 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -18,7 +18,8 @@ You can import these APIs from the `collections` package. For example: from collections import Counter ``` """ -from collections.dict import Dict, _DictKeyIter, _DictValueIter, _DictEntryIter +from collections.dict import Dict, _DictEntryIter, _DictKeyIter, _DictValueIter + from utils import Variant @@ -113,7 +114,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self.get(key, 0) - fn __setitem__(inout self, value: V, count: Int): + fn __setitem__(mut self, value: V, count: Int): """Set a value in the keyword Counter by key. Args: @@ -275,7 +276,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Add counts from another Counter to this Counter. Args: @@ -300,7 +301,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """Subtract counts from another Counter from this Counter. Args: @@ -328,7 +329,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """Intersection: keep common elements with the minimum count. Args: @@ -369,7 +370,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Union: keep all elements with the maximum count. Args: @@ -381,7 +382,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): if newcount > 0: self[key] = newcount - fn _keep_positive(inout self): + fn _keep_positive(mut self): """Remove zero and negative counts from the Counter.""" for key_ref in self.keys(): var key = key_ref[] @@ -450,7 +451,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.get(value, default) - fn pop(inout self, value: V) raises -> Int: + fn pop(mut self, value: V) raises -> Int: """Remove a value from the Counter by value. Args: @@ -464,7 +465,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.pop(value) - fn pop(inout self, value: V, owned default: Int) raises -> Int: + fn pop(mut self, value: V, owned default: Int) raises -> Int: """Remove a value from the Counter by value. Args: @@ -506,11 +507,11 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.items() - fn clear(inout self): + fn clear(mut self): """Remove all elements from the Counter.""" self._data.clear() - fn popitem(inout self) raises -> CountTuple[V]: + fn popitem(mut self) raises -> CountTuple[V]: """Remove and return an arbitrary (key, value) pair from the Counter. Returns: @@ -572,7 +573,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): elements.append(item.key) return elements - fn update(inout self, other: Self): + fn update(mut self, other: Self): """Update the Counter, like `dict.update()` but add counts instead of replacing them. @@ -583,7 +584,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): var item = item_ref[] self._data[item.key] = self._data.get(item.key, 0) + item.value - fn subtract(inout self, other: Self): + fn subtract(mut self, other: Self): """Subtract count. Both inputs and outputs may be zero or negative. Args: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 5af332c273..284fb630da 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -21,14 +21,14 @@ from collections import Deque ``` """ -from bit import bit_ceil from collections import Optional -from memory import UnsafePointer +from bit import bit_ceil +from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Deque -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct Deque[ElementType: CollectionElement]( @@ -139,17 +139,15 @@ struct Deque[ElementType: CollectionElement]( Args: values: The values to populate the deque with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__( - inout self, *, owned variadic_list: VariadicListMem[ElementType, _] - ): + fn __init__(mut self, *, owned elements: VariadicListMem[ElementType, _]): """Constructs a deque from the given values. Args: - variadic_list: The values to populate the deque with. + elements: The values to populate the deque with. """ - args_length = len(variadic_list) + args_length = len(elements) if args_length < self.default_capacity: capacity = self.default_capacity @@ -159,12 +157,14 @@ struct Deque[ElementType: CollectionElement]( self = Self(capacity=capacity) for i in range(args_length): - src = UnsafePointer.address_of(variadic_list[i]) + src = UnsafePointer.address_of(elements[i]) dst = self._data + i src.move_pointee_into(dst) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self._tail = args_length @@ -226,7 +226,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Appends the elements of other deque into self. Args: @@ -257,7 +257,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __imul__(inout self, n: Int): + fn __imul__(mut self, n: Int): """Concatenates self `n` times in place. Args: @@ -410,7 +410,7 @@ struct Deque[ElementType: CollectionElement]( fn write_to[ RepresentableElementType: RepresentableCollectionElement, WriterType: Writer, //, - ](self: Deque[RepresentableElementType], inout writer: WriterType): + ](self: Deque[RepresentableElementType], mut writer: WriterType): """Writes `my_deque.__str__()` to a `Writer`. Parameters: @@ -491,7 +491,7 @@ struct Deque[ElementType: CollectionElement]( # Methods # ===-------------------------------------------------------------------===# - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the right side of the deque. Args: @@ -508,7 +508,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn appendleft(inout self, owned value: ElementType): + fn appendleft(mut self, owned value: ElementType): """Appends a value to the left side of the deque. Args: @@ -525,7 +525,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn clear(inout self): + fn clear(mut self): """Removes all elements from the deque leaving it with length 0. Resets the underlying storage capacity to `_min_capacity`. @@ -561,7 +561,7 @@ struct Deque[ElementType: CollectionElement]( count += 1 return count - fn extend(inout self, owned values: List[ElementType]): + fn extend(mut self, owned values: List[ElementType]): """Extends the right side of the deque by consuming elements of the list argument. Args: @@ -593,7 +593,7 @@ struct Deque[ElementType: CollectionElement]( (src + i).move_pointee_into(self._data + self._tail) self._tail = self._physical_index(self._tail + 1) - fn extendleft(inout self, owned values: List[ElementType]): + fn extendleft(mut self, owned values: List[ElementType]): """Extends the left side of the deque by consuming elements from the list argument. Acts as series of left appends resulting in reversed order of elements in the list argument. @@ -676,7 +676,7 @@ struct Deque[ElementType: CollectionElement]( return idx raise "ValueError: Given element is not in deque" - fn insert(inout self, idx: Int, owned value: ElementType) raises: + fn insert(mut self, idx: Int, owned value: ElementType) raises: """Inserts the `value` into the deque at position `idx`. Args: @@ -723,10 +723,7 @@ struct Deque[ElementType: CollectionElement]( fn remove[ EqualityElementType: EqualityComparableCollectionElement, // - ]( - inout self: Deque[EqualityElementType], - value: EqualityElementType, - ) raises: + ](mut self: Deque[EqualityElementType], value: EqualityElementType,) raises: """Removes the first occurrence of the `value`. Parameters: @@ -797,7 +794,7 @@ struct Deque[ElementType: CollectionElement]( return (self._data + self._head)[] - fn pop(inout self) raises -> ElementType as element: + fn pop(mut self, out element: ElementType) raises: """Removes and returns the element from the right side of the deque. Returns: @@ -821,7 +818,7 @@ struct Deque[ElementType: CollectionElement]( return - fn popleft(inout self) raises -> ElementType as element: + fn popleft(mut self, out element: ElementType) raises: """Removes and returns the element from the left side of the deque. Returns: @@ -845,7 +842,7 @@ struct Deque[ElementType: CollectionElement]( return - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the deque in-place.""" last = self._head + len(self) - 1 for i in range(len(self) // 2): @@ -855,7 +852,7 @@ struct Deque[ElementType: CollectionElement]( (self._data + src).move_pointee_into(self._data + dst) (self._data + src).init_pointee_move(tmp^) - fn rotate(inout self, n: Int = 1): + fn rotate(mut self, n: Int = 1): """Rotates the deque by `n` steps. If `n` is positive, rotates to the right. @@ -932,7 +929,7 @@ struct Deque[ElementType: CollectionElement]( """ return logical_index & (self._capacity - 1) - fn _prepare_for_new_elements(inout self, n_total: Int, n_retain: Int): + fn _prepare_for_new_elements(mut self, n_total: Int, n_retain: Int): """Prepares the deque’s internal buffer for adding new elements by reallocating memory and retaining the specified number of existing elements. @@ -958,7 +955,7 @@ struct Deque[ElementType: CollectionElement]( self._head = 0 self._tail = n_retain - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): """Relocates data to a new storage buffer. Args: @@ -998,7 +995,7 @@ struct Deque[ElementType: CollectionElement]( struct _DequeIter[ deque_mutability: Bool, //, ElementType: CollectionElement, - deque_lifetime: Origin[deque_mutability].type, + deque_lifetime: Origin[deque_mutability], forward: Bool = True, ]: """Iterator for Deque. @@ -1018,7 +1015,7 @@ struct _DequeIter[ fn __iter__(self) -> Self: return self - fn __next__(inout self) -> Pointer[ElementType, deque_lifetime]: + fn __next__(mut self) -> Pointer[ElementType, deque_lifetime]: @parameter if forward: self.index += 1 diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index e6c8c2a821..99aa18c45f 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -31,12 +31,13 @@ value types must always be Movable so we can resize the dictionary as it grows. See the `Dict` docs for more details. """ +from sys.ffi import OpaquePointer + +from bit import is_power_of_two from builtin.value import StringableCollectionElement +from memory import UnsafePointer, bitcast, memcpy from .optional import Optional -from bit import is_power_of_two -from sys.ffi import OpaquePointer -from memory import memcpy, bitcast, UnsafePointer trait KeyElement(CollectionElement, Hashable, EqualityComparable): @@ -60,7 +61,7 @@ struct _DictEntryIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable DictEntry references. @@ -78,7 +79,7 @@ struct _DictEntryIter[ var src: Pointer[Dict[K, V], dict_origin] fn __init__( - inout self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] + mut self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] ): self.index = index self.seen = seen @@ -89,7 +90,7 @@ struct _DictEntryIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[DictEntry[K, V], __origin_of(self.src[]._entries[0].value())]: while True: var opt_entry_ref = Pointer.address_of( @@ -119,7 +120,7 @@ struct _DictKeyIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable Dict key references. @@ -140,7 +141,7 @@ struct _DictKeyIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[K, __origin_of(self.iter.__next__()[].key)]: return Pointer.address_of(self.iter.__next__()[].key) @@ -157,7 +158,7 @@ struct _DictValueIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over Dict value references. These are mutable if the dict @@ -186,7 +187,7 @@ struct _DictValueIter[ ) ) - fn __next__(inout self) -> Self.ref_type: + fn __next__(mut self) -> Self.ref_type: var entry_ref = self.iter.__next__() # Cast through a pointer to grant additional mutability because # _DictEntryIter.next erases it. @@ -330,7 +331,7 @@ struct _DictIndex: var data = self.data.bitcast[Int64]() return int(data.load(slot & (reserved - 1))) - fn set_index(inout self, reserved: Int, slot: Int, value: Int): + fn set_index(mut self, reserved: Int, slot: Int, value: Int): if reserved <= 128: var data = self.data.bitcast[Int8]() return data.store(slot & (reserved - 1), value) @@ -598,7 +599,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self._find_ref(key) - fn __setitem__(inout self, owned key: K, owned value: V): + fn __setitem__(mut self, owned key: K, owned value: V): """Set a value in the dictionary by key. Args: @@ -649,7 +650,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( result.update(other) return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Merge self with other in place. Args: @@ -804,7 +805,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self.find(key).or_else(default) - fn pop(inout self, key: K, owned default: V) -> V: + fn pop(mut self, key: K, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -821,7 +822,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( except: return default - fn pop(inout self, key: K) raises -> V: + fn pop(mut self, key: K) raises -> V: """Remove a value from the dictionary by key. Args: @@ -849,7 +850,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( return entry_value^.reap_value() raise "KeyError" - fn popitem(inout self) raises -> DictEntry[K, V]: + fn popitem(mut self) raises -> DictEntry[K, V]: """Remove and return a (key, value) pair from the dictionary. Pairs are returned in LIFO order. popitem() is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError. @@ -915,7 +916,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return _DictEntryIter(0, 0, self) - fn update(inout self, other: Self, /): + fn update(mut self, other: Self, /): """Update the dictionary with the key/value pairs from other, overwriting existing keys. The argument must be positional only. @@ -925,7 +926,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( for entry in other.items(): self[entry[].key] = entry[].value - fn clear(inout self): + fn clear(mut self): """Remove all elements from the dictionary.""" self.size = 0 self._n_entries = 0 @@ -933,7 +934,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( self._index = _DictIndex(self._reserved()) fn setdefault( - inout self, key: K, owned default: V + mut self, key: K, owned default: V ) raises -> ref [self._find_ref(key)] V: """Get a value from the dictionary by key, or set it to a default if it doesn't exist. @@ -959,12 +960,12 @@ struct Dict[K: KeyElement, V: CollectionElement]( entries.append(None) return entries - fn _insert(inout self, owned key: K, owned value: V): + fn _insert(mut self, owned key: K, owned value: V): self._insert(DictEntry[K, V](key^, value^)) fn _insert[ safe_context: Bool = False - ](inout self, owned entry: DictEntry[K, V]): + ](mut self, owned entry: DictEntry[K, V]): @parameter if not safe_context: self._maybe_resize() @@ -982,10 +983,10 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _get_index(self, slot: Int) -> Int: return self._index.get_index(self._reserved(), slot) - fn _set_index(inout self, slot: Int, index: Int): + fn _set_index(mut self, slot: Int, index: Int): return self._index.set_index(self._reserved(), slot, index) - fn _next_index_slot(self, inout slot: Int, inout perturb: UInt64): + fn _next_index_slot(self, mut slot: Int, mut perturb: UInt64): alias PERTURB_SHIFT = 5 perturb >>= PERTURB_SHIFT slot = ((5 * slot) + int(perturb + 1)) & (self._reserved() - 1) @@ -1022,7 +1023,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _over_compact_factor(self) -> Bool: return 4 * self._n_entries > 3 * self._reserved() - fn _maybe_resize(inout self): + fn _maybe_resize(mut self): if not self._over_load_factor(): if self._over_compact_factor(): self._compact() @@ -1039,7 +1040,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( if entry: self._insert[safe_context=True](entry.unsafe_take()) - fn _compact(inout self): + fn _compact(mut self): self._index = _DictIndex(self._reserved()) var right = 0 for left in range(self.size): @@ -1128,7 +1129,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict[key] @always_inline - fn __setitem__(inout self, key: Self.key_type, value: V): + fn __setitem__(mut self, key: Self.key_type, value: V): """Set a value in the keyword dictionary by key. Args: @@ -1181,7 +1182,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.find(key) @always_inline - fn pop(inout self, key: self.key_type, owned default: V) -> V: + fn pop(mut self, key: self.key_type, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -1196,7 +1197,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.pop(key, default^) @always_inline - fn pop(inout self, key: self.key_type) raises -> V: + fn pop(mut self, key: self.key_type) raises -> V: """Remove a value from the dictionary by key. Args: @@ -1269,9 +1270,9 @@ struct OwnedKwargsDict[V: CollectionElement]( return _DictEntryIter(0, 0, self._dict) @always_inline - fn _insert(inout self, owned key: Self.key_type, owned value: V): + fn _insert(mut self, owned key: Self.key_type, owned value: V): self._dict._insert(key^, value^) @always_inline - fn _insert(inout self, key: StringLiteral, owned value: V): + fn _insert(mut self, key: StringLiteral, owned value: V): self._insert(String(key), value^) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index b1c833b75c..6901ed1327 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -21,12 +21,13 @@ from collections import InlineArray from collections._index_normalization import normalize_index from sys.intrinsics import _type_is_eq + from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _inline_array_construction_checks[size: Int](): @@ -111,7 +112,7 @@ struct InlineArray[ ]() fn __init__( - inout self, + mut self, *, owned unsafe_assume_initialized: InlineArray[ UnsafeMaybeUninitialized[Self.ElementType], Self.size @@ -170,7 +171,7 @@ struct InlineArray[ @always_inline fn __init__( - inout self, + mut self, *, owned storage: VariadicListMem[Self.ElementType, _], ): @@ -193,8 +194,10 @@ struct InlineArray[ var eltptr = UnsafePointer.address_of(self.unsafe_get(i)) UnsafePointer.address_of(storage[i]).move_pointee_into(eltptr) - # Mark the elements as already destroyed. - storage._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __init__(out self, *, other: Self): """Explicitly copy the provided value. diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 9d5610ff36..f98e307940 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -20,18 +20,19 @@ from collections import InlineList """ from sys.intrinsics import _type_is_eq + from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value struct _InlineListIter[ list_mutability: Bool, //, T: CollectionElementNew, capacity: Int, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for InlineList. @@ -53,7 +54,7 @@ struct _InlineListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, __origin_of(self.src[][0])]: @parameter if forward: @@ -242,7 +243,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): count += int(rebind[C](e[]) == value) return count - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the list. Args: diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 1ed439c040..13ee261638 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -20,17 +20,17 @@ from collections import List """ -from sys.intrinsics import _type_is_eq -from sys import sizeof from os import abort -from memory import Pointer, UnsafePointer, memcpy -from utils import Span +from sys import sizeof +from sys.intrinsics import _type_is_eq + +from memory import Pointer, UnsafePointer, memcpy, Span from .optional import Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -38,7 +38,7 @@ struct _ListIter[ list_mutability: Bool, //, T: CollectionElement, hint_trivial_type: Bool, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for List. @@ -61,7 +61,7 @@ struct _ListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, list_origin]: @parameter if forward: @@ -142,26 +142,28 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: values: The values to populate the list with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__(out self, *, owned variadic_list: VariadicListMem[T, _]): + fn __init__(out self, *, owned elements: VariadicListMem[T, _]): """Constructs a list from the given values. Args: - variadic_list: The values to populate the list with. + elements: The values to populate the list with. """ - var length = len(variadic_list) + var length = len(elements) self = Self(capacity=length) for i in range(length): - var src = UnsafePointer.address_of(variadic_list[i]) + var src = UnsafePointer.address_of(elements[i]) var dest = self.data + i src.move_pointee_into(dest) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self.size = length @@ -176,9 +178,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for value in span: self.append(value[]) - fn __init__( - inout self, *, ptr: UnsafePointer[T], length: Int, capacity: Int - ): + fn __init__(mut self, *, ptr: UnsafePointer[T], length: Int, capacity: Int): """Constructs a list from a pointer, its length, and its capacity. Args: @@ -318,7 +318,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.__mul(x) return result^ - fn __imul__(inout self, x: Int): + fn __imul__(mut self, x: Int): """Multiplies the list by x in place. Args: @@ -339,7 +339,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.extend(other^) return result^ - fn __iadd__(inout self, owned other: Self): + fn __iadd__(mut self, owned other: Self): """Appends the elements of other into self. Args: @@ -418,7 +418,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( @no_inline fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: List[U, *_], inout writer: W): + ](self: List[U, *_], mut writer: W): """Write `my_list.__str__()` to a `Writer`. Parameters: @@ -475,7 +475,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ return len(self) * sizeof[T]() - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): var new_data = UnsafePointer[T].alloc(new_capacity) _move_pointee_into_many_elements[hint_trivial_type]( @@ -489,7 +489,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.data = new_data self.capacity = new_capacity - fn append(inout self, owned value: T): + fn append(mut self, owned value: T): """Appends a value to this list. Args: @@ -500,7 +500,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + self.size).init_pointee_move(value^) self.size += 1 - fn insert(inout self, i: Int, owned value: T): + fn insert(mut self, i: Int, owned value: T): """Inserts a value to the list at the given index. `a.insert(len(a), value)` is equivalent to `a.append(value)`. @@ -529,7 +529,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( earlier_idx -= 1 later_idx -= 1 - fn __mul(inout self, x: Int): + fn __mul(mut self, x: Int): """Appends the original elements of this list x-1 times. ```mojo @@ -548,7 +548,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for i in range(x - 1): self.extend(orig) - fn extend(inout self, owned other: List[T, *_]): + fn extend(mut self, owned other: List[T, *_]): """Extends this list by consuming the elements of `other`. Args: @@ -588,7 +588,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # list. self.size = final_size - fn pop(inout self, i: Int = -1) -> T: + fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. Args: @@ -612,7 +612,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self._realloc(self.capacity // 2) return ret_val^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. If the current capacity is greater or equal, this is a no-op. @@ -625,7 +625,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return self._realloc(new_capacity) - fn resize(inout self, new_size: Int, value: T): + fn resize(mut self, new_size: Int, value: T): """Resizes the list to the given new size. If the new size is smaller than the current one, elements at the end @@ -644,7 +644,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + i).init_pointee_copy(value) self.size = new_size - fn resize(inout self, new_size: Int): + fn resize(mut self, new_size: Int): """Resizes the list to the given new size. With no new value provided, the new size must be smaller than or equal @@ -665,7 +665,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = new_size self.reserve(new_size) - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the list.""" var earlier_idx = 0 @@ -742,13 +742,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return i raise "ValueError: Given element is not in list" - fn clear(inout self): + fn clear(mut self): """Clears the elements in the list.""" for i in range(self.size): (self.data + i).destroy_pointee() self.size = 0 - fn steal_data(inout self) -> UnsafePointer[T]: + fn steal_data(mut self) -> UnsafePointer[T]: """Take ownership of the underlying pointer from the list. Returns: @@ -838,7 +838,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return (self.data + idx)[] @always_inline - fn unsafe_set(inout self, idx: Int, owned value: T): + fn unsafe_set(mut self, idx: Int, owned value: T): """Write a value to a given location without checking index bounds. Users should consider using `my_list[idx] = value` instead of this method as it @@ -895,7 +895,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( count += 1 return count - fn swap_elements(inout self, elt_idx_1: Int, elt_idx_2: Int): + fn swap_elements(mut self, elt_idx_1: Int, elt_idx_2: Int): """Swaps elements at the specified indexes if they are different. ```mojo diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 2bcaf9ea8e..73518b55a5 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -32,6 +32,7 @@ print(d) # prints 2 """ from os import abort + from utils import Variant @@ -42,9 +43,9 @@ struct _NoneType(CollectionElement, CollectionElementNew): pass -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -280,7 +281,7 @@ struct Optional[T: CollectionElement]( fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: Optional[U], inout writer: W): + ](self: Optional[U], mut writer: W): """Write Optional string representation to a `Writer`. Parameters: @@ -332,7 +333,7 @@ struct Optional[T: CollectionElement]( debug_assert(self.__bool__(), ".value() on empty Optional") return self._value.unsafe_get[T]() - fn take(inout self) -> T: + fn take(mut self) -> T: """Move the value out of the Optional. The caller takes ownership over the new value, which is moved @@ -350,7 +351,7 @@ struct Optional[T: CollectionElement]( abort(".take() on empty Optional") return self.unsafe_take() - fn unsafe_take(inout self) -> T: + fn unsafe_take(mut self) -> T: """Unsafely move the value out of the Optional. The caller takes ownership over the new value, which is moved @@ -382,9 +383,9 @@ struct Optional[T: CollectionElement]( return default -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # OptionalReg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 10451bc126..9c017dbfe8 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -15,9 +15,9 @@ from .dict import ( Dict, KeyElement, + RepresentableKeyElement, _DictEntryIter, _DictKeyIter, - RepresentableKeyElement, ) @@ -149,7 +149,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.intersection(other) - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """In-place set intersection. Updates the set to contain only the elements which are already in @@ -172,7 +172,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.union(other) - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """In-place set union. Updates the set to contain all elements in the `other` set @@ -195,7 +195,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.difference(other) - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """In-place set subtraction. Updates the set to remove any elements from the `other` set. @@ -260,7 +260,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.symmetric_difference(other) - fn __ixor__(inout self, other: Self): + fn __ixor__(mut self, other: Self): """Overloads the ^= operator. Works like as `symmetric_difference_update` method. Updates the set with the symmetric difference of itself and another set. @@ -334,7 +334,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): fn write_to[ W: Writer, U: RepresentableKeyElement, - ](self: Set[U], inout writer: W): + ](self: Set[U], mut writer: W): """Write Set string representation to a `Writer`. Parameters: @@ -366,7 +366,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # here we rely on Set being a trivial wrapper of a Dict return _DictKeyIter(_DictEntryIter(0, 0, self._data)) - fn add(inout self, t: T): + fn add(mut self, t: T): """Add an element to the set. Args: @@ -374,7 +374,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data[t] = None - fn remove(inout self, t: T) raises: + fn remove(mut self, t: T) raises: """Remove an element from the set. Args: @@ -385,7 +385,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data.pop(t) - fn pop(inout self) raises -> T: + fn pop(mut self) raises -> T: """Remove any one item from the set, and return it. As an implementation detail this will remove the first item @@ -454,7 +454,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): result.add(e[]) return result^ - fn update(inout self, other: Self): + fn update(mut self, other: Self): """In-place set update. Updates the set to contain all elements in the `other` set @@ -466,7 +466,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): for e in other: self.add(e[]) - fn intersection_update(inout self, other: Self): + fn intersection_update(mut self, other: Self): """In-place set intersection update. Updates the set by retaining only elements found in both this set and the `other` set, @@ -479,7 +479,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # careful about concurrent iteration + mutation self.difference_update(self - other) - fn difference_update(inout self, other: Self): + fn difference_update(mut self, other: Self): """In-place set subtraction. Updates the set by removing all elements found in the `other` set, @@ -566,7 +566,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): return result^ - fn symmetric_difference_update(inout self, other: Self): + fn symmetric_difference_update(mut self, other: Self): """Updates the set with the symmetric difference of itself and another set. Args: @@ -574,7 +574,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self = self.symmetric_difference(other) - fn discard(inout self, value: T): + fn discard(mut self, value: T): """Remove a value from the set if it exists. Pass otherwise. Args: @@ -585,7 +585,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): except: pass - fn clear(inout self): + fn clear(mut self): """Removes all elements from the set. This method modifies the set in-place, removing all of its elements. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 363c9a6929..ba1eae54be 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -17,42 +17,39 @@ These are Mojo built-ins, so you don't need to import them. from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index +from hashlib._hasher import _HashableWithHasher, _Hasher from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char -from utils import StaticString, write_args +from sys.intrinsics import _type_is_eq from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy +from memory import UnsafePointer, memcmp, memcpy, Span from python import PythonObject -from sys.intrinsics import _type_is_eq -from hashlib._hasher import _HashableWithHasher, _Hasher - from utils import ( - Span, IndexList, + StaticString, StringRef, StringSlice, Variant, Writable, Writer, + write_args, ) -from utils.string_slice import ( - _utf8_byte_type, - _StringSliceIter, - _unicode_codepoint_utf8_byte_length, - _shift_unicode_to_utf8, - _FormatCurlyEntry, - _CurlyEntryFormattable, - _to_string_list, -) - from utils._unicode import ( is_lowercase, is_uppercase, to_lowercase, to_uppercase, ) +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry +from utils.string_slice import ( + _shift_unicode_to_utf8, + _StringSliceIter, + _to_string_list, + _unicode_codepoint_utf8_byte_length, + _utf8_byte_type, +) # ===----------------------------------------------------------------------=== # # ord @@ -235,15 +232,15 @@ fn ascii(value: String) -> String: # ===----------------------------------------------------------------------=== # -fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: - """Implementation of `atol` for StringRef inputs. +fn _atol(str_slice: StringSlice, base: Int = 10) raises -> Int: + """Implementation of `atol` for StringSlice inputs. Please see its docstring for details. """ if (base != 0) and (base < 2 or base > 36): raise Error("Base must be >= 2 and <= 36, or 0.") - if not str_ref: - raise Error(_atol_error(base, str_ref)) + if not str_slice: + raise Error(_str_to_base_error(base, str_slice)) var real_base: Int var ord_num_max: Int @@ -253,53 +250,23 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: var is_negative: Bool = False var has_prefix: Bool = False var start: Int = 0 - var str_len = len(str_ref) - var buff = str_ref.unsafe_ptr() - - for pos in range(start, str_len): - if _isspace(buff[pos]): - continue + var str_len = str_slice.byte_length() - if str_ref[pos] == "-": - is_negative = True - start = pos + 1 - elif str_ref[pos] == "+": - start = pos + 1 - else: - start = pos - break - - if str_ref[start] == "0" and start + 1 < str_len: - if base == 2 and ( - str_ref[start + 1] == "b" or str_ref[start + 1] == "B" - ): - start += 2 - has_prefix = True - elif base == 8 and ( - str_ref[start + 1] == "o" or str_ref[start + 1] == "O" - ): - start += 2 - has_prefix = True - elif base == 16 and ( - str_ref[start + 1] == "x" or str_ref[start + 1] == "X" - ): - start += 2 - has_prefix = True + start, is_negative = _trim_and_handle_sign(str_slice, str_len) alias ord_0 = ord("0") - # FIXME: - # Change this to `alias` after fixing support for __getitem__ of alias. - var ord_letter_min = (ord("a"), ord("A")) + alias ord_letter_min = (ord("a"), ord("A")) alias ord_underscore = ord("_") if base == 0: - var real_base_new_start = _identify_base(str_ref, start) + var real_base_new_start = _identify_base(str_slice, start) real_base = real_base_new_start[0] start = real_base_new_start[1] has_prefix = real_base != 10 if real_base == -1: - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) else: + start, has_prefix = _handle_base_prefix(start, str_slice, str_len, base) real_base = base if real_base <= 10: @@ -311,21 +278,23 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: ord("A") + (real_base - 11), ) + var buff = str_slice.unsafe_ptr() var found_valid_chars_after_start = False var has_space_after_number = False + # Prefixed integer literals with real_base 2, 8, 16 may begin with leading # underscores under the conditions they have a prefix - var was_last_digit_undescore = not (real_base in (2, 8, 16) and has_prefix) + var was_last_digit_underscore = not (real_base in (2, 8, 16) and has_prefix) for pos in range(start, str_len): var ord_current = int(buff[pos]) if ord_current == ord_underscore: - if was_last_digit_undescore: - raise Error(_atol_error(base, str_ref)) + if was_last_digit_underscore: + raise Error(_str_to_base_error(base, str_slice)) else: - was_last_digit_undescore = True + was_last_digit_underscore = True continue else: - was_last_digit_undescore = False + was_last_digit_underscore = False if ord_0 <= ord_current <= ord_num_max: result += ord_current - ord_0 found_valid_chars_after_start = True @@ -340,45 +309,100 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: start = pos + 1 break else: - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) if pos + 1 < str_len and not _isspace(buff[pos + 1]): var nextresult = result * real_base if nextresult < result: raise Error( - _atol_error(base, str_ref) + _str_to_base_error(base, str_slice) + " String expresses an integer too large to store in Int." ) result = nextresult - if was_last_digit_undescore or (not found_valid_chars_after_start): - raise Error(_atol_error(base, str_ref)) + if was_last_digit_underscore or (not found_valid_chars_after_start): + raise Error(_str_to_base_error(base, str_slice)) if has_space_after_number: for pos in range(start, str_len): if not _isspace(buff[pos]): - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) if is_negative: result = -result return result -fn _atol_error(base: Int, str_ref: StringSlice[_]) -> String: +@always_inline +fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): + """Trims leading whitespace, handles the sign of the number in the string. + + Args: + str_slice: A StringSlice containing the number to parse. + str_len: The length of the string. + + Returns: + A tuple containing: + - The starting index of the number after whitespace and sign. + - A boolean indicating whether the number is negative. + """ + var buff = str_slice.unsafe_ptr() + var start: Int = 0 + while start < str_len and _isspace(buff[start]): + start += 1 + var p: Bool = buff[start] == ord("+") + var n: Bool = buff[start] == ord("-") + return start + (p or n), n + + +@always_inline +fn _handle_base_prefix( + pos: Int, str_slice: StringSlice, str_len: Int, base: Int +) -> (Int, Bool): + """Adjusts the starting position if a valid base prefix is present. + + Handles "0b"/"0B" for base 2, "0o"/"0O" for base 8, and "0x"/"0X" for base + 16. Only adjusts if the base matches the prefix. + + Args: + pos: Current position in the string. + str_slice: The input StringSlice. + str_len: Length of the input string. + base: The specified base. + + Returns: + A tuple containing: + - Updated position after the prefix, if applicable. + - A boolean indicating if the prefix was valid for the given base. + """ + var start = pos + var buff = str_slice.unsafe_ptr() + if start + 1 < str_len: + var prefix_char = chr(int(buff[start + 1])) + if buff[start] == ord("0") and ( + (base == 2 and (prefix_char == "b" or prefix_char == "B")) + or (base == 8 and (prefix_char == "o" or prefix_char == "O")) + or (base == 16 and (prefix_char == "x" or prefix_char == "X")) + ): + start += 2 + return start, start != pos + + +fn _str_to_base_error(base: Int, str_slice: StringSlice) -> String: return ( "String is not convertible to integer with base " + str(base) + ": '" - + str(str_ref) + + str(str_slice) + "'" ) -fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: - var length = len(str_ref) +fn _identify_base(str_slice: StringSlice[_], start: Int) -> Tuple[Int, Int]: + var length = str_slice.byte_length() # just 1 digit, assume base 10 if start == (length - 1): return 10, start - if str_ref[start] == "0": - var second_digit = str_ref[start + 1] + if str_slice[start] == "0": + var second_digit = str_slice[start + 1] if second_digit == "b" or second_digit == "B": return 2, start + 2 if second_digit == "o" or second_digit == "O": @@ -388,7 +412,7 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: # checking for special case of all "0", "_" are also allowed var was_last_character_underscore = False for i in range(start + 1, length): - if str_ref[i] == "_": + if str_slice[i] == "_": if was_last_character_underscore: return -1, -1 else: @@ -396,9 +420,9 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: continue else: was_last_character_underscore = False - if str_ref[i] != "0": + if str_slice[i] != "0": return -1, -1 - elif ord("1") <= ord(str_ref[start]) <= ord("9"): + elif ord("1") <= ord(str_slice[start]) <= ord("9"): return 10, start else: return -1, -1 @@ -409,19 +433,37 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: fn atol(str: String, base: Int = 10) raises -> Int: """Parses and returns the given string as an integer in the given base. - For example, `atol("19")` returns `19`. If base is 0 the the string is - parsed as an Integer literal, see: https://docs.python.org/3/reference/lexical_analysis.html#integers. - - Raises: - If the given string cannot be parsed as an integer value. For example in - `atol("hi")`. + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) Args: str: A string to be parsed as an integer in the given base. base: Base used for conversion, value must be between 2 and 36, or 0. Returns: - An integer value that represents the string, or otherwise raises. + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> atol("32") + 32 + >>> atol("FF", 16) + 255 + >>> atol("0xFF", 0) + 255 + >>> atol("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). """ return _atol(str.as_string_slice(), base) @@ -743,7 +785,8 @@ struct String( @always_inline @implicit fn __init__(out self, owned impl: List[UInt8, *_]): - """Construct a string from a buffer of bytes. + """Construct a string from a buffer of bytes without copying the + allocated data. The buffer must be terminated with a null byte: @@ -773,6 +816,37 @@ struct String( ptr=impl.steal_data(), length=size, capacity=capacity ) + @always_inline + @implicit + fn __init__(out self, impl: Self._buffer_type): + """Construct a string from a buffer of bytes, copying the allocated + data. Use the transfer operator ^ to avoid the copy. + + The buffer must be terminated with a null byte: + + ```mojo + var buf = List[UInt8]() + buf.append(ord('H')) + buf.append(ord('i')) + buf.append(0) + var hi = String(buf) + ``` + + Args: + impl: The buffer. + """ + debug_assert( + len(impl) > 0 and impl[-1] == 0, + "expected last element of String buffer to be null terminator", + ) + # We make a backup because steal_data() will clear size and capacity. + var size = impl.size + debug_assert( + impl[size - 1] == 0, + "expected last element of String buffer to be null terminator", + ) + self._buffer = impl + @always_inline fn __init__(out self): """Construct an uninitialized string.""" @@ -861,7 +935,7 @@ struct String( # Factory dunders # ===------------------------------------------------------------------=== # - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """Write a byte span to this String. Args: @@ -870,7 +944,7 @@ struct String( """ self._iadd[False](bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -1224,7 +1298,7 @@ struct String( """ return Self._add[True](other.as_bytes(), self.as_bytes()) - fn _iadd[has_null: Bool](inout self, other: Span[Byte]): + fn _iadd[has_null: Bool](mut self, other: Span[Byte]): var s_len = self.byte_length() var o_len = len(other) var o_ptr = other.unsafe_ptr() @@ -1245,7 +1319,7 @@ struct String( s_ptr[sum_len] = 0 @always_inline - fn __iadd__(inout self, other: String): + fn __iadd__(mut self, other: String): """Appends another string to this string. Args: @@ -1254,7 +1328,7 @@ struct String( self._iadd[True](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringLiteral): + fn __iadd__(mut self, other: StringLiteral): """Appends another string literal to this string. Args: @@ -1263,7 +1337,7 @@ struct String( self._iadd[False](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringSlice): + fn __iadd__(mut self, other: StringSlice): """Appends another string slice to this string. Args: @@ -1380,7 +1454,7 @@ struct String( # Methods # ===------------------------------------------------------------------=== # - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string to the provided Writer. @@ -1435,7 +1509,6 @@ struct String( result.write(a) elems.each[add_elt]() - _ = is_first return result fn join[T: StringableCollectionElement](self, elems: List[T, *_]) -> String: @@ -1580,7 +1653,7 @@ struct String( var length = len(self._buffer) return length - int(length > 0) - fn _steal_ptr(inout self) -> UnsafePointer[UInt8]: + fn _steal_ptr(mut self) -> UnsafePointer[UInt8]: """Transfer ownership of pointer to the underlying memory. The caller is responsible for freeing up the memory. @@ -1774,7 +1847,7 @@ struct String( # Python adds all "whitespace chars" as one separator # if no separator was specified for s in self[lhs:]: - if not str(s).isspace(): # TODO: with StringSlice.isspace() + if not s.isspace(): break lhs += s.byte_length() # if it went until the end of the String, then @@ -1788,7 +1861,7 @@ struct String( break rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) for s in self[lhs + num_bytes(self.unsafe_ptr()[lhs]) :]: - if str(s).isspace(): # TODO: with StringSlice.isspace() + if s.isspace(): break rhs += s.byte_length() @@ -1874,7 +1947,7 @@ struct String( res.append(0) return String(res^) - fn strip(self, chars: String) -> String: + fn strip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing characters removed. @@ -1887,7 +1960,7 @@ struct String( return self.lstrip(chars).rstrip(chars) - fn strip(self) -> String: + fn strip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing whitespaces removed. @@ -1896,7 +1969,7 @@ struct String( """ return self.lstrip().rstrip() - fn rstrip(self, chars: String) -> String: + fn rstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing characters removed. Args: @@ -1906,29 +1979,17 @@ struct String( A copy of the string with no trailing characters. """ - var r_idx = self.byte_length() - while r_idx > 0 and self[r_idx - 1] in chars: - r_idx -= 1 - - return self[:r_idx] + return self.as_string_slice().rstrip(chars) - fn rstrip(self) -> String: + fn rstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing whitespaces removed. Returns: A copy of the string with no trailing whitespaces. """ - var r_idx = self.byte_length() - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self.__reversed__(): - # if not s.isspace(): - # break - # r_idx -= 1 - while r_idx > 0 and _isspace(self._buffer.unsafe_get(r_idx - 1)): - r_idx -= 1 - return self[:r_idx] - - fn lstrip(self, chars: String) -> String: + return self.as_string_slice().rstrip() + + fn lstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading characters removed. Args: @@ -1938,29 +1999,15 @@ struct String( A copy of the string with no leading characters. """ - var l_idx = 0 - while l_idx < self.byte_length() and self[l_idx] in chars: - l_idx += 1 + return self.as_string_slice().lstrip(chars) - return self[l_idx:] - - fn lstrip(self) -> String: + fn lstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading whitespaces removed. Returns: A copy of the string with no leading whitespaces. """ - var l_idx = 0 - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self: - # if not s.isspace(): - # break - # l_idx += 1 - while l_idx < self.byte_length() and _isspace( - self._buffer.unsafe_get(l_idx) - ): - l_idx += 1 - return self[l_idx:] + return self.as_string_slice().lstrip() fn __hash__(self) -> UInt: """Hash the underlying buffer using builtin hash. @@ -1972,7 +2019,7 @@ struct String( """ return hash(self.as_string_slice()) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -2267,7 +2314,7 @@ struct String( var result = String(buffer) return result^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. Args: diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 8812b4b61c..62196e6a15 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -19,14 +19,15 @@ from collections import InlinedFixedVector ``` """ -from memory import Pointer, UnsafePointer, memcpy from sys import sizeof +from memory import Pointer, UnsafePointer, memcpy + from utils import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _VecIter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -41,7 +42,7 @@ struct _VecIter[ var size: Int var vec: UnsafePointer[vec_type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.i += 1 return deref(self.vec, self.i - 1) @@ -53,9 +54,9 @@ struct _VecIter[ return self.size - self.i -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlinedFixedVector -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -174,7 +175,7 @@ struct InlinedFixedVector[ self.dynamic_data = UnsafePointer[type]() @always_inline - fn append(inout self, value: type): + fn append(mut self, value: type): """Appends a value to this vector. Args: @@ -224,7 +225,7 @@ struct InlinedFixedVector[ return self.dynamic_data[normalized_idx - Self.static_size] @always_inline - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): """Sets a vector element at the given index. Args: @@ -244,7 +245,7 @@ struct InlinedFixedVector[ else: self.dynamic_data[normalized_idx - Self.static_size] = value - fn clear(inout self): + fn clear(mut self): """Clears the elements in the vector.""" self.current_size = 0 @@ -254,7 +255,7 @@ struct InlinedFixedVector[ alias _iterator = _VecIter[type, Self, Self._deref_iter_impl] - fn __iter__(inout self) -> Self._iterator: + fn __iter__(mut self) -> Self._iterator: """Iterate over the vector. Returns: diff --git a/stdlib/src/hashlib/__init__.mojo b/stdlib/src/hashlib/__init__.mojo index 2bdc949799..9de67db15d 100644 --- a/stdlib/src/hashlib/__init__.mojo +++ b/stdlib/src/hashlib/__init__.mojo @@ -11,4 +11,4 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # """Implements the hashlib package that provides various hash algorithms.""" -from .hash import hash, Hashable +from .hash import Hashable, hash diff --git a/stdlib/src/hashlib/_ahash.mojo b/stdlib/src/hashlib/_ahash.mojo index 0845dc8d58..56488c9a8d 100644 --- a/stdlib/src/hashlib/_ahash.mojo +++ b/stdlib/src/hashlib/_ahash.mojo @@ -11,10 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from bit import byte_swap -from bit import rotate_bits_left +from bit import byte_swap, rotate_bits_left from memory import UnsafePointer -from ._hasher import _Hasher, _HashableWithHasher + +from ._hasher import _HashableWithHasher, _Hasher alias U256 = SIMD[DType.uint64, 4] alias U128 = SIMD[DType.uint64, 2] @@ -110,7 +110,7 @@ struct AHasher[key: U256](_Hasher): self.extra_keys = U128(pi_key[2], pi_key[3]) @always_inline - fn _update(inout self, new_data: UInt64): + fn _update(mut self, new_data: UInt64): """Update the buffer value with new data. Args: @@ -119,7 +119,7 @@ struct AHasher[key: U256](_Hasher): self.buffer = _folded_multiply(new_data ^ self.buffer, MULTIPLE) @always_inline - fn _large_update(inout self, new_data: U128): + fn _large_update(mut self, new_data: U128): """Update the buffer value with new data. Args: @@ -129,7 +129,7 @@ struct AHasher[key: U256](_Hasher): var combined = _folded_multiply(xored[0], xored[1]) self.buffer = rotate_bits_left[ROT]((self.buffer + self.pad) ^ combined) - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): """Consume provided data to update the internal buffer. Args: @@ -160,7 +160,7 @@ struct AHasher[key: U256](_Hasher): var value = _read_small(data, length) self._large_update(value) - fn _update_with_simd(inout self, new_data: SIMD[_, _]): + fn _update_with_simd(mut self, new_data: SIMD[_, _]): """Update the buffer value with new data. Args: @@ -182,7 +182,7 @@ struct AHasher[key: U256](_Hasher): for i in range(0, v64.size, 2): self._large_update(U128(v64[i], v64[i + 1])) - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): """Update the buffer value with new hashable value. Args: diff --git a/stdlib/src/hashlib/_hasher.mojo b/stdlib/src/hashlib/_hasher.mojo index 7bd278d5e9..f30e4de21a 100644 --- a/stdlib/src/hashlib/_hasher.mojo +++ b/stdlib/src/hashlib/_hasher.mojo @@ -11,12 +11,13 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from ._ahash import AHasher from memory import UnsafePointer +from ._ahash import AHasher + trait _HashableWithHasher: - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): ... @@ -24,13 +25,13 @@ trait _Hasher: fn __init__(out self): ... - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): ... - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): ... - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): ... fn finish(owned self) -> UInt64: diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index 84f3a82a58..5eddfc21b8 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -26,13 +26,12 @@ There are a few main tools in this module: """ import random - -from sys.ffi import _Global -from sys import simdwidthof, bitwidthof from collections import InlineArray +from sys import bitwidthof, simdwidthof +from sys.ffi import _Global from builtin.dtype import _uint_type_of_width -from memory import memcpy, memset_zero, stack_allocation, bitcast, UnsafePointer +from memory import UnsafePointer, bitcast, memcpy, memset_zero, stack_allocation # ===----------------------------------------------------------------------=== # # Implementation diff --git a/stdlib/src/math/__init__.mojo b/stdlib/src/math/__init__.mojo index 3a9e67e7c7..54b918a837 100644 --- a/stdlib/src/math/__init__.mojo +++ b/stdlib/src/math/__init__.mojo @@ -15,7 +15,7 @@ # In Python, these are in the math module, so we also expose them here. from utils.numerics import inf, isfinite, isinf, isnan, nan, nextafter, ulp -from .constants import pi, e, tau +from .constants import e, pi, tau # These are not part of Python's `math` module, but we define them here. from .math import ( @@ -36,6 +36,7 @@ from .math import ( cbrt, ceil, ceildiv, + clamp, copysign, cos, cosh, @@ -53,19 +54,20 @@ from .math import ( hypot, iota, isclose, + isqrt, j0, j1, lcm, ldexp, lgamma, log, - log10, log1p, log2, + log10, logb, modf, + recip, remainder, - isqrt, scalb, sin, sinh, @@ -75,6 +77,4 @@ from .math import ( trunc, y0, y1, - clamp, - recip, ) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 7371d2a3df..9d5f53e0e4 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -20,26 +20,24 @@ from math import floor """ from collections import List -from sys._assembly import inlined_assembly -from sys.ffi import _external_call_const from sys import ( - llvm_intrinsic, bitwidthof, has_avx512f, - simdwidthof, - is_nvidia_gpu, is_amd_gpu, + is_nvidia_gpu, + llvm_intrinsic, + simdwidthof, sizeof, ) - -from memory import UnsafePointer +from sys._assembly import inlined_assembly +from sys.ffi import _external_call_const +from sys.info import _current_arch from bit import count_trailing_zeros from builtin.dtype import _integral_type_of -from builtin.simd import _simd_apply, _modf -from sys.info import _current_arch +from builtin.simd import _modf, _simd_apply +from memory import UnsafePointer, Span -from utils import Span from utils.index import IndexList from utils.numerics import FPUtils, isnan, nan from utils.static_tuple import StaticTuple @@ -646,6 +644,8 @@ fn frexp[ type: DType, simd_width: Int, // ](x: SIMD[type, simd_width]) -> StaticTuple[SIMD[type, simd_width], 2]: """Breaks floating point values into a fractional part and an exponent part. + This follows C and Python in increasing the exponent by 1 and normalizing the + fraction from 0.5 to 1.0 instead of 1.0 to 2.0. Constraints: The input must be a floating-point type. @@ -665,14 +665,15 @@ fn frexp[ constrained[type.is_floating_point(), "must be a floating point value"]() alias T = SIMD[type, simd_width] alias zero = T(0) - alias max_exponent = FPUtils[type].max_exponent() - 1 + # Add one to the resulting exponent up by subtracting 1 from the bias + alias exponent_bias = FPUtils[type].exponent_bias() - 1 alias mantissa_width = FPUtils[type].mantissa_width() var mask1 = _frexp_mask1[simd_width, type]() var mask2 = _frexp_mask2[simd_width, type]() var x_int = x.to_bits() var selector = x != zero var exp = selector.select( - (((mask1 & x_int) >> mantissa_width) - max_exponent).cast[type](), + (((mask1 & x_int) >> mantissa_width) - exponent_bias).cast[type](), zero, ) var frac = selector.select(T(from_bits=x_int & ~mask1 | mask2), zero) @@ -1109,7 +1110,7 @@ fn iota[ buff.store(i, i + offset) -fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): +fn iota[type: DType, //](mut v: List[Scalar[type], *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Parameters: @@ -1122,7 +1123,7 @@ fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): iota(v.data, len(v), offset) -fn iota(inout v: List[Int, *_], offset: Int = 0): +fn iota(mut v: List[Int, *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Args: @@ -1155,6 +1156,23 @@ fn fma(a: Int, b: Int, c: Int) -> Int: return a * b + c +@always_inline +fn fma(a: UInt, b: UInt, c: UInt) -> UInt: + """Performs `fma` (fused multiply-add) on the inputs. + + The result is `(a * b) + c`. + + Args: + a: The first input. + b: The second input. + c: The third input. + + Returns: + `(a * b) + c`. + """ + return a * b + c + + @always_inline("nodebug") fn fma[ type: DType, simd_width: Int @@ -1401,7 +1419,9 @@ fn cos[ instruction="cos.approx.ftz.f32", constraints="=f,f" ](x) elif is_amd_gpu(): - return llvm_intrinsic["llvm.cos", __type_of(x)](x) + return llvm_intrinsic["llvm.cos", __type_of(x), has_side_effect=False]( + x + ) else: return _call_libm["cos"](x) @@ -1436,7 +1456,9 @@ fn sin[ instruction="sin.approx.ftz.f32", constraints="=f,f" ](x) elif is_amd_gpu(): - return llvm_intrinsic["llvm.sin", __type_of(x)](x) + return llvm_intrinsic["llvm.sin", __type_of(x), has_side_effect=False]( + x + ) else: return _call_libm["sin"](x) @@ -1615,7 +1637,9 @@ fn log10(x: SIMD) -> __type_of(x): * log10_2 ) elif is_amd_gpu(): - return llvm_intrinsic["llvm.log10", __type_of(x)](x) + return llvm_intrinsic[ + "llvm.log10", __type_of(x), has_side_effect=False + ](x) return _call_libm["log10"](x) diff --git a/stdlib/src/math/polynomial.mojo b/stdlib/src/math/polynomial.mojo index 8397218380..35384d33c1 100644 --- a/stdlib/src/math/polynomial.mojo +++ b/stdlib/src/math/polynomial.mojo @@ -21,9 +21,9 @@ from math.polynomial import polynomial_evaluate from collections import List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # polynomial_evaluate -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -49,9 +49,9 @@ fn polynomial_evaluate[ return _horner_evaluate[coefficients](x) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Horner Method -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index 06684698a7..2717a5127a 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # """Implements the memory package.""" -from .arc import Arc +from .arc import ArcPointer from .memory import memcmp, memcpy, memset, memset_zero, stack_allocation from .owned_pointer import OwnedPointer from .pointer import AddressSpace, Pointer +from .span import AsBytes, Span from .unsafe import bitcast, pack_bits from .unsafe_pointer import UnsafePointer diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index fa904d53e8..8680d06560 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -10,47 +10,21 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Pointer-counted smart pointers. +"""Reference-counted smart pointers. -Example usage: +You can import these APIs from the `memory` package. For example: ```mojo -from memory import Arc -var p = Arc(4) -var p2 = p -p2[]=3 -print(3 == p[]) +from memory import ArcPointer ``` - -Subscripting(`[]`) is done by `Pointer`, -in order to ensure that the underlying `Arc` outlive the operation. - -It is highly DISCOURAGED to manipulate an `Arc` through `UnsafePointer`. -Mojo's ASAP deletion policy ensure values are destroyed at last use. -Do not unsafely dereference the `Arc` inner `UnsafePointer` field. -See [Lifecycle](https://docs.modular.com/mojo/manual/lifecycle/). - -```mojo -# Illustration of what NOT to do, in order to understand: -print(Arc(String("ok"))._inner[].payload) -#........................^ASAP ^already freed -``` - -Always use `Pointer` subscripting (`[]`): - -```mojo -print(Arc(String("ok"))[]) -``` - """ from os.atomic import Atomic -from builtin.builtin_list import _lit_mut_cast from memory import UnsafePointer, stack_allocation -struct _ArcInner[T: Movable]: +struct _ArcPointerInner[T: Movable]: var refcount: Atomic[DType.uint64] var payload: T @@ -60,33 +34,60 @@ struct _ArcInner[T: Movable]: self.refcount = Scalar[DType.uint64](1) self.payload = value^ - fn add_ref(inout self): + fn add_ref(mut self): """Atomically increment the refcount.""" _ = self.refcount.fetch_add(1) - fn drop_ref(inout self) -> Bool: + fn drop_ref(mut self) -> Bool: """Atomically decrement the refcount and return true if the result hits zero.""" return self.refcount.fetch_sub(1) == 1 @register_passable -struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): +struct ArcPointer[T: Movable]( + CollectionElement, CollectionElementNew, Identifiable +): """Atomic reference-counted pointer. This smart pointer owns an instance of `T` indirectly managed on the heap. This pointer is copyable, including across threads, maintaining a reference count to the underlying data. + When you initialize an `ArcPointer` with a value, it allocates memory and + moves the value into the allocated memory. Copying an instance of an + `ArcPointer` increments the reference count. Destroying an instance + decrements the reference count. When the reference count reaches zero, + `ArcPointer` destroys the value and frees its memory. + This pointer itself is thread-safe using atomic accesses to reference count the underlying data, but references returned to the underlying data are not - thread safe. + thread-safe. + + Subscripting an `ArcPointer` (`ptr[]`) returns a mutable reference to the + stored value. This is the only safe way to access the stored value. Other + methods, such as using the `unsafe_ptr()` method to retrieve an unsafe + pointer to the stored value, or accessing the private fields of an + `ArcPointer`, are unsafe and may result in memory errors. + + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + + Examples: + + ```mojo + from memory import ArcPointer + var p = ArcPointer(4) + var p2 = p + p2[]=3 + print(3 == p[]) + ``` Parameters: T: The type of the stored value. """ - alias _inner_type = _ArcInner[T] + alias _inner_type = _ArcPointerInner[T] var _inner: UnsafePointer[Self._inner_type] @implicit @@ -98,7 +99,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): value: The value to manage. """ self._inner = UnsafePointer[Self._inner_type].alloc(1) - # Cannot use init_pointee_move as _ArcInner isn't movable. + # Cannot use init_pointee_move as _ArcPointerInner isn't movable. __get_address_as_uninit_lvalue(self._inner.address) = Self._inner_type( value^ ) @@ -125,9 +126,9 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): @no_inline fn __del__(owned self): - """Delete the smart pointer reference. + """Delete the smart pointer. - Decrement the ref count for the reference. If there are no more + Decrement the reference count for the stored value. If there are no more references, delete the object and free its memory.""" if self._inner[].drop_ref(): # Call inner destructor, then free the memory. @@ -135,7 +136,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): self._inner.free() # FIXME: The origin returned for this is currently self origin, which - # keeps the Arc object alive as long as there are references into it. That + # keeps the ArcPointer object alive as long as there are references into it. That # said, this isn't really the right modeling, we need hierarchical origins # to model the mutability and invalidation of the returned reference # correctly. @@ -144,7 +145,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life, result_mutable=True].result + MutableOrigin.cast_from[self_life].result ] T: """Returns a mutable reference to the managed value. @@ -160,7 +161,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): """Retrieves a pointer to the underlying memory. Returns: - The UnsafePointer to the underlying memory. + The `UnsafePointer` to the pointee. """ # TODO: consider removing this method. return UnsafePointer.address_of(self._inner[].payload) @@ -174,23 +175,27 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): return self._inner[].refcount.load() fn __is__(self, rhs: Self) -> Bool: - """Returns True if the two Arcs point at the same object. + """Returns True if the two `ArcPointer` instances point at the same + object. Args: - rhs: The other Arc. + rhs: The other `ArcPointer`. Returns: - True if the two Arcs point at the same object and False otherwise. + True if the two `ArcPointers` instances point at the same object and + False otherwise. """ return self._inner == rhs._inner fn __isnot__(self, rhs: Self) -> Bool: - """Returns True if the two Arcs point at different objects. + """Returns True if the two `ArcPointer` instances point at different + objects. Args: - rhs: The other Arc. + rhs: The other `ArcPointer`. Returns: - True if the two Arcs point at different objects and False otherwise. + True if the two `ArcPointer` instances point at different objects + and False otherwise. """ return self._inner != rhs._inner diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 20901a6fff..8d224bdd88 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -62,7 +62,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn __init__[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """The memory is now considered initialized. @@ -98,7 +98,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn copy_from[ CopyableType: ExplicitlyCopyable ]( - inout self: UnsafeMaybeUninitialized[CopyableType], + mut self: UnsafeMaybeUninitialized[CopyableType], other: UnsafeMaybeUninitialized[CopyableType], ): """Copy another object. @@ -117,7 +117,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): @always_inline fn copy_from[ CopyableType: ExplicitlyCopyable - ](inout self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): + ](mut self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): """Copy another object. This function assumes that the current memory is uninitialized. @@ -152,8 +152,8 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], - inout other: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], + mut other: UnsafeMaybeUninitialized[MovableType], ): """Move another object. @@ -174,7 +174,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], other: UnsafePointer[MovableType], ): """Move another object. @@ -196,7 +196,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn write[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """Write a value into an uninitialized memory location. @@ -235,7 +235,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): return UnsafePointer.address_of(self._array).bitcast[Self.ElementType]() @always_inline - fn assume_initialized_destroy(inout self): + fn assume_initialized_destroy(mut self): """Runs the destructor of the internal value. Calling this method assumes that the memory is initialized. diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index ab215ab5b0..8d3a525cb4 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -20,17 +20,18 @@ from memory import memcmp """ +from collections import Optional +from sys import _libc as libc from sys import ( alignof, - llvm_intrinsic, - sizeof, - is_gpu, external_call, - simdwidthof, + is_gpu, + llvm_intrinsic, simdbitwidth, - _libc as libc, + simdwidthof, + sizeof, ) -from collections import Optional + from memory.pointer import AddressSpace, _GPUAddressSpace # ===----------------------------------------------------------------------=== # @@ -43,15 +44,19 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcmp -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _memcmp_impl_unconstrained[ type: DType -](s1: UnsafePointer[Scalar[type], _], s2: __type_of(s1), count: Int) -> Int: +]( + s1: UnsafePointer[Scalar[type], **_], + s2: UnsafePointer[Scalar[type], **_], + count: Int, +) -> Int: alias simd_width = simdwidthof[type]() if count < simd_width: for i in range(count): @@ -95,7 +100,11 @@ fn _memcmp_impl_unconstrained[ @always_inline fn _memcmp_impl[ type: DType -](s1: UnsafePointer[Scalar[type], _], s2: __type_of(s1), count: Int) -> Int: +]( + s1: UnsafePointer[Scalar[type], **_], + s2: UnsafePointer[Scalar[type], **_], + count: Int, +) -> Int: constrained[type.is_integral(), "the input dtype must be integral"]() return _memcmp_impl_unconstrained(s1, s2, count) @@ -104,8 +113,8 @@ fn _memcmp_impl[ fn memcmp[ type: AnyType, address_space: AddressSpace ]( - s1: UnsafePointer[type, address_space], - s2: UnsafePointer[type, address_space], + s1: UnsafePointer[type, address_space=address_space], + s2: UnsafePointer[type, address_space=address_space], count: Int, ) -> Int: """Compares two buffers. Both strings are assumed to be of the same length. @@ -137,14 +146,14 @@ fn memcmp[ return _memcmp_impl(s1.bitcast[Byte](), s2.bitcast[Byte](), byte_count) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcpy -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _memcpy_impl( - dest_data: UnsafePointer[Byte, *_], src_data: __type_of(dest_data), n: Int + dest_data: UnsafePointer[Byte, **_], src_data: __type_of(dest_data), n: Int ): """Copies a memory area. @@ -228,8 +237,8 @@ fn _memcpy_impl( fn memcpy[ T: AnyType ]( - dest: UnsafePointer[T, AddressSpace.GENERIC, *_], - src: UnsafePointer[T, AddressSpace.GENERIC, *_], + dest: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + src: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], count: Int, ): """Copies a memory area. @@ -250,15 +259,19 @@ fn memcpy[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") fn _memset_impl[ address_space: AddressSpace -](ptr: UnsafePointer[Byte, address_space], value: Byte, count: Int): +]( + ptr: UnsafePointer[Byte, address_space=address_space], + value: Byte, + count: Int, +): alias simd_width = simdwidthof[Byte]() var vector_end = _align_down(count, simd_width) @@ -272,7 +285,11 @@ fn _memset_impl[ @always_inline fn memset[ type: AnyType, address_space: AddressSpace -](ptr: UnsafePointer[type, address_space], value: Byte, count: Int): +]( + ptr: UnsafePointer[type, address_space=address_space], + value: Byte, + count: Int, +): """Fills memory with the given value. Parameters: @@ -287,15 +304,15 @@ fn memset[ _memset_impl(ptr.bitcast[Byte](), value, count * sizeof[type]()) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn memset_zero[ type: AnyType, address_space: AddressSpace, // -](ptr: UnsafePointer[type, address_space], count: Int): +](ptr: UnsafePointer[type, address_space=address_space], count: Int): """Fills memory with zeros. Parameters: @@ -312,7 +329,7 @@ fn memset_zero[ @always_inline fn memset_zero[ type: DType, address_space: AddressSpace, //, *, count: Int -](ptr: UnsafePointer[Scalar[type], address_space]): +](ptr: UnsafePointer[Scalar[type], address_space=address_space]): """Fills memory with zeros. Parameters: @@ -339,9 +356,9 @@ fn memset_zero[ ptr.store(i, 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stack_allocation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -351,7 +368,7 @@ fn stack_allocation[ /, alignment: Int = alignof[type]() if is_gpu() else 1, address_space: AddressSpace = AddressSpace.GENERIC, -]() -> UnsafePointer[Scalar[type], address_space]: +]() -> UnsafePointer[Scalar[type], address_space=address_space]: """Allocates data buffer space on the stack given a data type and number of elements. @@ -378,7 +395,7 @@ fn stack_allocation[ name: Optional[StringLiteral] = None, alignment: Int = alignof[type]() if is_gpu() else 1, address_space: AddressSpace = AddressSpace.GENERIC, -]() -> UnsafePointer[type, address_space]: +]() -> UnsafePointer[type, address_space=address_space]: """Allocates data buffer space on the stack given a data type and number of elements. @@ -402,7 +419,9 @@ fn stack_allocation[ return __mlir_op.`pop.global_alloc`[ name = global_name.value, count = count.value, - _type = UnsafePointer[type, address_space]._mlir_type, + _type = UnsafePointer[ + type, address_space=address_space + ]._mlir_type, alignment = alignment.value, ]() # MSTDL-797: The NVPTX backend requires that `alloca` instructions may @@ -415,20 +434,22 @@ fn stack_allocation[ alignment = alignment.value, ]() return __mlir_op.`pop.pointer.bitcast`[ - _type = UnsafePointer[type, address_space]._mlir_type + _type = UnsafePointer[ + type, address_space=address_space + ]._mlir_type ](generic_ptr) # Perofrm a stack allocation of the requested size, alignment, and type. return __mlir_op.`pop.stack_allocation`[ count = count.value, - _type = UnsafePointer[type, address_space]._mlir_type, + _type = UnsafePointer[type, address_space=address_space]._mlir_type, alignment = alignment.value, ]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # malloc -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -438,26 +459,29 @@ fn _malloc[ *, alignment: Int = alignof[type]() if is_gpu() else 1, ](size: Int, /) -> UnsafePointer[ - type, AddressSpace.GENERIC, alignment=alignment + type, address_space = AddressSpace.GENERIC, alignment=alignment ]: @parameter if is_gpu(): return external_call[ - "malloc", UnsafePointer[NoneType, AddressSpace.GENERIC] + "malloc", + UnsafePointer[NoneType, address_space = AddressSpace.GENERIC], ](size).bitcast[type]() else: return __mlir_op.`pop.aligned_alloc`[ - _type = UnsafePointer[type, AddressSpace.GENERIC]._mlir_type + _type = UnsafePointer[ + type, address_space = AddressSpace.GENERIC + ]._mlir_type ](alignment.value, size.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # aligned_free -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline -fn _free(ptr: UnsafePointer[_, AddressSpace.GENERIC, *_]): +fn _free(ptr: UnsafePointer[_, address_space = AddressSpace.GENERIC, *_, **_]): @parameter if is_gpu(): libc.free(ptr.bitcast[NoneType]()) diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 4f00050e89..4dd473023c 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, stack_allocation, memcpy +from memory import UnsafePointer, memcpy, stack_allocation struct OwnedPointer[T: AnyType]: @@ -21,17 +21,20 @@ struct OwnedPointer[T: AnyType]: system such that no more than one mutable alias for the underlying data may exist. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: T: The type to be stored in the OwnedPointer[]. """ - var _inner: UnsafePointer[T, AddressSpace.GENERIC] + var _inner: UnsafePointer[T, address_space = AddressSpace.GENERIC] # ===-------------------------------------------------------------------===# # Life cycle methods # ===-------------------------------------------------------------------===# - fn __init__[T: Movable](inout self: OwnedPointer[T], owned value: T): + fn __init__[T: Movable](mut self: OwnedPointer[T], owned value: T): """Construct a new OwnedPointer[] by moving the passed value into a new backing allocation. Parameters: @@ -45,7 +48,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, copy_value: T): + ](mut self: OwnedPointer[T], *, copy_value: T): """Construct a new OwnedPointer[] by explicitly copying the passed value into a new backing allocation. Parameters: @@ -59,7 +62,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: Copyable, U: NoneType = None - ](inout self: OwnedPointer[T], value: T): + ](mut self: OwnedPointer[T], value: T): """Construct a new OwnedPointer[] by copying the passed value into a new backing allocation. Parameters: @@ -74,7 +77,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, other: OwnedPointer[T],): + ](mut self: OwnedPointer[T], *, other: OwnedPointer[T],): """Construct a new OwnedPointer[] by explicitly copying the value from another OwnedPointer[]. Parameters: @@ -104,8 +107,8 @@ struct OwnedPointer[T: AnyType]: # ===-------------------------------------------------------------------===# fn __getitem__( - ref [_, AddressSpace.GENERIC._value.value]self - ) -> ref [self, AddressSpace.GENERIC._value.value] T: + ref [AddressSpace.GENERIC]self, + ) -> ref [self, AddressSpace.GENERIC] T: """Returns a reference to the pointers's underlying data with parametric mutability. Returns: @@ -116,7 +119,6 @@ struct OwnedPointer[T: AnyType]: # returned from UnsafePointer to be guarded behind the # aliasing guarantees of the origin system here. # All of the magic happens above in the function signature - return self._inner[] # ===-------------------------------------------------------------------===# @@ -146,7 +148,7 @@ struct OwnedPointer[T: AnyType]: """ var r = self._inner.take_pointee() self._inner.free() - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return r^ @@ -169,6 +171,6 @@ struct OwnedPointer[T: AnyType]: var ptr = self._inner # Prevent the destructor from running on `self` - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return ptr diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index dfccdc524c..16a4eadd29 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -19,11 +19,10 @@ from memory import Pointer ``` """ -from sys import is_nvidia_gpu -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # AddressSpace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -275,7 +274,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): return String.write(self) @always_inline("nodebug") - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the address space to the provided Writer. @@ -291,9 +290,9 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): writer.write("AddressSpace(", self.value(), ")") -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Pointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -301,11 +300,14 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): struct Pointer[ is_mutable: Bool, //, type: AnyType, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], address_space: AddressSpace = AddressSpace.GENERIC, ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: is_mutable: Whether the pointee data may be mutated through this. type: Type of the underlying data. @@ -317,7 +319,7 @@ struct Pointer[ `!lit.ref<`, type, `, `, - origin, + origin._mlir_origin, `, `, address_space._value.value, `>`, @@ -342,7 +344,7 @@ struct Pointer[ @staticmethod @always_inline("nodebug") - fn address_of(ref [origin, address_space._value.value]value: type) -> Self: + fn address_of(ref [origin, address_space]value: type) -> Self: """Constructs a Pointer from a reference to a value. Args: @@ -368,7 +370,7 @@ struct Pointer[ # ===------------------------------------------------------------------===# @always_inline("nodebug") - fn __getitem__(self) -> ref [origin, address_space._value.value] type: + fn __getitem__(self) -> ref [origin, address_space] type: """Enable subscript syntax `ptr[]` to access the element. Returns: diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/memory/span.mojo similarity index 91% rename from stdlib/src/utils/span.mojo rename to stdlib/src/memory/span.mojo index 3ebb316f2d..497a084c88 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -13,16 +13,16 @@ """Implements the Span type. -You can import these APIs from the `utils.span` module. For example: +You can import these APIs from the `memory` module. For example: ```mojo -from utils import Span +from memory import Span ``` """ from collections import InlineArray + from memory import Pointer, UnsafePointer -from builtin.builtin_list import _lit_mut_cast trait AsBytes: @@ -47,7 +47,7 @@ trait AsBytes: struct _SpanIter[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for Span. @@ -68,7 +68,7 @@ struct _SpanIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[T, origin]: @parameter if forward: @@ -96,7 +96,7 @@ struct _SpanIter[ struct Span[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], ](CollectionElementNew): """A non owning view of contiguous data. @@ -149,7 +149,7 @@ struct Span[ @always_inline fn __init__[ size: Int, // - ](inout self, ref [origin]array: InlineArray[T, size]): + ](mut self, ref [origin]array: InlineArray[T, size]): """Construct a Span from an InlineArray. Parameters: @@ -205,16 +205,9 @@ struct Span[ var step: Int start, end, step = slc.indices(len(self)) - if step < 0: - step = -step - var new_len = (start - end + step - 1) // step - var buff = UnsafePointer[T].alloc(new_len) - i = 0 - while start > end: - buff[i] = self._data[start] - start -= step - i += 1 - return Span[T, origin](ptr=buff, length=new_len) + debug_assert( + step == 1, "Slice must be within bounds and step must be 1" + ) var res = Self( ptr=(self._data + start), length=len(range(start, end, step)) @@ -224,13 +217,22 @@ struct Span[ @always_inline fn __iter__(self) -> _SpanIter[T, origin]: - """Get an iterator over the elements of the span. + """Get an iterator over the elements of the Span. Returns: - An iterator over the elements of the span. + An iterator over the elements of the Span. """ return _SpanIter(0, self) + @always_inline + fn __reversed__(self) -> _SpanIter[T, origin, forward=False]: + """Iterate backwards over the Span. + + Returns: + A reversed iterator of the Span elements. + """ + return _SpanIter[forward=False](len(self), self) + # ===------------------------------------------------------------------===# # Trait implementations # ===------------------------------------------------------------------===# @@ -357,13 +359,15 @@ struct Span[ for element in self: element[] = value - fn get_immutable(self) -> Span[T, _lit_mut_cast[origin, False].result]: + fn get_immutable( + self, + ) -> Span[T, ImmutableOrigin.cast_from[origin].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin, False].result]( + return Span[T, ImmutableOrigin.cast_from[origin].result]( ptr=self._data, length=self._len ) diff --git a/stdlib/src/memory/unsafe.mojo b/stdlib/src/memory/unsafe.mojo index 82e995de53..450c18d199 100644 --- a/stdlib/src/memory/unsafe.mojo +++ b/stdlib/src/memory/unsafe.mojo @@ -21,9 +21,9 @@ from memory import bitcast from sys import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bitcast -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 9c75cc59a6..047bb61ac7 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -19,7 +19,7 @@ from memory import UnsafePointer ``` """ -from sys import alignof, sizeof, is_nvidia_gpu, is_gpu +from sys import alignof, is_gpu, is_nvidia_gpu, sizeof from sys.intrinsics import ( _mlirtype_is_eq, _type_is_eq, @@ -32,7 +32,6 @@ from sys.intrinsics import ( from bit import is_power_of_two from memory.memory import _free, _malloc - # ===----------------------------------------------------------------------=== # # UnsafePointer # ===----------------------------------------------------------------------=== # @@ -51,9 +50,10 @@ fn _default_alignment[type: DType, width: Int = 1]() -> Int: @register_passable("trivial") struct UnsafePointer[ type: AnyType, + *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), - origin: Origin[True].type = MutableAnyOrigin, + origin: Origin[True] = MutableAnyOrigin, ]( ImplicitlyBoolable, CollectionElement, @@ -63,7 +63,17 @@ struct UnsafePointer[ Intable, Comparable, ): - """This is a pointer type that can point to any generic value that is movable. + """UnsafePointer[T] represents an indirect reference to one or more values of + type T consecutively in memory, and can refer to uninitialized memory. + + Because it supports referring to uninitialized memory, it provides unsafe + methods for initializing and destroying instances of T, as well as methods + for accessing the values once they are initialized. + + For more information see [Unsafe + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. For a + comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/). Parameters: type: The type the pointer points to. @@ -84,12 +94,12 @@ struct UnsafePointer[ address_space._value.value, `>`, ] + """The underlying pointer type.""" # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# - """The underlying pointer type.""" var address: Self._mlir_type """The underlying pointer.""" @@ -106,7 +116,7 @@ struct UnsafePointer[ @always_inline @implicit fn __init__(out self, value: Self._mlir_type): - """Create a pointer with the input value. + """Create a pointer from a low-level pointer primitive. Args: value: The MLIR value of the pointer to construct with. @@ -115,7 +125,9 @@ struct UnsafePointer[ @always_inline @implicit - fn __init__(out self, other: UnsafePointer[type, address_space, *_, **_]): + fn __init__( + out self, other: UnsafePointer[type, address_space=address_space, **_] + ): """Exclusivity parameter cast a pointer. Args: @@ -127,7 +139,7 @@ struct UnsafePointer[ @always_inline fn __init__(out self, *, other: Self): - """Copy the object. + """Copy an existing pointer. Args: other: The value to copy. @@ -141,13 +153,15 @@ struct UnsafePointer[ @staticmethod @always_inline("nodebug") fn address_of( - ref [_, address_space._value.value]arg: type - ) -> UnsafePointer[ - type, - address_space, - 1, - # TODO: Propagate origin of the argument. - ] as result: + ref [address_space]arg: type, + out result: UnsafePointer[ + type, + address_space=address_space, + alignment=1, + origin=MutableAnyOrigin + # TODO: Propagate origin of the argument. + ], + ): """Gets the address of the argument. Args: @@ -164,7 +178,9 @@ struct UnsafePointer[ @always_inline fn alloc( count: Int, - ) -> UnsafePointer[type, AddressSpace.GENERIC, alignment]: + ) -> UnsafePointer[ + type, address_space = AddressSpace.GENERIC, alignment=alignment + ]: """Allocate an array with specified or default alignment. Args: @@ -184,7 +200,7 @@ struct UnsafePointer[ @always_inline fn __getitem__( self, - ) -> ref [origin, address_space._value.value] type: + ) -> ref [origin, address_space] type: """Return a reference to the underlying data. Returns: @@ -195,9 +211,12 @@ struct UnsafePointer[ alias _ref_type = Pointer[type, origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( - UnsafePointer[type, address_space, alignment, origin]( - self - ).address + UnsafePointer[ + type, + address_space=address_space, + alignment=alignment, + origin=origin, + ](self).address ) ) @@ -219,7 +238,7 @@ struct UnsafePointer[ @always_inline fn __getitem__[ IntLike: IntLike, // - ](self, offset: IntLike) -> ref [origin, address_space._value.value] type: + ](self, offset: IntLike) -> ref [origin, address_space] type: """Return a reference to the underlying data, offset by the given index. Parameters: @@ -264,7 +283,7 @@ struct UnsafePointer[ return self + (-1 * Int(offset.__mlir_index__())) @always_inline - fn __iadd__[T: IntLike, //](inout self, offset: T): + fn __iadd__[T: IntLike, //](mut self, offset: T): """Add an offset to this pointer. Parameters: @@ -276,7 +295,7 @@ struct UnsafePointer[ self = self + offset @always_inline - fn __isub__[T: IntLike, //](inout self, offset: T): + fn __isub__[T: IntLike, //](mut self, offset: T): """Subtract an offset from this pointer. Parameters: @@ -412,7 +431,7 @@ struct UnsafePointer[ return hex(int(self)) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this pointer address to the provided Writer. @@ -433,7 +452,9 @@ struct UnsafePointer[ @always_inline("nodebug") fn as_noalias_ptr( self, - ) -> UnsafePointer[type, address_space, alignment, origin]: + ) -> UnsafePointer[ + type, address_space=address_space, alignment=alignment, origin=origin + ]: """Cast the pointer to a new pointer that is known not to locally alias any other pointer. In other words, the pointer transitively does not alias any other memory value declared in the local function context. @@ -454,7 +475,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_]) -> SIMD[type, width]: + ](self: UnsafePointer[Scalar[type], **_]) -> SIMD[type, width]: """Loads the value the pointer points to. Constraints: @@ -530,7 +551,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], offset: Scalar) -> SIMD[ + ](self: UnsafePointer[Scalar[type], **_], offset: Scalar) -> SIMD[ type, width ]: """Loads the value the pointer points to with the given offset. @@ -569,9 +590,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], offset: T) -> SIMD[ - type, width - ]: + ](self: UnsafePointer[Scalar[type], **_], offset: T) -> SIMD[type, width]: """Loads the value the pointer points to with the given offset. Constraints: @@ -605,11 +624,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type](), volatile: Bool = False, - ]( - self: UnsafePointer[Scalar[type], *_, **_], - offset: T, - val: Scalar[type], - ): + ](self: UnsafePointer[Scalar[type], **_], offset: T, val: Scalar[type],): """Stores a single element value at the given offset. Constraints: @@ -637,7 +652,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: T, val: SIMD[type, width], ): @@ -668,7 +683,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: Scalar[offset_type], val: Scalar[type], ): @@ -701,7 +716,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: Scalar[offset_type], val: SIMD[type, width], ): @@ -732,7 +747,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: Scalar[type]): + ](self: UnsafePointer[Scalar[type], **_], val: Scalar[type]): """Stores a single element value. Constraints: @@ -755,7 +770,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type, width](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: SIMD[type, width]): + ](self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width]): """Stores a single element value. Constraints: @@ -779,7 +794,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type, width](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: SIMD[type, width]): + ](self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width]): constrained[width > 0, "width must be a positive integer value"]() constrained[ alignment > 0, "alignment must be a positive integer value" @@ -798,9 +813,7 @@ struct UnsafePointer[ @always_inline("nodebug") fn strided_load[ type: DType, T: Intable, //, width: Int - ](self: UnsafePointer[Scalar[type], *_, **_], stride: T) -> SIMD[ - type, width - ]: + ](self: UnsafePointer[Scalar[type], **_], stride: T) -> SIMD[type, width]: """Performs a strided load of the SIMD vector. Parameters: @@ -822,7 +835,7 @@ struct UnsafePointer[ T: Intable, //, width: Int, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width], stride: T, ): @@ -846,7 +859,7 @@ struct UnsafePointer[ width: Int = 1, alignment: Int = _default_alignment[type, width](), ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: SIMD[_, width], mask: SIMD[DType.bool, width] = True, default: SIMD[type, width] = 0, @@ -901,7 +914,7 @@ struct UnsafePointer[ width: Int = 1, alignment: Int = _default_alignment[type, width](), ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: SIMD[_, width], val: SIMD[type, width], mask: SIMD[DType.bool, width] = True, @@ -949,7 +962,7 @@ struct UnsafePointer[ scatter(val, base, mask, alignment) @always_inline - fn free(self: UnsafePointer[_, AddressSpace.GENERIC, *_, **_]): + fn free(self: UnsafePointer[_, address_space = AddressSpace.GENERIC, **_]): """Free the memory referenced by the pointer.""" _free(self) @@ -959,8 +972,10 @@ struct UnsafePointer[ /, address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, - origin: Origin[True].type = Self.origin, - ](self) -> UnsafePointer[T, address_space, alignment, origin]: + origin: Origin[True] = Self.origin, + ](self) -> UnsafePointer[ + T, address_space=address_space, alignment=alignment, origin=origin + ]: """Bitcasts a UnsafePointer to a different type. Parameters: @@ -975,13 +990,13 @@ struct UnsafePointer[ """ return __mlir_op.`pop.pointer.bitcast`[ _type = UnsafePointer[ - T, address_space, alignment=alignment + T, address_space=address_space, alignment=alignment ]._mlir_type, ](self.address) @always_inline fn destroy_pointee( - self: UnsafePointer[type, AddressSpace.GENERIC, *_, **_] + self: UnsafePointer[type, address_space = AddressSpace.GENERIC, **_] ): """Destroy the pointed-to value. @@ -996,7 +1011,7 @@ struct UnsafePointer[ @always_inline fn take_pointee[ T: Movable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_]) -> T: + ](self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_]) -> T: """Move the value at the pointer out, leaving it uninitialized. The pointer must not be null, and the pointer memory location is assumed @@ -1019,7 +1034,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_move[ T: Movable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], owned value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + owned value: T, + ): """Emplace a new value into the pointer location, moving from `value`. The pointer memory location is assumed to contain uninitialized data, @@ -1041,7 +1059,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_copy[ T: Copyable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + value: T, + ): """Emplace a copy of `value` into the pointer location. The pointer memory location is assumed to contain uninitialized data, @@ -1063,7 +1084,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_explicit_copy[ T: ExplicitlyCopyable, // - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + value: T, + ): """Emplace a copy of `value` into this pointer location. The pointer memory location is assumed to contain uninitialized data, @@ -1087,8 +1111,8 @@ struct UnsafePointer[ fn move_pointee_into[ T: Movable, //, ]( - self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], - dst: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + dst: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], ): """Moves the value `self` points to into the memory location pointed to by `dst`. diff --git a/stdlib/src/os/__init__.mojo b/stdlib/src/os/__init__.mojo index b55400cad3..c07761b658 100644 --- a/stdlib/src/os/__init__.mojo +++ b/stdlib/src/os/__init__.mojo @@ -22,11 +22,11 @@ from .os import ( abort, getuid, listdir, - mkdir, makedirs, + mkdir, remove, - rmdir, removedirs, + rmdir, sep, unlink, ) diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index d2872d8a1a..7fec00bfdf 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -11,9 +11,9 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from time.time import _CTimeSpec from collections import InlineArray from sys.ffi import external_call +from time.time import _CTimeSpec from .fstat import stat_result diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 73a97c09ea..5eaac49644 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -19,18 +19,20 @@ from os import Atomic ``` """ +from sys.info import is_nvidia_gpu + from builtin.dtype import _integral_type_of, _unsigned_integral_type_of from memory import UnsafePointer, bitcast -from sys.info import is_nvidia_gpu -struct Atomic[type: DType]: +struct Atomic[type: DType, *, scope: StringLiteral = ""]: """Represents a value with atomic operations. The class provides atomic `add` and `sub` methods for mutating the value. Parameters: type: DType of the value. + scope: The memory synchronization scope. """ var value: Scalar[type] @@ -51,7 +53,7 @@ struct Atomic[type: DType]: self.value = value @always_inline - fn load(inout self) -> Scalar[type]: + fn load(mut self) -> Scalar[type]: """Loads the current value from the atomic. Returns: @@ -62,7 +64,7 @@ struct Atomic[type: DType]: @staticmethod @always_inline fn _fetch_add( - ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type] + ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type] ) -> Scalar[type]: """Performs atomic in-place add. @@ -82,6 +84,7 @@ struct Atomic[type: DType]: return __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ]( ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]().address, @@ -89,7 +92,7 @@ struct Atomic[type: DType]: ) @always_inline - fn fetch_add(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_add(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -108,7 +111,7 @@ struct Atomic[type: DType]: return Self._fetch_add(value_addr, rhs) @always_inline - fn __iadd__(inout self, rhs: Scalar[type]): + fn __iadd__(mut self, rhs: Scalar[type]): """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -123,7 +126,7 @@ struct Atomic[type: DType]: _ = self.fetch_add(rhs) @always_inline - fn fetch_sub(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_sub(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -142,11 +145,12 @@ struct Atomic[type: DType]: return __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @always_inline - fn __isub__(inout self, rhs: Scalar[type]): + fn __isub__(mut self, rhs: Scalar[type]): """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -162,7 +166,7 @@ struct Atomic[type: DType]: @always_inline fn compare_exchange_weak( - inout self, inout expected: Scalar[type], desired: Scalar[type] + mut self, mut expected: Scalar[type], desired: Scalar[type] ) -> Bool: """Atomically compares the self value with that of the expected value. If the values are equal, then the self value is replaced with the @@ -180,7 +184,7 @@ struct Atomic[type: DType]: @parameter if type.is_integral(): - return _compare_exchange_weak_integral_impl( + return _compare_exchange_weak_integral_impl[scope=scope]( UnsafePointer.address_of(self.value), expected, desired ) @@ -194,13 +198,13 @@ struct Atomic[type: DType]: ]() var expected_integral = bitcast[integral_type](expected) var desired_integral = bitcast[integral_type](desired) - return _compare_exchange_weak_integral_impl( + return _compare_exchange_weak_integral_impl[scope=scope]( value_integral_addr, expected_integral, desired_integral ) @staticmethod @always_inline - fn max(ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + fn max(ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): """Performs atomic in-place max on the pointer. Atomically replaces the current value pointer to by `ptr` by the result @@ -217,10 +221,10 @@ struct Atomic[type: DType]: """ constrained[type.is_numeric(), "the input type must be arithmetic"]() - _max_impl(ptr, rhs) + _max_impl[scope=scope](ptr, rhs) @always_inline - fn max(inout self, rhs: Scalar[type]): + fn max(mut self, rhs: Scalar[type]): """Performs atomic in-place max. Atomically replaces the current value with the result of max of the @@ -240,7 +244,7 @@ struct Atomic[type: DType]: @staticmethod @always_inline - fn min(ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + fn min(ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): """Performs atomic in-place min on the pointer. Atomically replaces the current value pointer to by `ptr` by the result @@ -257,10 +261,10 @@ struct Atomic[type: DType]: """ constrained[type.is_numeric(), "the input type must be arithmetic"]() - _min_impl(ptr, rhs) + _min_impl[scope=scope](ptr, rhs) @always_inline - fn min(inout self, rhs: Scalar[type]): + fn min(mut self, rhs: Scalar[type]): """Performs atomic in-place min. Atomically replaces the current value with the result of min of the @@ -280,17 +284,17 @@ struct Atomic[type: DType]: Self.min(UnsafePointer.address_of(self.value), rhs) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _compare_exchange_weak_integral_impl[ - type: DType, // + type: DType, //, *, scope: StringLiteral ]( - value_addr: UnsafePointer[Scalar[type], *_], - inout expected: Scalar[type], + value_addr: UnsafePointer[Scalar[type], **_], + mut expected: Scalar[type], desired: Scalar[type], ) -> Bool: constrained[type.is_integral(), "the input type must be integral"]() @@ -298,6 +302,7 @@ fn _compare_exchange_weak_integral_impl[ bin_op = __mlir_attr.`#pop`, failure_ordering = __mlir_attr.`#pop`, success_ordering = __mlir_attr.`#pop`, + syncscope = scope.value, ]( value_addr.bitcast[ __mlir_type[`!pop.scalar<`, type.value, `>`] @@ -317,69 +322,71 @@ fn _compare_exchange_weak_integral_impl[ @always_inline fn _max_impl_base[ - type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + type: DType, //, *, scope: StringLiteral +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @always_inline fn _min_impl_base[ - type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + type: DType, //, *, scope: StringLiteral +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @always_inline fn _max_impl[ - type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + type: DType, //, *, scope: StringLiteral +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() alias unsigned_integral_type = _unsigned_integral_type_of[type]() if rhs >= 0: - _max_impl_base( + _max_impl_base[scope=scope]( ptr.bitcast[Scalar[integral_type]](), bitcast[integral_type](rhs), ) return - _min_impl_base( + _min_impl_base[scope=scope]( ptr.bitcast[Scalar[unsigned_integral_type]](), bitcast[unsigned_integral_type](rhs), ) return - _max_impl_base(ptr, rhs) + _max_impl_base[scope=scope](ptr, rhs) @always_inline fn _min_impl[ - type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + type: DType, //, *, scope: StringLiteral +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() alias unsigned_integral_type = _unsigned_integral_type_of[type]() if rhs >= 0: - _min_impl_base( + _min_impl_base[scope=scope]( ptr.bitcast[Scalar[integral_type]](), bitcast[integral_type](rhs), ) return - _max_impl_base( + _max_impl_base[scope=scope]( ptr.bitcast[Scalar[unsigned_integral_type]](), bitcast[unsigned_integral_type](rhs), ) return - _min_impl_base(ptr, rhs) + _min_impl_base[scope=scope](ptr, rhs) diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index 0556389882..9ffe0eb2d8 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -23,6 +23,7 @@ from sys import external_call, os_is_linux, os_is_macos, os_is_windows from sys.ffi import c_int from memory import UnsafePointer + from utils import StringRef diff --git a/stdlib/src/os/fstat.mojo b/stdlib/src/os/fstat.mojo index ba298916d4..83e493bc7a 100644 --- a/stdlib/src/os/fstat.mojo +++ b/stdlib/src/os/fstat.mojo @@ -96,7 +96,7 @@ struct stat_result(Stringable, Writable): """User defined flags for file.""" fn __init__( - inout self, + mut self, /, *, st_mode: Int, @@ -151,7 +151,7 @@ struct stat_result(Stringable, Writable): self.st_flags = st_flags @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index d66008b196..86c793fa6b 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -19,11 +19,12 @@ from os import listdir ``` """ -from collections import List, InlineArray -from sys import os_is_linux, os_is_windows, is_nvidia_gpu, external_call -from sys.ffi import c_char, OpaquePointer +from collections import InlineArray, List +from sys import external_call, is_gpu, os_is_linux, os_is_windows +from sys.ffi import OpaquePointer, c_char from memory import UnsafePointer + from utils import StringRef from .path import isdir, split @@ -265,7 +266,7 @@ fn abort[ """ @parameter - if not is_nvidia_gpu(): + if not is_gpu(): print(message, flush=True) return abort[result]() diff --git a/stdlib/src/os/path/__init__.mojo b/stdlib/src/os/path/__init__.mojo index 68097ee4db..ef6694482a 100644 --- a/stdlib/src/os/path/__init__.mojo +++ b/stdlib/src/os/path/__init__.mojo @@ -12,6 +12,7 @@ # ===----------------------------------------------------------------------=== # from .path import ( + basename, dirname, exists, expanduser, @@ -21,6 +22,7 @@ from .path import ( isfile, islink, join, - split, lexists, + split, + splitroot, ) diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 4bd3930a26..4e65dfbf34 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -19,10 +19,13 @@ from os.path import isdir ``` """ -from collections import List, InlineArray +from collections import InlineArray, List +from pwd import getpwuid from stat import S_ISDIR, S_ISLNK, S_ISREG from sys import has_neon, os_is_linux, os_is_macos, os_is_windows -from utils import Span, StringSlice + +from memory import Span +from utils import StringSlice from .. import PathLike from .._linux_aarch64 import _lstat as _lstat_linux_arm @@ -31,10 +34,9 @@ from .._linux_x86 import _lstat as _lstat_linux_x86 from .._linux_x86 import _stat as _stat_linux_x86 from .._macos import _lstat as _lstat_macos from .._macos import _stat as _stat_macos +from ..env import getenv from ..fstat import stat from ..os import sep -from ..env import getenv -from pwd import getpwuid # ===----------------------------------------------------------------------=== # @@ -228,11 +230,10 @@ fn dirname[PathLike: os.PathLike, //](path: PathLike) -> String: The directory component of a pathname. """ var fspath = path.__fspath__() - alias sep = str(os.sep) - var i = fspath.rfind(sep) + 1 + var i = fspath.rfind(os.sep) + 1 var head = fspath[:i] - if head and head != sep * len(head): - return head.rstrip(sep) + if head and head != os.sep * len(head): + return head.rstrip(os.sep) return head @@ -364,10 +365,34 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): i = fspath.rfind(os.sep) + 1 head, tail = fspath[:i], fspath[i:] if head and head != str(os.sep) * len(head): - head = head.rstrip(sep) + head = str(head.rstrip(sep)) return head, tail +fn basename[PathLike: os.PathLike, //](path: PathLike) -> String: + """Returns the tail section of a path. + + ```mojo + basename("a/path/foo.txt") # returns "foo.txt" + ``` + + Parameters: + PathLike: The type conforming to the os.PathLike trait. + + Args: + path: The path to retrieve the basename from. + + Returns: + The basename from the path. + """ + var fspath = path.__fspath__() + var i = fspath.rfind(os.sep) + 1 + var head = fspath[i:] + if head and head != os.sep * len(head): + return head.rstrip(os.sep) + return head + + # TODO uncomment this when unpacking is supported # fn join[PathLike: os.PathLike](path: PathLike, *paths: PathLike) -> String: # """Join two or more pathname components, inserting '/' as needed. @@ -392,6 +417,41 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): # return join(path.__fspath__(), *paths_str) +# ===----------------------------------------------------------------------=== # +# splitroot +# ===----------------------------------------------------------------------=== # + + +fn splitroot[ + PathLike: os.PathLike, // +](path: PathLike) -> Tuple[String, String, String]: + """Splits `path` into drive, root and tail. The tail contains anything after the root. + + Parameters: + PathLike: The type conforming to the os.PathLike trait. + + Args: + path: The path to be split. + + Returns: + A tuple containing three strings: (drive, root, tail). + """ + var p = path.__fspath__() + alias empty = String("") + + # Relative path, e.g.: 'foo' + if p[:1] != sep: + return empty, empty, p + + # Absolute path, e.g.: '/foo', '///foo', '////foo', etc. + elif p[1:2] != sep or p[2:3] == sep: + return empty, String(sep), p[1:] + + # Precisely two leading slashes, e.g.: '//foo'. Implementation defined per POSIX, see + # https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13 + else: + return empty, p[:2], p[2:] + # ===----------------------------------------------------------------------=== # # expandvars diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 0d4449d405..c6e9016b5e 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -15,14 +15,13 @@ import os from collections import List +from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike, listdir, stat_result -from sys import os_is_windows, external_call +from sys import external_call, os_is_windows from sys.ffi import c_char from builtin._location import __call_location, _SourceLocation -from memory import stack_allocation, UnsafePointer - -from hashlib._hasher import _HashableWithHasher, _Hasher +from memory import UnsafePointer, stack_allocation from utils import StringRef @@ -125,7 +124,7 @@ struct Path( res /= suffix return res - fn __itruediv__(inout self, suffix: String): + fn __itruediv__(mut self, suffix: String): """Joins two paths using the system-defined path separator. Args: @@ -154,7 +153,7 @@ struct Path( """ return self.path.byte_length() > 0 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. @@ -226,7 +225,7 @@ struct Path( return hash(self.path) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the path string value. Parameters: diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 9eead08fea..8761eba00c 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -14,8 +14,23 @@ that are automatically imported into every Mojo program. """ -from builtin.anytype import AnyType -from builtin.bool import Boolable, ImplicitlyBoolable, Bool, bool, any, all +from collections import KeyElement, List +from collections.string import ( + String, + ascii, + atof, + atol, + chr, + isdigit, + islower, + isprintable, + isupper, + ord, +) +from hashlib.hash import Hashable, hash + +from builtin.anytype import AnyType, UnknownDestructibility +from builtin.bool import Bool, Boolable, ImplicitlyBoolable, all, any, bool from builtin.breakpoint import breakpoint from builtin.builtin_list import ( ListLiteral, @@ -26,38 +41,38 @@ from builtin.builtin_list import ( from builtin.builtin_slice import Slice, slice from builtin.comparable import Comparable from builtin.constrained import constrained -from builtin.coroutine import Coroutine, RaisingCoroutine, AnyCoroutine +from builtin.coroutine import AnyCoroutine, Coroutine, RaisingCoroutine from builtin.debug_assert import debug_assert from builtin.dtype import DType from builtin.equality_comparable import EqualityComparable from builtin.error import Error -from builtin.file import open, FileHandle +from builtin.file import FileHandle, open from builtin.file_descriptor import FileDescriptor from builtin.float_literal import FloatLiteral from builtin.floatable import Floatable, FloatableRaising, float from builtin.format_int import bin, hex, oct from builtin.identifiable import Identifiable, StringableIdentifiable from builtin.int import ( + Indexer, Int, - IntLike, Intable, IntableRaising, - Indexer, + IntLike, index, int, ) from builtin.int_literal import IntLiteral -from builtin.io import print, input -from builtin.len import Sized, UIntSized, SizedRaising, len +from builtin.io import input, print +from builtin.len import Sized, SizedRaising, UIntSized, len from builtin.math import ( Absable, + Powable, + Roundable, abs, divmod, max, min, - Powable, pow, - Roundable, round, ) from builtin.none import NoneType @@ -66,72 +81,60 @@ from builtin.range import range, iter, next from builtin.rebind import rebind from builtin.repr import Representable, repr from builtin.reversed import ReversibleRange, reversed -from builtin.sort import sort, partition +from builtin.simd import ( + SIMD, + BFloat16, + Byte, + Float8e5m2, + Float8e5m2fnuz, + Float8e4m3, + Float8e4m3fnuz, + Float16, + Float32, + Float64, + Int8, + Int16, + Int32, + Int64, + Scalar, + UInt8, + UInt16, + UInt32, + UInt64, +) +from builtin.sort import partition, sort from builtin.str import Stringable, StringableRaising, str from builtin.string_literal import StringLiteral from builtin.swap import swap -from builtin.tuple import ( - Tuple, -) +from builtin.tuple import Tuple from builtin.type_aliases import ( AnyTrivialRegType, - ImmutableOrigin, - MutableOrigin, ImmutableAnyOrigin, + ImmutableOrigin, MutableAnyOrigin, - StaticConstantOrigin, - OriginSet, + MutableOrigin, Origin, + OriginSet, + StaticConstantOrigin, ) from builtin.uint import UInt from builtin.value import ( - Movable, - Copyable, - ExplicitlyCopyable, - Defaultable, + BoolableCollectionElement, + BoolableKeyElement, + BytesCollectionElement, CollectionElement, CollectionElementNew, - BytesCollectionElement, - StringableCollectionElement, - EqualityComparableCollectionElement, ComparableCollectionElement, + Copyable, + Defaultable, + EqualityComparableCollectionElement, + ExplicitlyCopyable, + Movable, RepresentableCollectionElement, - BoolableKeyElement, - BoolableCollectionElement, -) -from builtin.simd import ( - Scalar, - Int8, - UInt8, - Int16, - UInt16, - Int32, - UInt32, - Int64, - UInt64, - BFloat16, - Float16, - Float32, - Float64, - Byte, - SIMD, -) -from builtin.type_aliases import AnyTrivialRegType - -from collections import KeyElement, List -from collections.string import ( - String, - ord, - chr, - ascii, - atol, - atof, - isdigit, - isupper, - islower, - isprintable, + StringableCollectionElement, ) -from hashlib.hash import hash, Hashable -from memory import Pointer, AddressSpace -from utils import AsBytes, Writable, Writer from documentation import doc_private +from memory import AddressSpace, Pointer + +from memory.span import AsBytes +from utils import Writable, Writer diff --git a/stdlib/src/pwd/__init__.mojo b/stdlib/src/pwd/__init__.mojo index a62388303c..088bffae14 100644 --- a/stdlib/src/pwd/__init__.mojo +++ b/stdlib/src/pwd/__init__.mojo @@ -12,4 +12,4 @@ # ===----------------------------------------------------------------------=== # """Implements the pwd package.""" -from .pwd import getpwuid, getpwnam +from .pwd import getpwnam, getpwuid diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index d2ed4175a7..2c485aa5e7 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -10,10 +10,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from .pwd import Passwd -from memory import UnsafePointer from sys.ffi import c_char, external_call +from memory import UnsafePointer + +from .pwd import Passwd + alias uid_t = Int32 alias gid_t = Int32 alias char = UnsafePointer[c_char] diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index 9908504d97..5958ab1a58 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -10,10 +10,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from .pwd import Passwd -from memory import UnsafePointer from sys.ffi import c_char, external_call +from memory import UnsafePointer + +from .pwd import Passwd + alias uid_t = Int32 alias gid_t = Int32 alias time_t = Int diff --git a/stdlib/src/pwd/pwd.mojo b/stdlib/src/pwd/pwd.mojo index 0bc26698d1..105b26e7f2 100644 --- a/stdlib/src/pwd/pwd.mojo +++ b/stdlib/src/pwd/pwd.mojo @@ -11,12 +11,13 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # +from sys import os_is_linux, os_is_macos, os_is_windows + # ===----------------------------------------------------------------------=== # # Passwd # ===----------------------------------------------------------------------=== # from ._linux import _getpw_linux from ._macos import _getpw_macos -from sys import os_is_windows, os_is_macos, os_is_linux @value @@ -39,7 +40,7 @@ struct Passwd(Stringable): var pw_shell: String """Shell program.""" - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string to the provided Writer. Parameters: diff --git a/stdlib/src/python/__init__.mojo b/stdlib/src/python/__init__.mojo index c91813320c..f8d0d9d73c 100644 --- a/stdlib/src/python/__init__.mojo +++ b/stdlib/src/python/__init__.mojo @@ -12,5 +12,5 @@ # ===----------------------------------------------------------------------=== # """Implements the python package.""" -from .python_object import PythonObject, TypedPythonObject from .python import Python +from .python_object import PythonObject, TypedPythonObject diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 4046ca5f50..f5e14cd329 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -11,38 +11,35 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer - +from collections import Optional +from os import abort from sys.ffi import c_int from sys.info import sizeof -from os import abort - -from collections import Optional - +from memory import UnsafePointer from python import PythonObject, TypedPythonObject -from python.python import _get_global_python_itf from python._cpython import ( + Py_TPFLAGS_DEFAULT, + PyCFunction, + PyMethodDef, PyObject, PyObjectPtr, - PyCFunction, - PyType_Spec, PyType_Slot, - PyMethodDef, - Py_TPFLAGS_DEFAULT, - newfunc, + PyType_Spec, destructor, + newfunc, ) +from python.python import _get_global_python_itf trait ConvertibleFromPython(CollectionElement): - """Denotes a type that can attempt construction from a borrowed Python + """Denotes a type that can attempt construction from a read-only Python object. """ @staticmethod fn try_from_python(obj: PythonObject) raises -> Self: - """Attempt to construct an instance of this object from a borrowed + """Attempt to construct an instance of this object from a read-only Python value. Args: @@ -116,7 +113,7 @@ fn python_type_object[ basicsize: sizeof[PyMojoObject[T]](), itemsize: 0, flags: Py_TPFLAGS_DEFAULT, - # Note: This pointer is only "borrowed" by PyType_FromSpec. + # Note: This pointer is only "read-only" by PyType_FromSpec. slots: slots.unsafe_ptr(), } @@ -141,7 +138,7 @@ fn python_type_object[ # # The latter is the C function signature that the CPython API expects a # PyObject initializer function to have. The former is an unsafe form of the -# `fn(inout self)` signature that Mojo types with default constructors provide. +# `fn(mut self)` signature that Mojo types with default constructors provide. # # To support CPython calling a Mojo types default constructor, we need to # provide a wrapper function (around the Mojo constructor) that has the @@ -224,22 +221,22 @@ fn py_c_function_wrapper[ # > When a C function is called from Python, it borrows references to its # > arguments from the caller. The caller owns a reference to the object, - # > so the borrowed reference’s lifetime is guaranteed until the function - # > returns. Only when such a borrowed reference must be stored or passed + # > so the read-only reference’s lifetime is guaranteed until the function + # > returns. Only when such a read-only reference must be stored or passed # > on, it must be turned into an owned reference by calling Py_INCREF(). # > # > -- https://docs.python.org/3/extending/extending.html#ownership-rules # SAFETY: # Here we illegally (but carefully) construct _owned_ `PythonObject` - # values from the borrowed object reference arguments. We are careful + # values from the read-only object reference arguments. We are careful # down below to prevent the destructor for these objects from running # so that we do not illegally decrement the reference count of these # objects we do not own. # - # This is valid to do, because these are passed using the `borrowed` + # This is valid to do, because these are passed using the `read-only` # argument convention to `user_func`, so logically they are treated - # as Python borrowed references. + # as Python read-only references. var py_self = PythonObject(py_self_ptr) var args = TypedPythonObject["Tuple"]( unsafe_unchecked_from=PythonObject(args_ptr) diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index ef437a3d06..05426aa8eb 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -18,7 +18,7 @@ Documentation for these functions can be found online at: """ from collections import InlineArray, Optional -from os import getenv, setenv, abort +from os import abort, getenv, setenv from os.path import dirname from pathlib import Path from sys import external_call @@ -34,14 +34,12 @@ from sys.ffi import ( c_uint, ) -from python.python import _get_global_python_itf -from python._bindings import Typed_initproc, PyMojoObject, Pythonable - from memory import UnsafePointer +from python._bindings import PyMojoObject, Pythonable, Typed_initproc +from python.python import _get_global_python_itf from utils import StringRef, StringSlice - # ===-----------------------------------------------------------------------===# # Raw Bindings # ===-----------------------------------------------------------------------===# @@ -494,7 +492,7 @@ struct PyObject(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -582,7 +580,7 @@ struct PyModuleDef_Base(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -702,7 +700,7 @@ struct PyModuleDef(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -799,7 +797,7 @@ struct CPython: pass @staticmethod - fn destroy(inout existing: CPython): + fn destroy(mut existing: CPython): if existing.logging_enabled: print("CPython destroy") var remaining_refs = existing.total_ref_count.take_pointee() @@ -863,15 +861,15 @@ struct CPython: # Reference count management # ===-------------------------------------------------------------------===# - fn _inc_total_rc(inout self): + fn _inc_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v + 1) - fn _dec_total_rc(inout self): + fn _dec_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v - 1) - fn Py_IncRef(inout self, ptr: PyObjectPtr): + fn Py_IncRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_IncRef). """ @@ -881,7 +879,7 @@ struct CPython: self.lib.call["Py_IncRef"](ptr) self._inc_total_rc() - fn Py_DecRef(inout self, ptr: PyObjectPtr): + fn Py_DecRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_DecRef). """ @@ -895,7 +893,7 @@ struct CPython: # have to always be the case - but often it is and it's convenient for # debugging. We shouldn't rely on this function anywhere - its only purpose # is debugging. - fn _Py_REFCNT(inout self, ptr: PyObjectPtr) -> Int: + fn _Py_REFCNT(mut self, ptr: PyObjectPtr) -> Int: if ptr._get_ptr_as_int() == 0: return -1 # NOTE: @@ -917,19 +915,19 @@ struct CPython: # Python GIL and threading # ===-------------------------------------------------------------------===# - fn PyGILState_Ensure(inout self) -> PyGILState_STATE: + fn PyGILState_Ensure(mut self) -> PyGILState_STATE: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure). """ return self.lib.call["PyGILState_Ensure", PyGILState_STATE]() - fn PyGILState_Release(inout self, state: PyGILState_STATE): + fn PyGILState_Release(mut self, state: PyGILState_STATE): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Release). """ self.lib.call["PyGILState_Release"](state) - fn PyEval_SaveThread(inout self) -> UnsafePointer[PyThreadState]: + fn PyEval_SaveThread(mut self) -> UnsafePointer[PyThreadState]: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThread). """ @@ -938,7 +936,7 @@ struct CPython: "PyEval_SaveThread", UnsafePointer[PyThreadState] ]() - fn PyEval_RestoreThread(inout self, state: UnsafePointer[PyThreadState]): + fn PyEval_RestoreThread(mut self, state: UnsafePointer[PyThreadState]): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThread). """ @@ -948,7 +946,7 @@ struct CPython: # Python Dict operations # ===-------------------------------------------------------------------===# - fn PyDict_New(inout self) -> PyObjectPtr: + fn PyDict_New(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_New). """ @@ -966,7 +964,7 @@ struct CPython: # int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val) fn PyDict_SetItem( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItem). @@ -984,7 +982,7 @@ struct CPython: return r fn PyDict_GetItemWithError( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithError). @@ -996,7 +994,7 @@ struct CPython: self.log("PyDict_GetItemWithError, key: ", key._get_ptr_as_int()) return r - fn PyDict_Check(inout self, maybe_dict: PyObjectPtr) -> Bool: + fn PyDict_Check(mut self, maybe_dict: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Check). """ @@ -1008,7 +1006,7 @@ struct CPython: self.Py_DecRef(my_type) return result - fn PyDict_Type(inout self) -> PyObjectPtr: + fn PyDict_Type(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Type). """ @@ -1018,7 +1016,7 @@ struct CPython: # int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) fn PyDict_Next( - inout self, dictionary: PyObjectPtr, p: Int + mut self, dictionary: PyObjectPtr, p: Int ) -> PyKeysValuePair: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Next). @@ -1063,7 +1061,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PyImport_ImportModule( - inout self, + mut self, name: StringRef, ) -> PyObjectPtr: """[Reference]( @@ -1083,7 +1081,7 @@ struct CPython: self._inc_total_rc() return r - fn PyImport_AddModule(inout self, name: StringRef) -> PyObjectPtr: + fn PyImport_AddModule(mut self, name: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/import.html#c.PyImport_AddModule). """ @@ -1092,7 +1090,7 @@ struct CPython: ) fn PyModule_Create( - inout self, + mut self, name: String, ) -> PyObjectPtr: """[Reference]( @@ -1120,7 +1118,7 @@ struct CPython: ) fn PyModule_AddFunctions( - inout self, + mut self, mod: PyObjectPtr, functions: UnsafePointer[PyMethodDef], ) -> c_int: @@ -1130,7 +1128,7 @@ struct CPython: return self.lib.call["PyModule_AddFunctions", c_int](mod, functions) fn PyModule_AddObjectRef( - inout self, + mut self, module: PyObjectPtr, name: UnsafePointer[c_char], value: PyObjectPtr, @@ -1143,7 +1141,7 @@ struct CPython: module, name, value ) - fn PyModule_GetDict(inout self, name: PyObjectPtr) -> PyObjectPtr: + fn PyModule_GetDict(mut self, name: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/module.html#c.PyModule_GetDict). """ @@ -1153,7 +1151,7 @@ struct CPython: # Python Type operations # ===-------------------------------------------------------------------===# - fn Py_TYPE(inout self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: + fn Py_TYPE(mut self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: """Get the PyTypeObject field of a Python object.""" # Note: @@ -1167,12 +1165,12 @@ struct CPython: return ob_raw.unsized_obj_ptr[].object_type fn PyType_GetName( - inout self, type: UnsafePointer[PyTypeObject] + mut self, type: UnsafePointer[PyTypeObject] ) -> PyObjectPtr: return self.lib.call["PyType_GetName", PyObjectPtr](type) fn PyType_FromSpec( - inout self, spec: UnsafePointer[PyType_Spec] + mut self, spec: UnsafePointer[PyType_Spec] ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/type.html#c.PyType_FromSpec). @@ -1180,7 +1178,7 @@ struct CPython: return self.lib.call["PyType_FromSpec", PyObjectPtr](spec) fn PyType_GenericAlloc( - inout self, + mut self, type: UnsafePointer[PyTypeObject], nitems: Py_ssize_t, ) -> PyObjectPtr: @@ -1190,7 +1188,7 @@ struct CPython: # Python Evaluation # ===-------------------------------------------------------------------===# - fn PyRun_SimpleString(inout self, strref: StringRef) -> Bool: + fn PyRun_SimpleString(mut self, strref: StringRef) -> Bool: """Executes the given Python code. Args: @@ -1209,7 +1207,7 @@ struct CPython: ) fn PyRun_String( - inout self, + mut self, strref: StringRef, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1236,7 +1234,7 @@ struct CPython: return result fn PyEval_EvalCode( - inout self, + mut self, co: PyObjectPtr, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1250,14 +1248,14 @@ struct CPython: self._inc_total_rc() return result - fn PyEval_GetBuiltins(inout self) -> PyObjectPtr: + fn PyEval_GetBuiltins(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/reflection.html#c.PyEval_GetBuiltins). """ return self.lib.call["PyEval_GetBuiltins", PyObjectPtr]() fn Py_CompileString( - inout self, + mut self, strref: StringRef, filename: StringRef, compile_mode: Int, @@ -1277,7 +1275,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn Py_Is( - inout self, + mut self, rhs: PyObjectPtr, lhs: PyObjectPtr, ) -> Bool: @@ -1291,7 +1289,7 @@ struct CPython: else: return rhs == lhs - fn PyObject_Type(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Type(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Type). """ @@ -1300,7 +1298,7 @@ struct CPython: self._inc_total_rc() return p - fn PyObject_Str(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Str(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Str). """ @@ -1310,7 +1308,7 @@ struct CPython: return p fn PyObject_GetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetItem). @@ -1332,7 +1330,7 @@ struct CPython: return r fn PyObject_SetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetItem). @@ -1350,11 +1348,20 @@ struct CPython: ", parent obj:", obj._get_ptr_as_int(), ) + return r + fn PyObject_HasAttrString( + mut self, + obj: PyObjectPtr, + name: StringRef, + ) -> Int: + var r = self.lib.get_function[ + fn (PyObjectPtr, UnsafePointer[UInt8]) -> Int + ]("PyObject_HasAttrString")(obj, name.data) return r fn PyObject_GetAttrString( - inout self, + mut self, obj: PyObjectPtr, name: StringRef, ) -> PyObjectPtr: @@ -1380,7 +1387,7 @@ struct CPython: return r fn PyObject_SetAttrString( - inout self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr + mut self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrString). @@ -1404,7 +1411,7 @@ struct CPython: return r fn PyObject_CallObject( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, ) -> PyObjectPtr: @@ -1428,7 +1435,7 @@ struct CPython: return r fn PyObject_Call( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, kwargs: PyObjectPtr, @@ -1452,26 +1459,26 @@ struct CPython: self._inc_total_rc() return r - fn PyObject_IsTrue(inout self, obj: PyObjectPtr) -> c_int: + fn PyObject_IsTrue(mut self, obj: PyObjectPtr) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_IsTrue). """ return self.lib.call["PyObject_IsTrue", c_int](obj) - fn PyObject_Length(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Length(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Length). """ return int(self.lib.call["PyObject_Length", Int](obj)) - fn PyObject_Hash(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Hash(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Hash). """ return int(self.lib.call["PyObject_Hash", Int](obj)) fn PyObject_GetIter( - inout self, traversablePyObject: PyObjectPtr + mut self, traversablePyObject: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetIter). @@ -1498,7 +1505,7 @@ struct CPython: # Python Tuple operations # ===-------------------------------------------------------------------===# - fn PyTuple_New(inout self, count: Int) -> PyObjectPtr: + fn PyTuple_New(mut self, count: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_New). """ @@ -1517,7 +1524,7 @@ struct CPython: return r fn PyTuple_GetItem( - inout self, tuple: PyObjectPtr, pos: Py_ssize_t + mut self, tuple: PyObjectPtr, pos: Py_ssize_t ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_GetItem). @@ -1525,7 +1532,7 @@ struct CPython: return self.lib.call["PyTuple_GetItem", PyObjectPtr](tuple, pos) fn PyTuple_SetItem( - inout self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr + mut self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_SetItem). @@ -1542,7 +1549,7 @@ struct CPython: # Python List operations # ===-------------------------------------------------------------------===# - fn PyList_New(inout self, length: Int) -> PyObjectPtr: + fn PyList_New(mut self, length: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_New). """ @@ -1561,7 +1568,7 @@ struct CPython: return r fn PyList_SetItem( - inout self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr + mut self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_SetItem). @@ -1575,7 +1582,7 @@ struct CPython: ) fn PyList_GetItem( - inout self, list_obj: PyObjectPtr, index: Int + mut self, list_obj: PyObjectPtr, index: Int ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_GetItem). @@ -1587,7 +1594,7 @@ struct CPython: # ref: https://docs.python.org/3/c-api/concrete.html # ===-------------------------------------------------------------------===# - fn Py_None(inout self) -> PyObjectPtr: + fn Py_None(mut self) -> PyObjectPtr: """Get a None value, of type NoneType. [Reference]( https://docs.python.org/3/c-api/none.html#c.Py_None).""" @@ -1609,7 +1616,7 @@ struct CPython: # Boolean Objects # ===-------------------------------------------------------------------===# - fn PyBool_FromLong(inout self, value: c_long) -> PyObjectPtr: + fn PyBool_FromLong(mut self, value: c_long) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/bool.html#c.PyBool_FromLong). """ @@ -1631,7 +1638,7 @@ struct CPython: # Integer Objects # ===-------------------------------------------------------------------===# - fn PyLong_FromSsize_t(inout self, value: c_ssize_t) -> PyObjectPtr: + fn PyLong_FromSsize_t(mut self, value: c_ssize_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_t). """ @@ -1649,7 +1656,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_FromSize_t(inout self, value: c_size_t) -> PyObjectPtr: + fn PyLong_FromSize_t(mut self, value: c_size_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSize_t). """ @@ -1667,7 +1674,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_AsSsize_t(inout self, py_object: PyObjectPtr) -> c_ssize_t: + fn PyLong_AsSsize_t(mut self, py_object: PyObjectPtr) -> c_ssize_t: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_AsSsize_t). """ @@ -1677,7 +1684,7 @@ struct CPython: # Floating-Point Objects # ===-------------------------------------------------------------------===# - fn PyFloat_FromDouble(inout self, value: Float64) -> PyObjectPtr: + fn PyFloat_FromDouble(mut self, value: Float64) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDouble). """ @@ -1695,7 +1702,7 @@ struct CPython: self._inc_total_rc() return r - fn PyFloat_AsDouble(inout self, py_object: PyObjectPtr) -> Float64: + fn PyFloat_AsDouble(mut self, py_object: PyObjectPtr) -> Float64: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDouble). """ @@ -1705,7 +1712,7 @@ struct CPython: # Unicode Objects # ===-------------------------------------------------------------------===# - fn PyUnicode_DecodeUTF8(inout self, strref: StringRef) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strref: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1727,7 +1734,7 @@ struct CPython: self._inc_total_rc() return r - fn PyUnicode_DecodeUTF8(inout self, strslice: StringSlice) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strslice: StringSlice) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1748,7 +1755,7 @@ struct CPython: self._inc_total_rc() return r - fn PySlice_FromSlice(inout self, slice: Slice) -> PyObjectPtr: + fn PySlice_FromSlice(mut self, slice: Slice) -> PyObjectPtr: # Convert Mojo Slice to Python slice parameters # Note: Deliberately avoid using `span.indices()` here and instead pass # the Slice parameters directly to Python. Python's C implementation @@ -1775,7 +1782,7 @@ struct CPython: return py_slice - fn PyUnicode_AsUTF8AndSize(inout self, py_object: PyObjectPtr) -> StringRef: + fn PyUnicode_AsUTF8AndSize(mut self, py_object: PyObjectPtr) -> StringRef: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSize). """ @@ -1790,19 +1797,19 @@ struct CPython: # Python Error operations # ===-------------------------------------------------------------------===# - fn PyErr_Clear(inout self): + fn PyErr_Clear(mut self): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Clear). """ self.lib.call["PyErr_Clear"]() - fn PyErr_Occurred(inout self) -> Bool: + fn PyErr_Occurred(mut self) -> Bool: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Occurred). """ return not self.lib.call["PyErr_Occurred", PyObjectPtr]().is_null() - fn PyErr_Fetch(inout self) -> PyObjectPtr: + fn PyErr_Fetch(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Fetch). """ @@ -1829,14 +1836,14 @@ struct CPython: _ = traceback return r - fn PyErr_SetNone(inout self, type: PyObjectPtr): + fn PyErr_SetNone(mut self, type: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNone). """ self.lib.call["PyErr_SetNone"](type) fn PyErr_SetString( - inout self, + mut self, type: PyObjectPtr, message: UnsafePointer[c_char], ): @@ -1850,10 +1857,10 @@ struct CPython: # ===-------------------------------------------------------------------===# fn get_error_global( - inout self, + mut self, global_name: StringLiteral, ) -> PyObjectPtr: - """Get a Python borrowed reference to the specified global exception + """Get a Python read-only reference to the specified global exception object. """ @@ -1874,7 +1881,7 @@ struct CPython: # Python Iterator operations # ===-------------------------------------------------------------------===# - fn PyIter_Next(inout self, iterator: PyObjectPtr) -> PyObjectPtr: + fn PyIter_Next(mut self, iterator: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Next). """ @@ -1895,13 +1902,13 @@ struct CPython: self._inc_total_rc() return next_obj - fn PyIter_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PyIter_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Check). """ return self.lib.call["PyIter_Check", c_int](obj) != 0 - fn PySequence_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PySequence_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/sequence.html#c.PySequence_Check). """ @@ -1912,7 +1919,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PySlice_New( - inout self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr + mut self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/slice.html#c.PySlice_New). diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 990daaf583..8771e54c6f 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -28,14 +28,14 @@ from memory import UnsafePointer from utils import StringRef -from .python_object import PythonObject, TypedPythonObject from ._cpython import ( CPython, Py_eval_input, Py_file_input, - PyMethodDef, Py_ssize_t, + PyMethodDef, ) +from .python_object import PythonObject, TypedPythonObject alias _PYTHON_GLOBAL = _Global["Python", _PythonGlobal, _init_python_global] @@ -47,10 +47,10 @@ fn _init_python_global() -> _PythonGlobal: struct _PythonGlobal: var cpython: CPython - fn __moveinit__(inout self, owned other: Self): + fn __moveinit__(mut self, owned other: Self): self.cpython = other.cpython^ - fn __init__(inout self): + fn __init__(mut self): self.cpython = CPython() fn __del__(owned self): @@ -99,7 +99,7 @@ struct Python: """ self.impl = existing.impl - fn eval(inout self, code: StringRef) -> Bool: + fn eval(mut self, code: StringRef) -> Bool: """Executes the given Python code. Args: @@ -127,7 +127,7 @@ struct Python: `PythonObject` containing the result of the evaluation. """ var cpython = _get_global_python_itf().cpython() - # PyImport_AddModule returns a borrowed reference. + # PyImport_AddModule returns a read-only reference. var module = PythonObject.from_borrowed_ptr( cpython.PyImport_AddModule(name) ) @@ -265,7 +265,7 @@ struct Python: @staticmethod fn add_functions( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], owned functions: List[PyMethodDef], ) raises: """Adds functions to a PyModule object. @@ -287,7 +287,7 @@ struct Python: @staticmethod fn unsafe_add_methods( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], functions: UnsafePointer[PyMethodDef], ) raises: """Adds methods to a PyModule object. @@ -314,7 +314,7 @@ struct Python: @staticmethod fn add_object( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], name: StringLiteral, value: PythonObject, ) raises: @@ -366,7 +366,7 @@ struct Python: return PythonObject([]) @no_inline - fn __str__(inout self, str_obj: PythonObject) -> StringRef: + fn __str__(mut self, str_obj: PythonObject) -> StringRef: """Return a string representing the given Python object. Args: @@ -379,7 +379,7 @@ struct Python: return cpython.PyUnicode_AsUTF8AndSize(str_obj.py_object) @staticmethod - fn throw_python_exception_if_error_state(inout cpython: CPython) raises: + fn throw_python_exception_if_error_state(mut cpython: CPython) raises: """Raise an exception if CPython interpreter is in an error state. Args: @@ -389,7 +389,7 @@ struct Python: raise Python.unsafe_get_python_exception(cpython) @staticmethod - fn unsafe_get_python_exception(inout cpython: CPython) -> Error: + fn unsafe_get_python_exception(mut cpython: CPython) -> Error: """Get the `Error` object corresponding to the current CPython interpreter error state. diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 151336f510..a6b3a8a45f 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -19,17 +19,17 @@ from python import PythonObject ``` """ +from collections import Dict +from hashlib._hasher import _HashableWithHasher, _Hasher +from sys.ffi import c_ssize_t from sys.intrinsics import _type_is_eq from memory import UnsafePointer -from collections import Dict -from utils import StringRef -from hashlib._hasher import _HashableWithHasher, _Hasher +from utils import StringRef from ._cpython import CPython, PyObjectPtr from .python import Python, _get_global_python_itf -from sys.ffi import c_ssize_t struct _PyIter(Sized): @@ -87,7 +87,7 @@ struct _PyIter(Sized): # Trait implementations # ===-------------------------------------------------------------------===# - fn __next__(inout self: _PyIter) -> PythonObject: + fn __next__(mut self: _PyIter) -> PythonObject: """Return the next item and update to point to subsequent item. Returns: @@ -222,7 +222,7 @@ struct TypedPythonObject[type_hint: StringLiteral]( raise Python.unsafe_get_python_exception(cpython) # TODO(MSTDL-911): Avoid unnecessary owned reference counts when - # returning borrowed PythonObject values. + # returning read-only PythonObject values. return PythonObject.from_borrowed_ptr(item) @@ -276,7 +276,7 @@ struct PythonObject( @staticmethod fn from_borrowed_ptr(borrowed_ptr: PyObjectPtr) -> Self: - """Initialize this object from a borrowed reference-counted Python + """Initialize this object from a read-only reference-counted Python object pointer. The reference count of the pointee object will be incremented, and @@ -294,7 +294,7 @@ struct PythonObject( pointer returned by 'Borrowed reference'-type objects. Args: - borrowed_ptr: A borrowed reference counted pointer to a Python + borrowed_ptr: A read-only reference counted pointer to a Python object. Returns: @@ -303,7 +303,7 @@ struct PythonObject( var cpython = _get_global_python_itf().cpython() # SAFETY: - # We were passed a Python 'borrowed reference', so for it to be + # We were passed a Python 'read-only reference', so for it to be # safe to store this reference, we must increment the reference # count to convert this to a 'strong reference'. cpython.Py_IncRef(borrowed_ptr) @@ -374,7 +374,7 @@ struct PythonObject( self.py_object = cpython.PyLong_FromSsize_t(integer) @implicit - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initialize the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -427,7 +427,7 @@ struct PythonObject( self.py_object = cpython.PyUnicode_DecodeUTF8(string.as_string_slice()) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initialize the object from a list literal. Parameters: @@ -470,7 +470,7 @@ struct PythonObject( _ = cpython.PyList_SetItem(self.py_object, i, obj.py_object) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: Tuple[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: Tuple[*Ts]): """Initialize the object from a tuple literal. Parameters: @@ -715,7 +715,7 @@ struct PythonObject( Python.throw_python_exception_if_error_state(cpython) return PythonObject(result) - fn __setitem__(inout self, *args: PythonObject, value: PythonObject) raises: + fn __setitem__(mut self, *args: PythonObject, value: PythonObject) raises: """Set the value with the given key or keys. Args: @@ -782,7 +782,7 @@ struct PythonObject( return PythonObject(result_obj) fn _call_single_arg_inplace_method( - inout self, method_name: StringRef, rhs: PythonObject + mut self, method_name: StringRef, rhs: PythonObject ) raises: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(1) @@ -831,7 +831,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmul__", lhs) - fn __imul__(inout self, rhs: PythonObject) raises: + fn __imul__(mut self, rhs: PythonObject) raises: """In-place multiplication. Calls the underlying object's `__imul__` method. @@ -868,7 +868,7 @@ struct PythonObject( """ return self._call_single_arg_method("__radd__", lhs) - fn __iadd__(inout self, rhs: PythonObject) raises: + fn __iadd__(mut self, rhs: PythonObject) raises: """Immediate addition and concatenation. Args: @@ -902,7 +902,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rsub__", lhs) - fn __isub__(inout self, rhs: PythonObject) raises: + fn __isub__(mut self, rhs: PythonObject) raises: """Immediate subtraction. Args: @@ -939,7 +939,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rfloordiv__", lhs) - fn __ifloordiv__(inout self, rhs: PythonObject) raises: + fn __ifloordiv__(mut self, rhs: PythonObject) raises: """Immediate floor division. Args: @@ -973,7 +973,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rtruediv__", lhs) - fn __itruediv__(inout self, rhs: PythonObject) raises: + fn __itruediv__(mut self, rhs: PythonObject) raises: """Immediate division. Args: @@ -1007,7 +1007,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmod__", lhs) - fn __imod__(inout self, rhs: PythonObject) raises: + fn __imod__(mut self, rhs: PythonObject) raises: """Immediate modulo. Args: @@ -1039,7 +1039,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rxor__", lhs) - fn __ixor__(inout self, rhs: PythonObject) raises: + fn __ixor__(mut self, rhs: PythonObject) raises: """Immediate exclusive OR. Args: @@ -1072,7 +1072,7 @@ struct PythonObject( """ return self._call_single_arg_method("__ror__", lhs) - fn __ior__(inout self, rhs: PythonObject) raises: + fn __ior__(mut self, rhs: PythonObject) raises: """Immediate bitwise OR. Args: @@ -1105,7 +1105,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rand__", lhs) - fn __iand__(inout self, rhs: PythonObject) raises: + fn __iand__(mut self, rhs: PythonObject) raises: """Immediate bitwise AND. Args: @@ -1138,7 +1138,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rrshift__", lhs) - fn __irshift__(inout self, rhs: PythonObject) raises: + fn __irshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise right shift. Args: @@ -1171,7 +1171,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rlshift__", lhs) - fn __ilshift__(inout self, rhs: PythonObject) raises: + fn __ilshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise left shift. Args: @@ -1202,7 +1202,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rpow__", lhs) - fn __ipow__(inout self, rhs: PythonObject) raises: + fn __ipow__(mut self, rhs: PythonObject) raises: """Immediate power of. Args: @@ -1325,6 +1325,27 @@ struct PythonObject( """ return self._call_zero_arg_method("__invert__") + fn __contains__(self, rhs: PythonObject) raises -> Bool: + """Contains dunder. + + Calls the underlying object's `__contains__` method. + + Args: + rhs: Right hand value. + + Returns: + True if rhs is in self. + """ + # TODO: replace/optimize with c-python function. + # TODO: implement __getitem__ step for cpython membership test operator. + var cpython = _get_global_python_itf().cpython() + if cpython.PyObject_HasAttrString(self.py_object, "__contains__"): + return self._call_single_arg_method("__contains__", rhs).__bool__() + for v in self: + if v == rhs: + return True + return False + # see https://github.com/python/cpython/blob/main/Objects/call.c # for decrement rules fn __call__( @@ -1412,7 +1433,7 @@ struct PythonObject( debug_assert(result != -1, "object is not hashable") return result - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this python object hash value. Parameters: @@ -1480,7 +1501,7 @@ struct PythonObject( _ = python_str return mojo_str - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this Python object to the provided Writer. diff --git a/stdlib/src/random/__init__.mojo b/stdlib/src/random/__init__.mojo index d71e458454..231b4a115f 100644 --- a/stdlib/src/random/__init__.mojo +++ b/stdlib/src/random/__init__.mojo @@ -21,4 +21,5 @@ from .random import ( random_si64, random_ui64, seed, + shuffle, ) diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 840e353f7a..8ac75d5a8f 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -19,14 +19,14 @@ from random import seed ``` """ +import math +from collections import List, Optional +from math import floor from sys import bitwidthof, external_call from sys.ffi import OpaquePointer from time import perf_counter_ns -from collections import Optional from memory import UnsafePointer -from math import floor -import math fn _get_random_state() -> OpaquePointer: @@ -122,7 +122,7 @@ fn randint[ fn rand[ type: DType ]( - ptr: UnsafePointer[Scalar[type], *_], + ptr: UnsafePointer[Scalar[type], **_], size: Int, /, *, @@ -222,3 +222,19 @@ fn randn[ for i in range(size): ptr[i] = randn_float64(mean, variance).cast[type]() return + + +fn shuffle[T: CollectionElement, //](mut list: List[T]): + """Shuffles the elements of the list randomly. + + Performs an in-place Fisher-Yates shuffle on the provided list. + + Args: + list: The list to modify. + + Parameters: + T: The type of element in the List. + """ + for i in reversed(range(len(list))): + var j = int(random_ui64(0, i)) + list.swap_elements(i, j) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index 632dde283e..b0777f5c6e 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,6 +19,8 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, + has_accelerator, + has_amd_gpu_accelerator, has_avx, has_avx2, has_avx512f, @@ -27,15 +29,19 @@ from .info import ( has_neon, has_neon_int8_dotprod, has_neon_int8_matmul, + has_nvidia_gpu_accelerator, has_sse4, has_vnni, + is_amd_gpu, is_apple_m1, is_apple_m2, is_apple_m3, is_apple_silicon, is_big_endian, + is_gpu, is_little_endian, is_neoverse_n1, + is_nvidia_gpu, is_x86, num_logical_cores, num_performance_cores, @@ -47,9 +53,6 @@ from .info import ( simdbytewidth, simdwidthof, sizeof, - is_nvidia_gpu, - is_amd_gpu, - is_gpu, ) from .intrinsics import ( PrefetchCache, @@ -67,5 +70,5 @@ from .intrinsics import ( strided_load, strided_store, ) -from .param_env import env_get_int, env_get_string, env_get_bool, is_defined +from .param_env import env_get_bool, env_get_int, env_get_string, is_defined from .terminate import exit diff --git a/stdlib/src/sys/_assembly.mojo b/stdlib/src/sys/_assembly.mojo index 6cb2123393..2074afde29 100644 --- a/stdlib/src/sys/_assembly.mojo +++ b/stdlib/src/sys/_assembly.mojo @@ -14,9 +14,9 @@ from sys.intrinsics import _mlirtype_is_eq -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # 0-arg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index a76a1e47d1..ca0104d19c 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -17,14 +17,14 @@ C standard library counterparts. These are used to implement higher level functionality in the rest of the Mojo standard library. """ -from memory import UnsafePointer from sys import os_is_windows -from sys.ffi import c_char, c_int, OpaquePointer +from sys.ffi import OpaquePointer, c_char, c_int +from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdlib.h — core C standard library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -37,9 +37,9 @@ fn exit(status: c_int): external_call["exit", NoneType](status) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdio.h — input/output operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias FILE_ptr = OpaquePointer @@ -74,9 +74,9 @@ fn pclose(stream: FILE_ptr) -> c_int: return external_call["pclose", c_int](stream) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unistd.h -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -86,9 +86,9 @@ fn dup(oldfd: c_int) -> c_int: return external_call[name, c_int](oldfd) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # dlfcn.h — dynamic library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index cdfbcfb18f..2d6926568d 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -13,15 +13,15 @@ """Implements a foreign functions interface (FFI).""" from os import abort +from sys._libc import dlclose, dlerror, dlopen, dlsym + from memory import UnsafePointer from utils import StringRef -from .info import os_is_linux, os_is_windows, is_64bit, os_is_macos +from .info import is_64bit, os_is_linux, os_is_macos, os_is_windows from .intrinsics import _mlirtype_is_eq -from sys._libc import dlerror, dlopen, dlclose, dlsym - # ===-----------------------------------------------------------------------===# # Primitive C type aliases # ===-----------------------------------------------------------------------===# @@ -176,7 +176,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): # TODO(#15590): Implement support for windows and remove the always_inline. @always_inline - fn close(inout self): + fn close(mut self): """Delete the DLHandle object unloading the associated dynamic library. """ @@ -404,9 +404,9 @@ fn _get_dylib_function[ return new_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Globals -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct _Global[ @@ -462,9 +462,9 @@ fn _get_global_or_null[name: StringLiteral]() -> OpaquePointer: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # external_call -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -502,9 +502,9 @@ fn external_call[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _external_call_const -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 9930fe79a0..ee149ca72a 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -19,9 +19,10 @@ from sys import is_x86 ``` """ -from .ffi import _external_call_const, external_call, OpaquePointer from memory import UnsafePointer +from .ffi import OpaquePointer, _external_call_const, external_call + @always_inline("nodebug") fn _current_target() -> __mlir_type.`!kgen.target`: @@ -33,15 +34,13 @@ fn _accelerator_arch() -> StringLiteral: return __mlir_attr.`#kgen.param.expr : !kgen.string` -fn _get_arch[target: __mlir_type.`!kgen.target`]() -> String: - return String( - __mlir_attr[ - `#kgen.param.expr : !kgen.string`, - ] - ) +fn _get_arch[target: __mlir_type.`!kgen.target`]() -> StringLiteral: + return __mlir_attr[ + `#kgen.param.expr : !kgen.string`, + ] @always_inline("nodebug") @@ -863,3 +862,38 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: patch = int(osver[: osver.find(".")]) return (major, minor, patch) + + +# ===-----------------------------------------------------------------------===# +# Detect GPU on host side +# ===-----------------------------------------------------------------------===# + + +@always_inline("nodebug") +fn has_accelerator() -> Bool: + """Returns True if the host system has an accelerator and False otherwise. + + Returns: + True if the host system has an accelerator. + """ + return _accelerator_arch() != "" + + +@always_inline("nodebug") +fn has_amd_gpu_accelerator() -> Bool: + """Returns True if the host system has an AMD GPU and False otherwise. + + Returns: + True if the host system has an AMD GPU. + """ + return "amd" in _accelerator_arch() + + +@always_inline("nodebug") +fn has_nvidia_gpu_accelerator() -> Bool: + """Returns True if the host system has an NVIDIA GPU and False otherwise. + + Returns: + True if the host system has an NVIDIA GPU. + """ + return "nvidia" in _accelerator_arch() diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 38f6ae8e5b..3eb81a505a 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -19,15 +19,16 @@ from sys import PrefetchLocality ``` """ -from .info import sizeof, is_nvidia_gpu -from ._assembly import inlined_assembly import math from memory import AddressSpace, UnsafePointer -# ===----------------------------------------------------------------------===# +from ._assembly import inlined_assembly +from .info import is_nvidia_gpu, sizeof + +# ===-----------------------------------------------------------------------===# # llvm_intrinsic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -89,9 +90,9 @@ fn llvm_intrinsic[ ](loaded_pack) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _gather -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # NOTE: Converting from a scalar to a pointer is unsafe! The resulting pointer @@ -175,9 +176,9 @@ fn gather[ return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _scatter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -253,9 +254,9 @@ fn scatter[ _ = base -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # prefetch -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -468,7 +469,7 @@ struct PrefetchOptions: @always_inline("nodebug") fn prefetch[ type: DType, //, params: PrefetchOptions = PrefetchOptions() -](addr: UnsafePointer[Scalar[type], *_]): +](addr: UnsafePointer[Scalar[type], **_]): """Prefetches an instruction or data into cache before it is used. The prefetch function provides prefetching hints for the target @@ -499,16 +500,16 @@ fn prefetch[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") fn masked_load[ type: DType, //, size: Int ]( - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], mask: SIMD[DType.bool, size], passthrough: SIMD[type, size], alignment: Int = 1, @@ -545,9 +546,9 @@ fn masked_load[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -555,7 +556,7 @@ fn masked_store[ size: Int ]( value: SIMD, - addr: UnsafePointer[Scalar[value.type], *_], + addr: UnsafePointer[Scalar[value.type], **_], mask: SIMD[DType.bool, size], alignment: Int = 1, ): @@ -587,9 +588,9 @@ fn masked_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # compressed store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -597,7 +598,7 @@ fn compressed_store[ type: DType, size: Int ]( value: SIMD[type, size], - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], mask: SIMD[DType.bool, size], ): """Compresses the lanes of `value`, skipping `mask` lanes, and stores @@ -627,16 +628,16 @@ fn compressed_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") fn strided_load[ type: DType, //, simd_width: Int ]( - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], stride: Int, mask: SIMD[DType.bool, simd_width] = True, ) -> SIMD[type, simd_width]: @@ -667,9 +668,9 @@ fn strided_load[ return gather(offset, mask, passthrough) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -677,7 +678,7 @@ fn strided_store[ type: DType, //, simd_width: Int ]( value: SIMD[type, simd_width], - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], stride: Int, mask: SIMD[DType.bool, simd_width] = True, ): diff --git a/stdlib/src/sys/terminate.mojo b/stdlib/src/sys/terminate.mojo index 48e5fd8455..69fae08ca4 100644 --- a/stdlib/src/sys/terminate.mojo +++ b/stdlib/src/sys/terminate.mojo @@ -13,8 +13,8 @@ """This module includes the exit functions.""" -from sys.ffi import c_int from sys import _libc as libc +from sys.ffi import c_int fn exit(): diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 7f3c2dd09d..48ccb1ddcd 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -21,9 +21,11 @@ from tempfile import gettempdir import os import sys -from collections import Optional, List +from collections import List, Optional from pathlib import Path -from utils import Span, write_buffered + +from memory import Span +from utils import write_buffered alias TMP_MAX = 10_000 @@ -211,7 +213,7 @@ struct TemporaryDirectory: """Whether to ignore cleanup errors.""" fn __init__( - inout self, + mut self, suffix: String = "", prefix: String = "tmp", dir: Optional[String] = None, @@ -289,7 +291,7 @@ struct NamedTemporaryFile: """Name of the file.""" fn __init__( - inout self, + mut self, mode: String = "w", name: Optional[String] = None, suffix: String = "", @@ -344,7 +346,7 @@ struct NamedTemporaryFile: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" self._file_handle.close() if self._delete: @@ -402,7 +404,7 @@ struct NamedTemporaryFile: """ return self._file_handle.seek(offset, whence) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -415,7 +417,7 @@ struct NamedTemporaryFile: write_buffered[buffer_size=4096](file, args) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. diff --git a/stdlib/src/testing/__init__.mojo b/stdlib/src/testing/__init__.mojo index 23636b5081..79c2180d4d 100644 --- a/stdlib/src/testing/__init__.mojo +++ b/stdlib/src/testing/__init__.mojo @@ -17,9 +17,9 @@ from .testing import ( assert_almost_equal, assert_equal, assert_false, + assert_is, + assert_is_not, assert_not_equal, assert_raises, assert_true, - assert_is, - assert_is_not, ) diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 5dff04c458..20173be736 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -35,7 +35,6 @@ from math import isclose from builtin._location import __call_location, _SourceLocation - # ===----------------------------------------------------------------------=== # # Assertions # ===----------------------------------------------------------------------=== # @@ -537,7 +536,7 @@ struct assert_raises: @always_inline fn __init__( - inout self, + mut self, *, contains: String, location: Optional[_SourceLocation] = None, diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index de8f50f95e..6e5097653a 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -13,10 +13,9 @@ """Implements the time package.""" from .time import ( - now, + monotonic, perf_counter, perf_counter_ns, sleep, time_function, - monotonic, ) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index a8a38b5841..0167c26548 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -15,27 +15,28 @@ You can import these APIs from the `time` package. For example: ```mojo -from time import now +from time import perf_counter_ns ``` """ +from math import floor from os import abort from sys import ( external_call, - os_is_linux, - os_is_windows, is_amd_gpu, is_nvidia_gpu, + is_gpu, llvm_intrinsic, + os_is_linux, + os_is_windows, ) from sys._assembly import inlined_assembly -from math import floor from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Enums used in time.h 's glibc alias _CLOCK_REALTIME = 0 @@ -46,7 +47,7 @@ alias _CLOCK_MONOTONIC_RAW = 4 # Constants alias _NSEC_PER_USEC = 1000 -alias _NSEC_PER_MSEC = 1000000 +alias _NSEC_PER_MSEC = 1_000_000 alias _USEC_PER_MSEC = 1000 alias _MSEC_PER_SEC = 1000 alias _NSEC_PER_SEC = _NSEC_PER_USEC * _USEC_PER_MSEC * _MSEC_PER_SEC @@ -68,7 +69,7 @@ struct _CTimeSpec(Stringable): self.tv_sec = 0 self.tv_subsec = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: @parameter if os_is_linux(): return self.tv_sec * _NSEC_PER_SEC + self.tv_subsec @@ -90,7 +91,7 @@ struct _FILETIME: self.dwLowDateTime = 0 self.dwHighDateTime = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: # AFTER subtracting windows offset the return value fits in a signed int64 # BEFORE subtracting windows offset the return value does not fit in a signed int64 # Taken from https://github.com/microsoft/STL/blob/c8d1efb6d504f6392acf8f6d01fd703f7c8826c0/stl/src/xtime.cpp#L50 @@ -115,7 +116,7 @@ fn _clock_gettime(clockid: Int) -> _CTimeSpec: @always_inline -fn _gettime_as_nsec_unix(clockid: Int) -> Int: +fn _gettime_as_nsec_unix(clockid: Int) -> UInt: if os_is_linux(): var ts = _clock_gettime(clockid) return ts.as_nanoseconds() @@ -126,17 +127,26 @@ fn _gettime_as_nsec_unix(clockid: Int) -> Int: @always_inline -fn _realtime_nanoseconds() -> Int: +fn _gpu_clock() -> UInt: + """Returns a 64-bit unsigned cycle counter.""" + alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" + return int(llvm_intrinsic[asm, Int64]()) + + +@always_inline +fn _realtime_nanoseconds() -> UInt: """Returns the current realtime time in nanoseconds""" return _gettime_as_nsec_unix(_CLOCK_REALTIME) @always_inline -fn _monotonic_nanoseconds() -> Int: +fn _monotonic_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" @parameter - if os_is_windows(): + if is_gpu(): + return _gpu_clock() + elif os_is_windows(): var ft = _FILETIME() external_call["GetSystemTimePreciseAsFileTime", NoneType]( Pointer.address_of(ft) @@ -148,29 +158,28 @@ fn _monotonic_nanoseconds() -> Int: @always_inline -fn _monotonic_raw_nanoseconds() -> Int: +fn _monotonic_raw_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" - return _gettime_as_nsec_unix(_CLOCK_MONOTONIC_RAW) @always_inline -fn _process_cputime_nanoseconds() -> Int: +fn _process_cputime_nanoseconds() -> UInt: """Returns the high-resolution per-process timer from the CPU""" return _gettime_as_nsec_unix(_CLOCK_PROCESS_CPUTIME_ID) @always_inline -fn _thread_cputime_nanoseconds() -> Int: +fn _thread_cputime_nanoseconds() -> UInt: """Returns the thread-specific CPU-time clock""" return _gettime_as_nsec_unix(_CLOCK_THREAD_CPUTIME_ID) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -187,13 +196,13 @@ fn perf_counter() -> Float64: return Float64(_monotonic_nanoseconds()) / _NSEC_PER_SEC -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter_ns -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline -fn perf_counter_ns() -> Int: +fn perf_counter_ns() -> UInt: """Return the value (in nanoseconds) of a performance counter, i.e. a clock with the highest available resolution to measure a short duration. It does include time elapsed during sleep and is system-wide. The reference @@ -203,44 +212,16 @@ fn perf_counter_ns() -> Int: Returns: The current time in ns. """ - - @parameter - if is_nvidia_gpu(): - return int( - inlined_assembly[ - "mov.u64 $0, %globaltimer;", UInt64, constraints="=l" - ]() - ) return _monotonic_nanoseconds() -# ===----------------------------------------------------------------------===# -# now -# ===----------------------------------------------------------------------===# - - -@always_inline -fn now() -> Int: - """Deprecated: Please use time.perf_counter_ns instead. - - Returns the current monotonic time time in nanoseconds. This function - queries the current platform's monotonic clock, making it useful for - measuring time differences, but the significance of the returned value - varies depending on the underlying implementation. - - Returns: - The current time in ns. - """ - return perf_counter_ns() - - -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # monotonic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline -fn monotonic() -> Int: +fn monotonic() -> UInt: """ Returns the current monotonic time time in nanoseconds. This function queries the current platform's monotonic clock, making it useful for @@ -253,16 +234,16 @@ fn monotonic() -> Int: return perf_counter_ns() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # time_function -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @parameter fn _time_function_windows[ func: fn () raises capturing [_] -> None -]() raises -> Int: +]() raises -> UInt: """Calculates elapsed time in Windows""" var ticks_per_sec: _WINDOWS_LARGE_INTEGER = 0 @@ -293,7 +274,7 @@ fn _time_function_windows[ @always_inline @parameter -fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: +fn time_function[func: fn () raises capturing [_] -> None]() raises -> UInt: """Measures the time spent in the function. Parameters: @@ -315,7 +296,7 @@ fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: @always_inline @parameter -fn time_function[func: fn () capturing [_] -> None]() -> Int: +fn time_function[func: fn () capturing [_] -> None]() -> UInt: """Measures the time spent in the function. Parameters: @@ -332,12 +313,12 @@ fn time_function[func: fn () capturing [_] -> None]() -> Int: try: return time_function[raising_func]() except err: - return abort[Int](err) + return abort[UInt](err) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sleep -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn sleep(sec: Float64): @@ -348,17 +329,10 @@ fn sleep(sec: Float64): """ @parameter - if is_nvidia_gpu(): + if is_gpu(): var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.nvvm.nanosleep", NoneType]( - nsec.cast[DType.int32]() - ) - return - elif is_amd_gpu(): - var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.amdgcn.s.sleep", NoneType]( - nsec.cast[DType.int32]() - ) + alias intrinsic = "llvm.nvvm.nanosleep" if is_nvidia_gpu() else "llvm.amdgcn.s.sleep" + llvm_intrinsic[intrinsic, NoneType](nsec.cast[DType.int32]()) return alias NANOSECONDS_IN_SECOND = 1_000_000_000 @@ -375,7 +349,7 @@ fn sleep(sec: Float64): _ = rem -fn sleep(sec: Int): +fn sleep(sec: UInt): """Suspends the current thread for the seconds specified. Args: @@ -383,7 +357,7 @@ fn sleep(sec: Int): """ @parameter - if is_nvidia_gpu() or is_amd_gpu(): + if is_gpu(): return sleep(Float64(sec)) @parameter diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index d319cf884a..fa6129cc1c 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -14,11 +14,10 @@ from .index import Index, IndexList, product from .inline_string import InlineString +from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll -from .span import AsBytes, Span from .static_tuple import StaticTuple -from .stringref import StringRef from .string_slice import StaticString, StringSlice +from .stringref import StringRef from .variant import Variant -from .lock import SpinWaiter, BlockingSpinLock, BlockingScopedLock -from .write import Writer, Writable, write_args, write_buffered +from .write import Writable, Writer, write_args, write_buffered diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index 5eadeb4788..1cc0eea138 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -13,7 +13,7 @@ from pathlib import Path -from memory import AddressSpace, bitcast, UnsafePointer +from memory import AddressSpace, UnsafePointer, bitcast alias _kStartTensorMarker = "[" alias _kEndTensorMarker = "]" @@ -25,7 +25,7 @@ alias _kCompactElemPerSide = _kCompactMaxElemsToPrint // 2 fn _serialize_elements_compact[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): serialize_fn(_kStartTensorMarker) if len < _kCompactMaxElemsToPrint: _serialize_elements_complete[serialize_fn=serialize_fn](ptr, len) @@ -46,7 +46,7 @@ fn _serialize_elements_compact[ fn _serialize_elements_complete[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): if len == 0: return serialize_fn(ptr.load()) @@ -59,7 +59,7 @@ fn _serialize_elements[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, compact: Bool = False, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): @parameter if compact: _serialize_elements_compact[serialize_fn=serialize_fn](ptr, len) @@ -73,7 +73,7 @@ fn _serialize[ serialize_dtype: Bool = True, serialize_shape: Bool = True, serialize_end_line: Bool = True, -](ptr: UnsafePointer[Scalar[type], _], shape: List[Int, *_]): +](ptr: UnsafePointer[Scalar[type], **_], shape: List[Int, *_]): var rank = len(shape) if rank == 0: if serialize_end_line: diff --git a/stdlib/src/utils/_unicode.mojo b/stdlib/src/utils/_unicode.mojo index 079bd7e180..fb61a24cd9 100644 --- a/stdlib/src/utils/_unicode.mojo +++ b/stdlib/src/utils/_unicode.mojo @@ -11,7 +11,8 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # from bit import count_leading_zeros -from memory import memcpy, UnsafePointer +from memory import UnsafePointer, memcpy + from ._unicode_lookups import * diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/utils/_utf8_validation.mojo index 800ed5626b..eb514733ca 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/utils/_utf8_validation.mojo @@ -25,9 +25,10 @@ Code adapted from: https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs """ -from memory import UnsafePointer +from base64._b64encode import _sub_with_saturation from sys.intrinsics import llvm_intrinsic -from builtin.simd import _sub_with_saturation + +from memory import UnsafePointer, Span alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo new file mode 100644 index 0000000000..752a34898d --- /dev/null +++ b/stdlib/src/utils/format.mojo @@ -0,0 +1,715 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Implements Formatting utilities.""" + +from collections import Optional + +from memory import UnsafePointer + +# TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for +# people who want to write their own templating engines. This is not yet done +# because the implementation is incomplete and we are missing crucial features. + +# ===-----------------------------------------------------------------------===# +# Formatter +# ===-----------------------------------------------------------------------===# + + +# NOTE(#3765): an interesting idea would be to allow custom start and end +# characters for formatting (passed as parameters to Formatter), this would be +# useful for people developing custom templating engines as it would allow +# detemining e.g. `` [...] `` html tags. +# And going a step further it might even be worth it adding custom format +# specification start character, and custom format specs themselves (by defining +# a trait that all format specifications conform to) +@value +struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): + """The struct that handles string formatting by curly braces entries. + This is internal for the types: `String`, `StringLiteral` and `StringSlice`. + """ + + var first_curly: Int + """The index of an opening brace around a substitution field.""" + var last_curly: Int + """The index of a closing brace around a substitution field.""" + # TODO: ord("a") conversion flag not supported yet + var conversion_flag: UInt8 + """The type of conversion for the entry: {ord("s"), ord("r")}.""" + var format_spec: Optional[_FormatSpec] + """The format specifier.""" + # TODO: ord("a") conversion flag not supported yet + alias supported_conversion_flags = SIMD[DType.uint8, 2](ord("s"), ord("r")) + """Currently supported conversion flags: `__str__` and `__repr__`.""" + alias _FieldVariantType = Variant[String, Int, NoneType, Bool] + """Purpose of the `Variant` `Self.field`: + + - `Int` for manual indexing: (value field contains `0`). + - `NoneType` for automatic indexing: (value field contains `None`). + - `String` for **kwargs indexing: (value field contains `foo`). + - `Bool` for escaped curlies: (value field contains False for `{` or True + for `}`). + """ + var field: Self._FieldVariantType + """Store the substitution field. See `Self._FieldVariantType` docstrings for + more details.""" + alias _args_t = VariadicPack[element_trait=_CurlyEntryFormattable, *_] + """Args types that are formattable by curly entry.""" + + fn __init__(out self, *, other: Self): + """Construct a format entry by copying another. + + Args: + other: The other format entry. + """ + self.first_curly = other.first_curly + self.last_curly = other.last_curly + self.conversion_flag = other.conversion_flag + self.field = Self._FieldVariantType(other=other.field) + self.format_spec = other.format_spec + + fn __init__( + mut self, + first_curly: Int, + last_curly: Int, + field: Self._FieldVariantType, + conversion_flag: UInt8 = 0, + format_spec: Optional[_FormatSpec] = None, + ): + """Construct a format entry. + + Args: + first_curly: The index of an opening brace around a substitution + field. + last_curly: The index of a closing brace around a substitution + field. + field: Store the substitution field. + conversion_flag: The type of conversion for the entry. + format_spec: The format specifier. + """ + self.first_curly = first_curly + self.last_curly = last_curly + self.field = field + self.conversion_flag = conversion_flag + self.format_spec = format_spec + + @always_inline + fn is_escaped_brace(ref self) -> Bool: + """Whether the field is escaped_brace. + + Returns: + The result. + """ + return self.field.isa[Bool]() + + @always_inline + fn is_kwargs_field(ref self) -> Bool: + """Whether the field is kwargs_field. + + Returns: + The result. + """ + return self.field.isa[String]() + + @always_inline + fn is_automatic_indexing(ref self) -> Bool: + """Whether the field is automatic_indexing. + + Returns: + The result. + """ + return self.field.isa[NoneType]() + + @always_inline + fn is_manual_indexing(ref self) -> Bool: + """Whether the field is manual_indexing. + + Returns: + The result. + """ + return self.field.isa[Int]() + + @staticmethod + fn format(fmt_src: StringSlice, args: Self._args_t) raises -> String: + """Format the entries. + + Args: + fmt_src: The format source. + args: The arguments. + + Returns: + The result. + """ + alias len_pos_args = __type_of(args).__len__() + entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) + var fmt_len = fmt_src.byte_length() + var buf = String._buffer_type(capacity=fmt_len + size_estimation) + buf.size = 1 + buf.unsafe_set(0, 0) + var res = String(buf^) + var offset = 0 + var ptr = fmt_src.unsafe_ptr() + alias S = StringSlice[StaticConstantOrigin] + + @always_inline("nodebug") + fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: + return S(ptr=p + start, length=end - start) + + var auto_arg_index = 0 + for e in entries: + debug_assert(offset < fmt_len, "offset >= fmt_src.byte_length()") + res += _build_slice(ptr, offset, e[].first_curly) + e[]._format_entry[len_pos_args](res, args, auto_arg_index) + offset = e[].last_curly + 1 + + res += _build_slice(ptr, offset, fmt_len) + return res^ + + @staticmethod + fn _create_entries( + fmt_src: StringSlice, len_pos_args: Int + ) raises -> (List[Self], Int): + """Returns a list of entries and its total estimated entry byte width. + """ + var manual_indexing_count = 0 + var automatic_indexing_count = 0 + var raised_manual_index = Optional[Int](None) + var raised_automatic_index = Optional[Int](None) + var raised_kwarg_field = Optional[String](None) + alias `}` = UInt8(ord("}")) + alias `{` = UInt8(ord("{")) + alias l_err = "there is a single curly { left unclosed or unescaped" + alias r_err = "there is a single curly } left unclosed or unescaped" + + var entries = List[Self]() + var start = Optional[Int](None) + var skip_next = False + var fmt_ptr = fmt_src.unsafe_ptr() + var fmt_len = fmt_src.byte_length() + var total_estimated_entry_byte_width = 0 + + for i in range(fmt_len): + if skip_next: + skip_next = False + continue + if fmt_ptr[i] == `{`: + if not start: + start = i + continue + if i - start.value() != 1: + raise Error(l_err) + # python escapes double curlies + entries.append(Self(start.value(), i, field=False)) + start = None + continue + elif fmt_ptr[i] == `}`: + if not start and (i + 1) < fmt_len: + # python escapes double curlies + if fmt_ptr[i + 1] == `}`: + entries.append(Self(i, i + 1, field=True)) + total_estimated_entry_byte_width += 2 + skip_next = True + continue + elif not start: # if it is not an escaped one, it is an error + raise Error(r_err) + + var start_value = start.value() + var current_entry = Self(start_value, i, field=NoneType()) + + if i - start_value != 1: + if current_entry._handle_field_and_break( + fmt_src, + len_pos_args, + i, + start_value, + automatic_indexing_count, + raised_automatic_index, + manual_indexing_count, + raised_manual_index, + raised_kwarg_field, + total_estimated_entry_byte_width, + ): + break + else: # automatic indexing + if automatic_indexing_count >= len_pos_args: + raised_automatic_index = automatic_indexing_count + break + automatic_indexing_count += 1 + total_estimated_entry_byte_width += 8 # guessing + entries.append(current_entry^) + start = None + + if raised_automatic_index: + raise Error("Automatic indexing require more args in *args") + elif raised_kwarg_field: + var val = raised_kwarg_field.value() + raise Error("Index " + val + " not in kwargs") + elif manual_indexing_count and automatic_indexing_count: + raise Error("Cannot both use manual and automatic indexing") + elif raised_manual_index: + var val = str(raised_manual_index.value()) + raise Error("Index " + val + " not in *args") + elif start: + raise Error(l_err) + return entries^, total_estimated_entry_byte_width + + fn _handle_field_and_break( + mut self, + fmt_src: StringSlice, + len_pos_args: Int, + i: Int, + start_value: Int, + mut automatic_indexing_count: Int, + mut raised_automatic_index: Optional[Int], + mut manual_indexing_count: Int, + mut raised_manual_index: Optional[Int], + mut raised_kwarg_field: Optional[String], + mut total_estimated_entry_byte_width: Int, + ) raises -> Bool: + alias S = StringSlice[StaticConstantOrigin] + + @always_inline("nodebug") + fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: + return S(ptr=p + start, length=end - start) + + var field = _build_slice(fmt_src.unsafe_ptr(), start_value + 1, i) + var field_ptr = field.unsafe_ptr() + var field_len = i - (start_value + 1) + var exclamation_index = -1 + var idx = 0 + while idx < field_len: + if field_ptr[idx] == ord("!"): + exclamation_index = idx + break + idx += 1 + var new_idx = exclamation_index + 1 + if exclamation_index != -1: + if new_idx == field_len: + raise Error("Empty conversion flag.") + var conversion_flag = field_ptr[new_idx] + if field_len - new_idx > 1 or ( + conversion_flag not in Self.supported_conversion_flags + ): + var f = String(_build_slice(field_ptr, new_idx, field_len)) + _ = field + raise Error('Conversion flag "' + f + '" not recognised.') + self.conversion_flag = conversion_flag + field = _build_slice(field_ptr, 0, exclamation_index) + else: + new_idx += 1 + + var extra = int(new_idx < field_len) + var fmt_field = _build_slice(field_ptr, new_idx + extra, field_len) + self.format_spec = _FormatSpec.parse(fmt_field) + var w = int(self.format_spec.value().width) if self.format_spec else 0 + # fully guessing the byte width here to be at least 8 bytes per entry + # minus the length of the whole format specification + total_estimated_entry_byte_width += 8 * int(w > 0) + w - (field_len + 2) + + if field.byte_length() == 0: + # an empty field, so it's automatic indexing + if automatic_indexing_count >= len_pos_args: + raised_automatic_index = automatic_indexing_count + return True + automatic_indexing_count += 1 + else: + try: + # field is a number for manual indexing: + # TODO: add support for "My name is {0.name}".format(Person(name="Fred")) + # TODO: add support for "My name is {0[name]}".format({"name": "Fred"}) + var number = int(field) + self.field = number + if number >= len_pos_args or number < 0: + raised_manual_index = number + return True + manual_indexing_count += 1 + except e: + alias unexp = "Not the expected error from atol" + debug_assert("not convertible to integer" in str(e), unexp) + # field is a keyword for **kwargs: + # TODO: add support for "My name is {person.name}".format(person=Person(name="Fred")) + # TODO: add support for "My name is {person[name]}".format(person={"name": "Fred"}) + var f = str(field) + self.field = f + raised_kwarg_field = f + return True + return False + + fn _format_entry[ + len_pos_args: Int + ](self, mut res: String, args: Self._args_t, mut auto_idx: Int) raises: + # TODO(#3403 and/or #3252): this function should be able to use + # Writer syntax when the type implements it, since it will give great + # performance benefits. This also needs to be able to check if the given + # args[i] conforms to the trait needed by the conversion_flag to avoid + # needing to constraint that every type needs to conform to every trait. + alias `r` = UInt8(ord("r")) + alias `s` = UInt8(ord("s")) + # alias `a` = UInt8(ord("a")) # TODO + + @parameter + fn _format(idx: Int) raises: + @parameter + for i in range(len_pos_args): + if i == idx: + var type_impls_repr = True # TODO + var type_impls_str = True # TODO + var type_impls_write_repr = True # TODO + var type_impls_write_str = True # TODO + var flag = self.conversion_flag + var empty = flag == 0 and not self.format_spec + + var data: String + if empty and type_impls_write_str: + data = str(args[i]) # TODO: use writer and return + elif empty and type_impls_str: + data = str(args[i]) + elif flag == `s` and type_impls_write_str: + if empty: + # TODO: use writer and return + pass + data = str(args[i]) + elif flag == `s` and type_impls_str: + data = str(args[i]) + elif flag == `r` and type_impls_write_repr: + if empty: + # TODO: use writer and return + pass + data = repr(args[i]) + elif flag == `r` and type_impls_repr: + data = repr(args[i]) + elif self.format_spec: + self.format_spec.value().format(res, args[i]) + return + else: + alias argnum = "Argument number: " + alias does_not = " does not implement the trait " + alias needed = "needed for conversion_flag: " + var flg = String(List[UInt8](flag, 0)) + raise Error(argnum + str(i) + does_not + needed + flg) + + if self.format_spec: + self.format_spec.value().format( + res, data.as_string_slice() + ) + else: + res += data + + if self.is_escaped_brace(): + res += "}" if self.field[Bool] else "{" + elif self.is_manual_indexing(): + _format(self.field[Int]) + elif self.is_automatic_indexing(): + _format(auto_idx) + auto_idx += 1 + + +# ===-----------------------------------------------------------------------===# +# Format Specification +# ===-----------------------------------------------------------------------===# + + +trait _CurlyEntryFormattable(Stringable, Representable): + """This trait is used by the `format()` method to support format specifiers. + Currently, it is a composition of both `Stringable` and `Representable` + traits i.e. a type to be formatted must implement both. In the future this + will be less constrained. + """ + + ... + + +# TODO: trait _FormattableStr: fn __format__(self, spec: FormatSpec) -> String: +# TODO: trait _FormattableWrite: fn __format__(self, spec: FormatSpec, *, writer: Writer): +# TODO: add usage of these traits before trying to coerce to repr/str/int/float + + +@value +@register_passable("trivial") +struct _FormatSpec: + """Store every field of the format specifier in a byte (e.g., ord("+") for + sign). It is stored in a byte because every [format specifier]( + https://docs.python.org/3/library/string.html#formatspec) is an ASCII + character. + """ + + var fill: UInt8 + """If a valid align value is specified, it can be preceded by a fill + character that can be any character and defaults to a space if omitted. + """ + var align: UInt8 + """The meaning of the various alignment options is as follows: + + | Option | Meaning| + |:------:|:-------| + |'<' | Forces the field to be left-aligned within the available space \ + (this is the default for most objects).| + |'>' | Forces the field to be right-aligned within the available space \ + (this is the default for numbers).| + |'=' | Forces the padding to be placed after the sign (if any) but before \ + the digits. This is used for printing fields in the form `+000000120`. This\ + alignment option is only valid for numeric types. It becomes the default\ + for numbers when `0` immediately precedes the field width.| + |'^' | Forces the field to be centered within the available space.| + """ + var sign: UInt8 + """The sign option is only valid for number types, and can be one of the + following: + + | Option | Meaning| + |:------:|:-------| + |'+' | indicates that a sign should be used for both positive as well as\ + negative numbers.| + |'-' | indicates that a sign should be used only for negative numbers (this\ + is the default behavior).| + |space | indicates that a leading space should be used on positive numbers,\ + and a minus sign on negative numbers.| + """ + var coerce_z: Bool + """The 'z' option coerces negative zero floating-point values to positive + zero after rounding to the format precision. This option is only valid for + floating-point presentation types. + """ + var alternate_form: Bool + """The alternate form is defined differently for different types. This + option is only valid for types that implement the trait `# TODO: define + trait`. For integers, when binary, octal, or hexadecimal output is used, + this option adds the respective prefix '0b', '0o', '0x', or '0X' to the + output value. For float and complex the alternate form causes the result of + the conversion to always contain a decimal-point character, even if no + digits follow it. + """ + var width: UInt8 + """A decimal integer defining the minimum total field width, including any + prefixes, separators, and other formatting characters. If not specified, + then the field width will be determined by the content. When no explicit + alignment is given, preceding the width field by a zero ('0') character + enables sign-aware zero-padding for numeric types. This is equivalent to a + fill character of '0' with an alignment type of '='. + """ + var grouping_option: UInt8 + """The ',' option signals the use of a comma for a thousands separator. For + a locale aware separator, use the 'n' integer presentation type instead. The + '_' option signals the use of an underscore for a thousands separator for + floating-point presentation types and for integer presentation type 'd'. For + integer presentation types 'b', 'o', 'x', and 'X', underscores will be + inserted every 4 digits. For other presentation types, specifying this + option is an error. + """ + var precision: UInt8 + """The precision is a decimal integer indicating how many digits should be + displayed after the decimal point for presentation types 'f' and 'F', or + before and after the decimal point for presentation types 'g' or 'G'. For + string presentation types the field indicates the maximum field size - in + other words, how many characters will be used from the field content. The + precision is not allowed for integer presentation types. + """ + var type: UInt8 + """Determines how the data should be presented. + + The available integer presentation types are: + + | Option | Meaning| + |:------:|:-------| + |'b' |Binary format. Outputs the number in base 2.| + |'c' |Character. Converts the integer to the corresponding unicode\ + character before printing.| + |'d' |Decimal Integer. Outputs the number in base 10.| + |'o' |Octal format. Outputs the number in base 8.| + |'x' |Hex format. Outputs the number in base 16, using lower-case letters\ + for the digits above 9.| + |'X' |Hex format. Outputs the number in base 16, using upper-case letters\ + for the digits above 9. In case '#' is specified, the prefix '0x' will be\ + upper-cased to '0X' as well.| + |'n' |Number. This is the same as 'd', except that it uses the current\ + locale setting to insert the appropriate number separator characters.| + |None | The same as 'd'.| + + In addition to the above presentation types, integers can be formatted with + the floating-point presentation types listed below (except 'n' and None). + When doing so, float() is used to convert the integer to a floating-point + number before formatting. + + The available presentation types for float and Decimal values are: + + | Option | Meaning| + |:------:|:-------| + |'e' |Scientific notation. For a given precision p, formats the number in\ + scientific notation with the letter `e` separating the coefficient from the\ + exponent. The coefficient has one digit before and p digits after the\ + decimal point, for a total of p + 1 significant digits. With no precision\ + given, uses a precision of 6 digits after the decimal point for float, and\ + shows all coefficient digits for Decimal. If no digits follow the decimal\ + point, the decimal point is also removed unless the # option is used.| + |'E' |Scientific notation. Same as 'e' except it uses an upper case `E` as\ + the separator character.| + |'f' |Fixed-point notation. For a given precision p, formats the number as\ + a decimal number with exactly p digits following the decimal point. With no\ + precision given, uses a precision of 6 digits after the decimal point for\ + float, and uses a precision large enough to show all coefficient digits for\ + Decimal. If no digits follow the decimal point, the decimal point is also\ + removed unless the '#' option is used.| + |'F' |Fixed-point notation. Same as 'f', but converts nan to NAN and inf to\ + INF.| + |'g' |General format. For a given precision p >= 1, this rounds the number\ + to p significant digits and then formats the result in either fixed-point\ + format or in scientific notation, depending on its magnitude. A precision\ + of 0 is treated as equivalent to a precision of 1.\ + The precise rules are as follows: suppose that the result formatted with\ + presentation type 'e' and precision p-1 would have exponent exp. Then, if\ + m <= exp < p, where m is -4 for floats and -6 for Decimals, the number is\ + formatted with presentation type 'f' and precision p-1-exp. Otherwise, the\ + number is formatted with presentation type 'e' and precision p-1. In both\ + cases insignificant trailing zeros are removed from the significand, and\ + the decimal point is also removed if there are no remaining digits\ + following it, unless the '#' option is used.\ + With no precision given, uses a precision of 6 significant digits for\ + float. For Decimal, the coefficient of the result is formed from the\ + coefficient digits of the value; scientific notation is used for values\ + smaller than 1e-6 in absolute value and values where the place value of the\ + least significant digit is larger than 1, and fixed-point notation is used\ + otherwise.\ + Positive and negative infinity, positive and negative zero, and nans, are\ + formatted as inf, -inf, 0, -0 and nan respectively, regardless of the\ + precision.| + |'G' |General format. Same as 'g' except switches to 'E' if the number gets\ + too large. The representations of infinity and NaN are uppercased, too.| + |'n' |Number. This is the same as 'g', except that it uses the current\ + locale setting to insert the appropriate number separator characters.| + |'%' |Percentage. Multiplies the number by 100 and displays in fixed ('f')\ + format, followed by a percent sign.| + |None |For float this is like the 'g' type, except that when fixed-point\ + notation is used to format the result, it always includes at least one\ + digit past the decimal point, and switches to the scientific notation when\ + exp >= p - 1. When the precision is not specified, the latter will be as\ + large as needed to represent the given value faithfully.\ + For Decimal, this is the same as either 'g' or 'G' depending on the value\ + of context.capitals for the current decimal context.\ + The overall effect is to match the output of str() as altered by the other\ + format modifiers.| + """ + + fn __init__( + mut self, + fill: UInt8 = ord(" "), + align: UInt8 = 0, + sign: UInt8 = ord("-"), + coerce_z: Bool = False, + alternate_form: Bool = False, + width: UInt8 = 0, + grouping_option: UInt8 = 0, + precision: UInt8 = 0, + type: UInt8 = 0, + ): + """Construct a FormatSpec instance. + + Args: + fill: Defaults to space. + align: Defaults to `0` which is adjusted to the default for the arg + type. + sign: Defaults to `-`. + coerce_z: Defaults to False. + alternate_form: Defaults to False. + width: Defaults to `0` which is adjusted to the default for the arg + type. + grouping_option: Defaults to `0` which is adjusted to the default for + the arg type. + precision: Defaults to `0` which is adjusted to the default for the + arg type. + type: Defaults to `0` which is adjusted to the default for the arg + type. + """ + self.fill = fill + self.align = align + self.sign = sign + self.coerce_z = coerce_z + self.alternate_form = alternate_form + self.width = width + self.grouping_option = grouping_option + self.precision = precision + self.type = type + + @staticmethod + fn parse(fmt_str: StringSlice) -> Optional[Self]: + """Parses the format spec string. + + Args: + fmt_str: The StringSlice with the format spec. + + Returns: + An instance of FormatSpec. + """ + + # FIXME: the need for the following dynamic characteristics will + # probably mean the parse method will have to be called at the + # formatting stage in cases where it's dynamic. + # TODO: add support for "{0:{1}}".format(123, "10") + # TODO: add support for more complex cases as well + # >>> width = 10 + # >>> precision = 4 + # >>> value = decimal.Decimal('12.34567') + # >>> 'result: {value:{width}.{precision}}'.format(...) + alias `:` = UInt8(ord(":")) + var f_len = fmt_str.byte_length() + var f_ptr = fmt_str.unsafe_ptr() + var colon_idx = -1 + var idx = 0 + while idx < f_len: + if f_ptr[idx] == `:`: + exclamation_index = idx + break + idx += 1 + + if colon_idx == -1: + return None + + # TODO: Future implementation of format specifiers + return None + + # TODO: this should be in StringSlice.__format__(self, spec: FormatSpec, *, writer: Writer): + fn format(self, mut res: String, item: StringSlice) raises: + """Transform a String according to its format specification. + + Args: + res: The resulting String. + item: The item to format. + """ + + # TODO: align, fill, etc. + res += item + + fn format[T: _CurlyEntryFormattable](self, mut res: String, item: T) raises: + """Stringify a type according to its format specification. + + Args: + res: The resulting String. + item: The item to stringify. + """ + var type_implements_format_write = True # TODO + var type_implements_format_write_raising = True # TODO + var type_implements_format = True # TODO + var type_implements_format_raising = True # TODO + var type_implements_float = True # TODO + var type_implements_float_raising = True # TODO + var type_implements_int = True # TODO + var type_implements_int_raising = True # TODO + + # TODO: send to the type's __format__ method if it has one + # TODO: transform to int/float depending on format spec + # TODO: send to float/int 's __format__ method + # their methods should stringify as hex/bin/oct etc. + res += str(item) + + +# ===-----------------------------------------------------------------------===# +# Utils +# ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index ff6ada51d1..0ea7685fe4 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -20,17 +20,18 @@ from utils import IndexList ``` """ +from collections.string import _calc_initial_buffer_size from sys import bitwidthof + from builtin.dtype import _int_type_of_width, _uint_type_of_width from builtin.io import _get_dtype_printf_format, _snprintf -from collections.string import _calc_initial_buffer_size from . import unroll from .static_tuple import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -47,10 +48,10 @@ fn _reduce_and_fn(a: Bool, b: Bool) -> Bool: return a and b -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer and Bool Tuple Utilities: # Utilities to operate on tuples of integers or tuples of bools. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -146,9 +147,9 @@ fn _bool_tuple_reduce[ return c -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # IndexList: -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _type_of_width[bitwidth: Int, unsigned: Bool]() -> DType: @@ -403,7 +404,7 @@ struct IndexList[ return int(self.data[idx]) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Int): + fn __setitem__[index: Int](mut self, val: Int): """Sets an element in the tuple at the given static index. Parameters: @@ -415,7 +416,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self._int_type): + fn __setitem__[index: Int](mut self, val: Self._int_type): """Sets an element in the tuple at the given static index. Parameters: @@ -427,7 +428,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Int): + fn __setitem__(mut self, idx: Int, val: Int): """Sets an element in the tuple at the given index. Args: @@ -453,9 +454,10 @@ struct IndexList[ @always_inline("nodebug") fn canonicalize( self, - ) -> IndexList[ - size, element_bitwidth = bitwidthof[Int](), unsigned=False - ] as result: + out result: IndexList[ + size, element_bitwidth = bitwidthof[Int](), unsigned=False + ], + ): """Canonicalizes the IndexList. Returns: @@ -754,7 +756,7 @@ struct IndexList[ return buf^ @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this int tuple to the provided Writer. @@ -771,11 +773,14 @@ struct IndexList[ @always_inline fn cast[ type: DType - ](self) -> IndexList[ - size, - element_bitwidth = bitwidthof[type](), - unsigned = _is_unsigned[type](), - ] as result: + ]( + self, + out result: IndexList[ + size, + element_bitwidth = bitwidthof[type](), + unsigned = _is_unsigned[type](), + ], + ): """Casts to the target DType. Parameters: @@ -802,9 +807,12 @@ struct IndexList[ *, element_bitwidth: Int = Self.element_bitwidth, unsigned: Bool = Self.unsigned, - ](self) -> IndexList[ - size, element_bitwidth=element_bitwidth, unsigned=unsigned - ] as result: + ]( + self, + out result: IndexList[ + size, element_bitwidth=element_bitwidth, unsigned=unsigned + ], + ): """Casts to the target DType. Parameters: @@ -827,18 +835,21 @@ struct IndexList[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Factory functions for creating index. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn Index[ T0: Intable, //, *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -858,9 +869,12 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -883,9 +897,13 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -907,9 +925,13 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt, y: UInt) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + y: UInt, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -934,9 +956,14 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2) -> IndexList[ - 3, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + out result: IndexList[ + 3, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 3-D Index from the given values. Parameters: @@ -966,9 +993,15 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3) -> IndexList[ - 4, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + out result: IndexList[ + 4, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 4-D Index from the given values. Parameters: @@ -1001,9 +1034,16 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3, v: T4) -> IndexList[ - 5, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + v: T4, + out result: IndexList[ + 5, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 5-D Index from the given values. Parameters: @@ -1028,9 +1068,9 @@ fn Index[ return __type_of(result)(int(x), int(y), int(z), int(w), int(v)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 3f8d5d52f0..8c6cfb3166 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -15,18 +15,17 @@ avoids heap allocations for short strings. """ -from collections import InlineArray +from collections import InlineArray, Optional from os import abort -from collections import Optional from sys import sizeof -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span from utils import StringSlice, Variant -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -104,7 +103,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral): + fn __iadd__(mut self, literal: StringLiteral): """Appends another string to this string. Args: @@ -112,7 +111,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(StringRef(literal)) - fn __iadd__(inout self, string: String): + fn __iadd__(mut self, string: String): """Appends another string to this string. Args: @@ -120,7 +119,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(string.as_string_slice()) - fn __iadd__(inout self, str_slice: StringSlice[_]): + fn __iadd__(mut self, str_slice: StringSlice[_]): """Appends another string to this string. Args: @@ -297,9 +296,9 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __FixedString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -396,7 +395,7 @@ struct _FixedString[CAP: Int]( # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral) raises: + fn __iadd__(mut self, literal: StringLiteral) raises: """Appends another string to this string. Args: @@ -404,7 +403,7 @@ struct _FixedString[CAP: Int]( """ self.__iadd__(literal.as_string_slice()) - fn __iadd__(inout self, string: String) raises: + fn __iadd__(mut self, string: String) raises: """Appends another string to this string. Args: @@ -413,7 +412,7 @@ struct _FixedString[CAP: Int]( self.__iadd__(string.as_string_slice()) @always_inline - fn __iadd__(inout self, str_slice: StringSlice[_]) raises: + fn __iadd__(mut self, str_slice: StringSlice[_]) raises: """Appends another string to this string. Args: @@ -439,7 +438,7 @@ struct _FixedString[CAP: Int]( # ===------------------------------------------------------------------=== # fn _iadd_non_raising( - inout self, + mut self, bytes: Span[Byte, _], ) -> Optional[Error]: var total_len = len(self) + len(bytes) @@ -468,11 +467,11 @@ struct _FixedString[CAP: Int]( return None - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write_bytes(self.as_bytes()) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a byte span to this String. @@ -482,7 +481,7 @@ struct _FixedString[CAP: Int]( """ _ = self._iadd_non_raising(bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 9737dc2178..6459952b4e 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -11,16 +11,16 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer from os import Atomic -from time import sleep from sys import external_call from sys.ffi import OpaquePointer +from time import sleep +from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # SpinWaiter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct SpinWaiter: @@ -65,7 +65,7 @@ struct BlockingSpinLock: self.counter = Atomic[DType.int64](Self.UNLOCKED) - fn lock(inout self, owner: Int): + fn lock(mut self, owner: Int): """Acquires the lock. Args: @@ -79,7 +79,7 @@ struct BlockingSpinLock: waiter.wait() expected = Self.UNLOCKED - fn unlock(inout self, owner: Int) -> Bool: + fn unlock(mut self, owner: Int) -> Bool: """Releases the lock. Args: @@ -108,7 +108,7 @@ struct BlockingScopedLock: """The underlying lock instance.""" fn __init__( - inout self, + mut self, lock: UnsafePointer[Self.LockType], ): """Primary constructor. @@ -120,8 +120,8 @@ struct BlockingScopedLock: self.lock = lock fn __init__( - inout self, - inout lock: Self.LockType, + mut self, + mut lock: Self.LockType, ): """Secondary constructor. @@ -132,14 +132,14 @@ struct BlockingScopedLock: self.lock = UnsafePointer.address_of(lock) @no_inline - fn __enter__(inout self): + fn __enter__(mut self): """Acquire the lock on entry. This is done by setting the owner of the lock to own address.""" var address = UnsafePointer[Self].address_of(self) self.lock[].lock(int(address)) @no_inline - fn __exit__(inout self): + fn __exit__(mut self): """Release the lock on exit. Reset the address on the underlying lock.""" var address = UnsafePointer[Self].address_of(self) diff --git a/stdlib/src/utils/loop.mojo b/stdlib/src/utils/loop.mojo index efef81a73f..1d61112379 100644 --- a/stdlib/src/utils/loop.mojo +++ b/stdlib/src/utils/loop.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from builtin.range import _ZeroStartingRange, _SequentialRange, _StridedRange +from builtin.range import _SequentialRange, _StridedRange, _ZeroStartingRange """Implements higher-order functions. @@ -23,9 +23,9 @@ from utils import unroll """ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -51,9 +51,9 @@ fn unroll[ func[i, j]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -84,9 +84,9 @@ fn unroll[ func[i, j, k]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _ZeroStartingRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -125,9 +125,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _SequentialRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, @@ -164,9 +164,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _StridedRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 05db78d5f5..e1ec498345 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -67,9 +67,9 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 3 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 2 elif type is DType.float16: return 10 @@ -84,48 +84,25 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") fn max_exponent() -> IntLiteral: - """Returns the max exponent of a floating point type, taking into - account special reserved cases such infinity and nan. + """Returns the max exponent of a floating point type without accounting + for inf representations. This is not + the maximum representable exponent, which is generally equal to + the exponent_bias. Returns: The max exponent. """ @parameter - if type is DType.float8e4m3: - return 7 - elif type is DType.float8e5m2: - return 15 - elif type is DType.float16: - return 15 - elif type is DType.float32 or type is DType.bfloat16: - return 127 - else: - constrained[type is DType.float64, "unsupported float type"]() - return 1023 - - @staticmethod - @always_inline("nodebug") - fn min_exponent() -> IntLiteral: - """Returns the min exponent of a floating point type, taking into - account special reserved cases such as infinity and nan. - - Returns: - The min exponent. - """ - - @parameter - if type is DType.float8e4m3: - return -6 - elif type is DType.float8e5m2: - return -14 - elif type is DType.float16: - return -14 - elif type is DType.float32 or type is DType.bfloat16: - return -126 + if type in (DType.float8e4m3, DType.float8e4m3fnuz): + return 8 + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): + return 16 + elif type in (DType.bfloat16, DType.float32): + return 128 else: constrained[type is DType.float64, "unsupported float type"]() - return -1022 + return 1024 @staticmethod @always_inline("nodebug") @@ -137,13 +114,11 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 4 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): return 5 - elif type is DType.float16: - return 5 - elif type is DType.float32 or type is DType.bfloat16: + elif type in (DType.float32, DType.bfloat16): return 8 else: constrained[type is DType.float64, "unsupported float type"]() @@ -167,7 +142,12 @@ struct FPUtils[ Returns: The exponent bias. """ - return Self.max_exponent() + + @parameter + if type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz): + return Self.max_exponent() + else: + return Self.max_exponent() - 1 @staticmethod @always_inline @@ -313,14 +293,15 @@ struct FPUtils[ @staticmethod @always_inline - fn get_exponent_without_bias(value: Scalar[type]) -> Int: - """Returns the exponent bits of the floating-point value. + fn get_exponent_biased(value: Scalar[type]) -> Int: + """Returns the biased exponent of the floating-point value as an Int, + this is how the value is stored before subtracting the exponent bias. Args: value: The floating-point value. Returns: - Returns the exponent bits. + The biased exponent as an Int. """ return int( Self.bitcast_to_uint(value) >> Self.mantissa_width() @@ -537,6 +518,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -544,6 +534,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -600,7 +599,10 @@ fn isnan[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False alias int_dtype = _integral_type_of[type]() @@ -654,6 +656,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -661,6 +672,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -721,6 +741,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -728,6 +757,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -801,7 +839,9 @@ fn max_finite[type: DType]() -> Scalar[type]: return 18446744073709551615 elif type is DType.float8e4m3: return 448 - elif type is DType.float8e5m2: + elif type is DType.float8e4m3fnuz: + return 240 + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 57344 elif type is DType.float16: return 65504 @@ -932,9 +972,11 @@ fn isinf[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False - elif type is DType.float8e5m2: # For the float8e5m2 both 7C and FC are infinity. alias int_dtype = _integral_type_of[type]() @@ -1001,7 +1043,9 @@ fn get_accum_type[type: DType]() -> DType: DType.float32 if type is a half-precision float, type otherwise. """ - return DType.float32 if type.is_half_float() else type + return DType.float32 if ( + type.is_half_float() or type in (DType.float8e4m3, DType.float8e5m2) + ) else type # ===----------------------------------------------------------------------=== # @@ -1085,10 +1129,11 @@ fn ulp[ constrained[type.is_floating_point(), "the type must be floating point"]() + alias inf_val = SIMD[type, simd_width](inf[type]()) + var nan_mask = isnan(x) var xabs = abs(x) var inf_mask = isinf(xabs) - alias inf_val = SIMD[type, simd_width](inf[type]()) var x2 = nextafter(xabs, inf_val) var x2_inf_mask = isinf(x2) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 9a14c36e24..0788b54b43 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -21,9 +21,9 @@ from utils import StaticTuple from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -93,9 +93,9 @@ fn _create_array[ return array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _static_tuple_construction_checks[size: Int](): @@ -218,20 +218,15 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): debug_assert( int(idx.__mlir_index__()) < size, "index must be within bounds" ) - # Copy the array so we can get its address, because we can't take the - # address of 'self' in a non-mutating method. - var arrayCopy = self.array var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer.address_of(arrayCopy).address, idx.__mlir_index__() + UnsafePointer.address_of(self.array).address, idx.__mlir_index__() ) - var result = UnsafePointer(ptr)[] - _ = arrayCopy - return result + return UnsafePointer(ptr)[] @always_inline("nodebug") fn __setitem__[ IntLike: IntLike, // - ](inout self, idx: IntLike, val: Self.element_type): + ](mut self, idx: IntLike, val: Self.element_type): """Stores a single value into the tuple at the specified dynamic index. Parameters: @@ -252,7 +247,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): self = tmp @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self.element_type): + fn __setitem__[index: Int](mut self, val: Self.element_type): """Stores a single value into the tuple at the specified index. Parameters: @@ -262,6 +257,4 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): val: The value to store. """ constrained[index < size]() - var tmp = self - _set_array_elem[index, size, Self.element_type](val, tmp.array) - self = tmp + _set_array_elem[index, size, Self.element_type](val, self.array) diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 62ec51878b..a61ed5d13a 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -10,7 +10,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # - """Implements the StringSlice type. You can import these APIs from the `utils.string_slice` module. @@ -22,14 +21,17 @@ from utils import StringSlice ``` """ -from bit import count_leading_zeros -from utils import Span -from collections.string import _isspace, _atol, _atof from collections import List, Optional -from memory import memcmp, UnsafePointer, memcpy -from sys import simdwidthof, bitwidthof +from collections.string import _atof, _atol, _isspace +from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely + +from bit import count_leading_zeros +from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained + +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry + from ._utf8_validation import _is_valid_utf8 alias StaticString = StringSlice[StaticConstantOrigin] @@ -77,13 +79,9 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: debug_assert( (b & 0b1100_0000) != 0b1000_0000, - ( - "Function `_utf8_first_byte_sequence_length()` does not work" - " correctly if given a continuation byte." - ), + "Function does not work correctly if given a continuation byte.", ) - var flipped = ~b - return int(count_leading_zeros(flipped) + (flipped >> 7)) + return int(count_leading_zeros(~b)) + int(b < 0b1000_0000) fn _shift_unicode_to_utf8(ptr: UnsafePointer[UInt8], c: Int, num_bytes: Int): @@ -171,7 +169,7 @@ fn _memrmem[ @value struct _StringSliceIter[ is_mutable: Bool, //, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for `StringSlice` over unicode characters. @@ -183,46 +181,28 @@ struct _StringSliceIter[ """ var index: Int - var continuation_bytes: Int - var ptr: UnsafePointer[UInt8] + var ptr: UnsafePointer[Byte] var length: Int - fn __init__( - inout self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int - ): + fn __init__(mut self, *, unsafe_pointer: UnsafePointer[Byte], length: Int): self.index = 0 if forward else length self.ptr = unsafe_pointer self.length = length - alias S = Span[Byte, StaticConstantOrigin] - var s = S(ptr=self.ptr, length=self.length) - self.continuation_bytes = _count_utf8_continuation_bytes(s) fn __iter__(self) -> Self: return self - fn __next__(inout self) -> StringSlice[origin]: + fn __next__(mut self) -> StringSlice[origin]: @parameter if forward: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index]) - if byte_type != 0: - byte_len = int(byte_type) - self.continuation_bytes -= byte_len - 1 + byte_len = _utf8_first_byte_sequence_length(self.ptr[self.index]) + i = self.index self.index += byte_len - return StringSlice[origin]( - ptr=self.ptr + (self.index - byte_len), length=byte_len - ) + return StringSlice[origin](ptr=self.ptr + i, length=byte_len) else: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index - 1]) - if byte_type != 0: - while byte_type == 1: - byte_len += 1 - var b = self.ptr[self.index - byte_len] - byte_type = _utf8_byte_type(b) - self.continuation_bytes -= byte_len - 1 + byte_len = 1 + while _utf8_byte_type(self.ptr[self.index - byte_len]) == 1: + byte_len += 1 self.index -= byte_len return StringSlice[origin]( ptr=self.ptr + self.index, length=byte_len @@ -230,19 +210,31 @@ struct _StringSliceIter[ @always_inline fn __has_next__(self) -> Bool: - return self.__len__() > 0 + @parameter + if forward: + return self.index < self.length + else: + return self.index > 0 fn __len__(self) -> Int: @parameter if forward: - return self.length - self.index - self.continuation_bytes + remaining = self.length - self.index + cont = _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin]( + ptr=self.ptr + self.index, length=remaining + ) + ) + return remaining - cont else: - return self.index - self.continuation_bytes + return self.index - _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=self.ptr, length=self.index) + ) @value @register_passable("trivial") -struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( Stringable, Sized, Writable, @@ -353,7 +345,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( @implicit fn __init__[ O: ImmutableOrigin, // - ](inout self: StringSlice[O], ref [O]value: String): + ](mut self: StringSlice[O], ref [O]value: String): """Construct an immutable StringSlice. Parameters: @@ -392,7 +384,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( var s = S(ptr=self.unsafe_ptr(), length=b_len) return b_len - _count_utf8_continuation_bytes(s) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string slice to the provided `Writer`. Parameters: @@ -623,13 +615,33 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( # ===------------------------------------------------------------------===# @always_inline - fn strip(self) -> StringSlice[origin]: - """Gets a StringRef with leading and trailing whitespaces removed. - This only takes ASCII whitespace into account: - `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. + fn strip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading and trailing characters + removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. Returns: - A StringRef with leading and trailing whitespaces removed. + A copy of the string with no leading or trailing characters. + + Examples: + + ```mojo + print("himojohi".strip("hi")) # "mojo" + ``` + . + """ + + return self.lstrip(chars).rstrip(chars) + + @always_inline + fn strip(self) -> Self: + """Return a copy of the string with leading and trailing whitespaces + removed. + + Returns: + A copy of the string with no leading or trailing whitespaces. Examples: @@ -638,15 +650,103 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( ``` . """ - # FIXME: this can already do full isspace support with iterator - var start: Int = 0 - var end: Int = len(self) - var ptr = self.unsafe_ptr() - while start < end and _isspace(ptr[start]): - start += 1 - while end > start and _isspace(ptr[end - 1]): - end -= 1 - return StringSlice[origin](ptr=ptr + start, length=end - start) + return self.lstrip().rstrip() + + @always_inline + fn rstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with trailing characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no trailing characters. + + Examples: + + ```mojo + print("mojohi".strip("hi")) # "mojo" + ``` + . + """ + + var r_idx = self.byte_length() + while r_idx > 0 and self[r_idx - 1] in chars: + r_idx -= 1 + + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn rstrip(self) -> Self: + """Return a copy of the string with trailing whitespaces removed. + + Returns: + A copy of the string with no trailing whitespaces. + + Examples: + + ```mojo + print("mojo ".strip()) # "mojo" + ``` + . + """ + var r_idx = self.byte_length() + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self.__reversed__(): + # if not s.isspace(): + # break + # r_idx -= 1 + while r_idx > 0 and _isspace(self.as_bytes()[r_idx - 1]): + r_idx -= 1 + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn lstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no leading characters. + + Examples: + + ```mojo + print("himojo".strip("hi")) # "mojo" + ``` + . + """ + + var l_idx = 0 + while l_idx < self.byte_length() and self[l_idx] in chars: + l_idx += 1 + + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) + + @always_inline + fn lstrip(self) -> Self: + """Return a copy of the string with leading whitespaces removed. + + Returns: + A copy of the string with no leading whitespaces. + + Examples: + + ```mojo + print(" mojo".strip()) # "mojo" + ``` + . + """ + var l_idx = 0 + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self: + # if not s.isspace(): + # break + # l_idx += 1 + while l_idx < self.byte_length() and _isspace(self.as_bytes()[l_idx]): + l_idx += 1 + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) @always_inline fn as_bytes(self) -> Span[Byte, origin]: @@ -1017,33 +1117,9 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( return output^ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# - - -trait Stringlike: - """Trait intended to be used only with `String`, `StringLiteral` and - `StringSlice`.""" - - fn byte_length(self) -> Int: - """Get the string length in bytes. - - Returns: - The length of this string in bytes. - - Notes: - This does not include the trailing null terminator in the count. - """ - ... - - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: - """Get raw pointer to the underlying data. - - Returns: - The raw pointer to the data. - """ - ... +# ===-----------------------------------------------------------------------===# fn __iter__(ref [_]self) -> _StringSliceIter[__origin_of(self)]: """Iterate over the string unicode characters. @@ -1131,613 +1207,3 @@ fn _to_string_list[ return len(v) return _to_string_list[items.T, len_fn, unsafe_ptr_fn](items) - - -# ===----------------------------------------------------------------------===# -# Format method structures -# ===----------------------------------------------------------------------===# - - -trait _CurlyEntryFormattable(Stringable, Representable): - """This trait is used by the `format()` method to support format specifiers. - Currently, it is a composition of both `Stringable` and `Representable` - traits i.e. a type to be formatted must implement both. In the future this - will be less constrained. - """ - - ... - - -@value -struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): - """The struct that handles `Stringlike` formatting by curly braces entries. - This is internal for the types: `String`, `StringLiteral` and `StringSlice`. - """ - - var first_curly: Int - """The index of an opening brace around a substitution field.""" - var last_curly: Int - """The index of a closing brace around a substitution field.""" - # TODO: ord("a") conversion flag not supported yet - var conversion_flag: UInt8 - """The type of conversion for the entry: {ord("s"), ord("r")}.""" - var format_spec: Optional[_FormatSpec] - """The format specifier.""" - # TODO: ord("a") conversion flag not supported yet - alias supported_conversion_flags = SIMD[DType.uint8, 2](ord("s"), ord("r")) - """Currently supported conversion flags: `__str__` and `__repr__`.""" - alias _FieldVariantType = Variant[String, Int, NoneType, Bool] - """Purpose of the `Variant` `Self.field`: - - - `Int` for manual indexing: (value field contains `0`). - - `NoneType` for automatic indexing: (value field contains `None`). - - `String` for **kwargs indexing: (value field contains `foo`). - - `Bool` for escaped curlies: (value field contains False for `{` or True - for `}`). - """ - var field: Self._FieldVariantType - """Store the substitution field. See `Self._FieldVariantType` docstrings for - more details.""" - alias _args_t = VariadicPack[element_trait=_CurlyEntryFormattable, *_] - """Args types that are formattable by curly entry.""" - - fn __init__(out self, *, other: Self): - self.first_curly = other.first_curly - self.last_curly = other.last_curly - self.conversion_flag = other.conversion_flag - self.field = Self._FieldVariantType(other=other.field) - self.format_spec = other.format_spec - - fn __init__( - inout self, - first_curly: Int, - last_curly: Int, - field: Self._FieldVariantType, - conversion_flag: UInt8 = 0, - format_spec: Optional[_FormatSpec] = None, - ): - self.first_curly = first_curly - self.last_curly = last_curly - self.field = field - self.conversion_flag = conversion_flag - self.format_spec = format_spec - - @always_inline - fn is_escaped_brace(ref self) -> Bool: - return self.field.isa[Bool]() - - @always_inline - fn is_kwargs_field(ref self) -> Bool: - return self.field.isa[String]() - - @always_inline - fn is_automatic_indexing(ref self) -> Bool: - return self.field.isa[NoneType]() - - @always_inline - fn is_manual_indexing(ref self) -> Bool: - return self.field.isa[Int]() - - @staticmethod - fn format[T: Stringlike](fmt_src: T, args: Self._args_t) raises -> String: - alias len_pos_args = __type_of(args).__len__() - entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) - var fmt_len = fmt_src.byte_length() - var buf = String._buffer_type(capacity=fmt_len + size_estimation) - buf.size = 1 - buf.unsafe_set(0, 0) - var res = String(buf^) - var offset = 0 - var ptr = fmt_src.unsafe_ptr() - alias S = StringSlice[StaticConstantOrigin] - - @always_inline("nodebug") - fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: - return S(ptr=p + start, length=end - start) - - var auto_arg_index = 0 - for e in entries: - debug_assert(offset < fmt_len, "offset >= fmt_src.byte_length()") - res += _build_slice(ptr, offset, e[].first_curly) - e[]._format_entry[len_pos_args](res, args, auto_arg_index) - offset = e[].last_curly + 1 - - res += _build_slice(ptr, offset, fmt_len) - return res^ - - @staticmethod - fn _create_entries[ - T: Stringlike - ](fmt_src: T, len_pos_args: Int) raises -> (List[Self], Int): - """Returns a list of entries and its total estimated entry byte width. - """ - var manual_indexing_count = 0 - var automatic_indexing_count = 0 - var raised_manual_index = Optional[Int](None) - var raised_automatic_index = Optional[Int](None) - var raised_kwarg_field = Optional[String](None) - alias `}` = UInt8(ord("}")) - alias `{` = UInt8(ord("{")) - alias l_err = "there is a single curly { left unclosed or unescaped" - alias r_err = "there is a single curly } left unclosed or unescaped" - - var entries = List[Self]() - var start = Optional[Int](None) - var skip_next = False - var fmt_ptr = fmt_src.unsafe_ptr() - var fmt_len = fmt_src.byte_length() - var total_estimated_entry_byte_width = 0 - - for i in range(fmt_len): - if skip_next: - skip_next = False - continue - if fmt_ptr[i] == `{`: - if not start: - start = i - continue - if i - start.value() != 1: - raise Error(l_err) - # python escapes double curlies - entries.append(Self(start.value(), i, field=False)) - start = None - continue - elif fmt_ptr[i] == `}`: - if not start and (i + 1) < fmt_len: - # python escapes double curlies - if fmt_ptr[i + 1] == `}`: - entries.append(Self(i, i + 1, field=True)) - total_estimated_entry_byte_width += 2 - skip_next = True - continue - elif not start: # if it is not an escaped one, it is an error - raise Error(r_err) - - var start_value = start.value() - var current_entry = Self(start_value, i, field=NoneType()) - - if i - start_value != 1: - if current_entry._handle_field_and_break( - fmt_src, - len_pos_args, - i, - start_value, - automatic_indexing_count, - raised_automatic_index, - manual_indexing_count, - raised_manual_index, - raised_kwarg_field, - total_estimated_entry_byte_width, - ): - break - else: # automatic indexing - if automatic_indexing_count >= len_pos_args: - raised_automatic_index = automatic_indexing_count - break - automatic_indexing_count += 1 - total_estimated_entry_byte_width += 8 # guessing - entries.append(current_entry^) - start = None - - if raised_automatic_index: - raise Error("Automatic indexing require more args in *args") - elif raised_kwarg_field: - var val = raised_kwarg_field.value() - raise Error("Index " + val + " not in kwargs") - elif manual_indexing_count and automatic_indexing_count: - raise Error("Cannot both use manual and automatic indexing") - elif raised_manual_index: - var val = str(raised_manual_index.value()) - raise Error("Index " + val + " not in *args") - elif start: - raise Error(l_err) - return entries^, total_estimated_entry_byte_width - - fn _handle_field_and_break[ - T: Stringlike - ]( - inout self, - fmt_src: T, - len_pos_args: Int, - i: Int, - start_value: Int, - inout automatic_indexing_count: Int, - inout raised_automatic_index: Optional[Int], - inout manual_indexing_count: Int, - inout raised_manual_index: Optional[Int], - inout raised_kwarg_field: Optional[String], - inout total_estimated_entry_byte_width: Int, - ) raises -> Bool: - alias S = StringSlice[StaticConstantOrigin] - - @always_inline("nodebug") - fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: - return S(ptr=p + start, length=end - start) - - var field = _build_slice(fmt_src.unsafe_ptr(), start_value + 1, i) - var field_ptr = field.unsafe_ptr() - var field_len = i - (start_value + 1) - var exclamation_index = -1 - var idx = 0 - while idx < field_len: - if field_ptr[idx] == ord("!"): - exclamation_index = idx - break - idx += 1 - var new_idx = exclamation_index + 1 - if exclamation_index != -1: - if new_idx == field_len: - raise Error("Empty conversion flag.") - var conversion_flag = field_ptr[new_idx] - if field_len - new_idx > 1 or ( - conversion_flag not in Self.supported_conversion_flags - ): - var f = String(_build_slice(field_ptr, new_idx, field_len)) - _ = field - raise Error('Conversion flag "' + f + '" not recognised.') - self.conversion_flag = conversion_flag - field = _build_slice(field_ptr, 0, exclamation_index) - else: - new_idx += 1 - - var extra = int(new_idx < field_len) - var fmt_field = _build_slice(field_ptr, new_idx + extra, field_len) - self.format_spec = _FormatSpec.parse(fmt_field) - var w = int(self.format_spec.value().width) if self.format_spec else 0 - # fully guessing the byte width here to be at least 8 bytes per entry - # minus the length of the whole format specification - total_estimated_entry_byte_width += 8 * int(w > 0) + w - (field_len + 2) - - if field.byte_length() == 0: - # an empty field, so it's automatic indexing - if automatic_indexing_count >= len_pos_args: - raised_automatic_index = automatic_indexing_count - return True - automatic_indexing_count += 1 - else: - try: - # field is a number for manual indexing: - var number = int(field) - self.field = number - if number >= len_pos_args or number < 0: - raised_manual_index = number - return True - manual_indexing_count += 1 - except e: - alias unexp = "Not the expected error from atol" - debug_assert("not convertible to integer" in str(e), unexp) - # field is a keyword for **kwargs: - var f = str(field) - self.field = f - raised_kwarg_field = f - return True - return False - - fn _format_entry[ - len_pos_args: Int - ](self, inout res: String, args: Self._args_t, inout auto_idx: Int) raises: - # TODO(#3403 and/or #3252): this function should be able to use - # Formatter syntax when the type implements it, since it will give great - # performance benefits. This also needs to be able to check if the given - # args[i] conforms to the trait needed by the conversion_flag to avoid - # needing to constraint that every type needs to conform to every trait. - alias `r` = UInt8(ord("r")) - alias `s` = UInt8(ord("s")) - # alias `a` = UInt8(ord("a")) # TODO - - @parameter - fn _format(idx: Int) raises: - @parameter - for i in range(len_pos_args): - if i == idx: - var type_impls_repr = True # TODO - var type_impls_str = True # TODO - var type_impls_formatter_repr = True # TODO - var type_impls_formatter_str = True # TODO - var flag = self.conversion_flag - var empty = flag == 0 and not self.format_spec - - var data: String - if empty and type_impls_formatter_str: - data = str(args[i]) # TODO: use writer and return - elif empty and type_impls_str: - data = str(args[i]) - elif flag == `s` and type_impls_formatter_str: - if empty: - # TODO: use writer and return - pass - data = str(args[i]) - elif flag == `s` and type_impls_str: - data = str(args[i]) - elif flag == `r` and type_impls_formatter_repr: - if empty: - # TODO: use writer and return - pass - data = repr(args[i]) - elif flag == `r` and type_impls_repr: - data = repr(args[i]) - elif self.format_spec: - self.format_spec.value().stringify(res, args[i]) - return - else: - alias argnum = "Argument number: " - alias does_not = " does not implement the trait " - alias needed = "needed for conversion_flag: " - var flg = String(List[UInt8](flag, 0)) - raise Error(argnum + str(i) + does_not + needed + flg) - - if self.format_spec: - self.format_spec.value().format_string(res, data) - else: - res += data - - if self.is_escaped_brace(): - res += "}" if self.field[Bool] else "{" - elif self.is_manual_indexing(): - _format(self.field[Int]) - elif self.is_automatic_indexing(): - _format(auto_idx) - auto_idx += 1 - - -@value -@register_passable("trivial") -struct _FormatSpec: - """Store every field of the format specifier in a byte (e.g., ord("+") for - sign). It is stored in a byte because every [format specifier]( - https://docs.python.org/3/library/string.html#formatspec) is an ASCII - character. - """ - - var fill: UInt8 - """If a valid align value is specified, it can be preceded by a fill - character that can be any character and defaults to a space if omitted. - """ - var align: UInt8 - """The meaning of the various alignment options is as follows: - - | Option | Meaning| - |:------:|:-------| - |'<' | Forces the field to be left-aligned within the available space \ - (this is the default for most objects).| - |'>' | Forces the field to be right-aligned within the available space \ - (this is the default for numbers).| - |'=' | Forces the padding to be placed after the sign (if any) but before \ - the digits. This is used for printing fields in the form `+000000120`. This\ - alignment option is only valid for numeric types. It becomes the default\ - for numbers when `0` immediately precedes the field width.| - |'^' | Forces the field to be centered within the available space.| - """ - var sign: UInt8 - """The sign option is only valid for number types, and can be one of the - following: - - | Option | Meaning| - |:------:|:-------| - |'+' | indicates that a sign should be used for both positive as well as\ - negative numbers.| - |'-' | indicates that a sign should be used only for negative numbers (this\ - is the default behavior).| - |space | indicates that a leading space should be used on positive numbers,\ - and a minus sign on negative numbers.| - """ - var coerce_z: Bool - """The 'z' option coerces negative zero floating-point values to positive - zero after rounding to the format precision. This option is only valid for - floating-point presentation types. - """ - var alternate_form: Bool - """The alternate form is defined differently for different types. This - option is only valid for types that implement the trait `# TODO: define - trait`. For integers, when binary, octal, or hexadecimal output is used, - this option adds the respective prefix '0b', '0o', '0x', or '0X' to the - output value. For float and complex the alternate form causes the result of - the conversion to always contain a decimal-point character, even if no - digits follow it. - """ - var width: UInt8 - """A decimal integer defining the minimum total field width, including any - prefixes, separators, and other formatting characters. If not specified, - then the field width will be determined by the content. When no explicit - alignment is given, preceding the width field by a zero ('0') character - enables sign-aware zero-padding for numeric types. This is equivalent to a - fill character of '0' with an alignment type of '='. - """ - var grouping_option: UInt8 - """The ',' option signals the use of a comma for a thousands separator. For - a locale aware separator, use the 'n' integer presentation type instead. The - '_' option signals the use of an underscore for a thousands separator for - floating-point presentation types and for integer presentation type 'd'. For - integer presentation types 'b', 'o', 'x', and 'X', underscores will be - inserted every 4 digits. For other presentation types, specifying this - option is an error. - """ - var precision: UInt8 - """The precision is a decimal integer indicating how many digits should be - displayed after the decimal point for presentation types 'f' and 'F', or - before and after the decimal point for presentation types 'g' or 'G'. For - string presentation types the field indicates the maximum field size - in - other words, how many characters will be used from the field content. The - precision is not allowed for integer presentation types. - """ - var type: UInt8 - """Determines how the data should be presented. - - The available integer presentation types are: - - | Option | Meaning| - |:------:|:-------| - |'b' |Binary format. Outputs the number in base 2.| - |'c' |Character. Converts the integer to the corresponding unicode\ - character before printing.| - |'d' |Decimal Integer. Outputs the number in base 10.| - |'o' |Octal format. Outputs the number in base 8.| - |'x' |Hex format. Outputs the number in base 16, using lower-case letters\ - for the digits above 9.| - |'X' |Hex format. Outputs the number in base 16, using upper-case letters\ - for the digits above 9. In case '#' is specified, the prefix '0x' will be\ - upper-cased to '0X' as well.| - |'n' |Number. This is the same as 'd', except that it uses the current\ - locale setting to insert the appropriate number separator characters.| - |None | The same as 'd'.| - - In addition to the above presentation types, integers can be formatted with - the floating-point presentation types listed below (except 'n' and None). - When doing so, float() is used to convert the integer to a floating-point - number before formatting. - - The available presentation types for float and Decimal values are: - - | Option | Meaning| - |:------:|:-------| - |'e' |Scientific notation. For a given precision p, formats the number in\ - scientific notation with the letter `e` separating the coefficient from the\ - exponent. The coefficient has one digit before and p digits after the\ - decimal point, for a total of p + 1 significant digits. With no precision\ - given, uses a precision of 6 digits after the decimal point for float, and\ - shows all coefficient digits for Decimal. If no digits follow the decimal\ - point, the decimal point is also removed unless the # option is used.| - |'E' |Scientific notation. Same as 'e' except it uses an upper case `E` as\ - the separator character.| - |'f' |Fixed-point notation. For a given precision p, formats the number as\ - a decimal number with exactly p digits following the decimal point. With no\ - precision given, uses a precision of 6 digits after the decimal point for\ - float, and uses a precision large enough to show all coefficient digits for\ - Decimal. If no digits follow the decimal point, the decimal point is also\ - removed unless the '#' option is used.| - |'F' |Fixed-point notation. Same as 'f', but converts nan to NAN and inf to\ - INF.| - |'g' |General format. For a given precision p >= 1, this rounds the number\ - to p significant digits and then formats the result in either fixed-point\ - format or in scientific notation, depending on its magnitude. A precision\ - of 0 is treated as equivalent to a precision of 1.\ - The precise rules are as follows: suppose that the result formatted with\ - presentation type 'e' and precision p-1 would have exponent exp. Then, if\ - m <= exp < p, where m is -4 for floats and -6 for Decimals, the number is\ - formatted with presentation type 'f' and precision p-1-exp. Otherwise, the\ - number is formatted with presentation type 'e' and precision p-1. In both\ - cases insignificant trailing zeros are removed from the significand, and\ - the decimal point is also removed if there are no remaining digits\ - following it, unless the '#' option is used.\ - With no precision given, uses a precision of 6 significant digits for\ - float. For Decimal, the coefficient of the result is formed from the\ - coefficient digits of the value; scientific notation is used for values\ - smaller than 1e-6 in absolute value and values where the place value of the\ - least significant digit is larger than 1, and fixed-point notation is used\ - otherwise.\ - Positive and negative infinity, positive and negative zero, and nans, are\ - formatted as inf, -inf, 0, -0 and nan respectively, regardless of the\ - precision.| - |'G' |General format. Same as 'g' except switches to 'E' if the number gets\ - too large. The representations of infinity and NaN are uppercased, too.| - |'n' |Number. This is the same as 'g', except that it uses the current\ - locale setting to insert the appropriate number separator characters.| - |'%' |Percentage. Multiplies the number by 100 and displays in fixed ('f')\ - format, followed by a percent sign.| - |None |For float this is like the 'g' type, except that when fixed-point\ - notation is used to format the result, it always includes at least one\ - digit past the decimal point, and switches to the scientific notation when\ - exp >= p - 1. When the precision is not specified, the latter will be as\ - large as needed to represent the given value faithfully.\ - For Decimal, this is the same as either 'g' or 'G' depending on the value\ - of context.capitals for the current decimal context.\ - The overall effect is to match the output of str() as altered by the other\ - format modifiers.| - """ - - fn __init__( - inout self, - fill: UInt8 = ord(" "), - align: UInt8 = 0, - sign: UInt8 = ord("-"), - coerce_z: Bool = False, - alternate_form: Bool = False, - width: UInt8 = 0, - grouping_option: UInt8 = 0, - precision: UInt8 = 0, - type: UInt8 = 0, - ): - """Construct a FormatSpec instance. - - Args: - fill: Defaults to space. - align: Defaults to `0` which is adjusted to the default for the arg - type. - sign: Defaults to `-`. - coerce_z: Defaults to False. - alternate_form: Defaults to False. - width: Defaults to `0` which is adjusted to the default for the arg - type. - grouping_option: Defaults to `0` which is adjusted to the default for - the arg type. - precision: Defaults to `0` which is adjusted to the default for the - arg type. - type: Defaults to `0` which is adjusted to the default for the arg - type. - """ - self.fill = fill - self.align = align - self.sign = sign - self.coerce_z = coerce_z - self.alternate_form = alternate_form - self.width = width - self.grouping_option = grouping_option - self.precision = precision - self.type = type - - @staticmethod - fn parse(fmt_str: StringSlice) -> Optional[Self]: - """Parses the format spec string. - - Args: - fmt_str: The StringSlice with the format spec. - - Returns: - An instance of FormatSpec. - """ - - alias `:` = UInt8(ord(":")) - var f_len = fmt_str.byte_length() - var f_ptr = fmt_str.unsafe_ptr() - var colon_idx = -1 - var idx = 0 - while idx < f_len: - if f_ptr[idx] == `:`: - exclamation_index = idx - break - idx += 1 - - if colon_idx == -1: - return None - - # TODO: Future implementation of format specifiers - return None - - fn stringify[ - T: _CurlyEntryFormattable - ](self, inout res: String, item: T) raises: - """Stringify a type according to its format specification. - - Args: - res: The resulting String. - item: The item to stringify. - """ - var type_implements_float = True # TODO - var type_implements_float_raising = True # TODO - var type_implements_int = True # TODO - var type_implements_int_raising = True # TODO - - # TODO: transform to int/float depending on format spec and stringify - # with hex/bin/oct etc. - res += str(item) - - fn format_string(self, inout res: String, item: String) raises: - """Transform a String according to its format specification. - - Args: - res: The resulting String. - item: The item to format. - """ - - # TODO: align, fill, etc. - res += item diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 729999be24..75e864b405 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -13,15 +13,17 @@ """Implements the StringRef class. """ -from bit import count_trailing_zeros -from builtin.dtype import _uint_type_of_width from collections.string import _atol, _isspace from hashlib._hasher import _HashableWithHasher, _Hasher -from memory import UnsafePointer, memcmp, pack_bits +from sys import simdwidthof +from sys.ffi import c_char + +from bit import count_trailing_zeros +from builtin.dtype import _uint_type_of_width +from memory import UnsafePointer, memcmp, pack_bits, Span from memory.memory import _memcmp_impl_unconstrained + from utils import StringSlice -from sys.ffi import c_char -from sys import simdwidthof # ===----------------------------------------------------------------------=== # # Utilities @@ -33,9 +35,9 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -355,7 +357,7 @@ struct StringRef( """ return hash(self.data, self.length) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -409,7 +411,7 @@ struct StringRef( return String.write("StringRef(", repr(str(self)), ")") @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this StringRef to the provided Writer. @@ -689,9 +691,9 @@ struct StringRef( ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 07dc22da63..6936a3a003 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -18,7 +18,7 @@ You can use this type to implement variant/sum types. For example: from utils import Variant alias IntOrString = Variant[Int, String] -fn to_string(inout x: IntOrString) -> String: +fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -81,7 +81,7 @@ struct Variant[*Ts: CollectionElement]( ```mojo from utils import Variant alias IntOrString = Variant[Int, String] - fn to_string(inout x: IntOrString) -> String: + fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -124,7 +124,7 @@ struct Variant[*Ts: CollectionElement]( self._impl = __mlir_attr[`#kgen.unknown : `, Self._mlir_type] @implicit - fn __init__[T: CollectionElement](inout self, owned value: T): + fn __init__[T: CollectionElement](mut self, owned value: T): """Create a variant with one of the types. Parameters: @@ -239,7 +239,7 @@ struct Variant[*Ts: CollectionElement]( return UnsafePointer(discr_ptr).bitcast[UInt8]()[] @always_inline - fn take[T: CollectionElement](inout self) -> T: + fn take[T: CollectionElement](mut self) -> T: """Take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -260,7 +260,7 @@ struct Variant[*Ts: CollectionElement]( return self.unsafe_take[T]() @always_inline - fn unsafe_take[T: CollectionElement](inout self) -> T: + fn unsafe_take[T: CollectionElement](mut self) -> T: """Unsafely take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -284,7 +284,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -311,7 +311,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn unsafe_replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Unsafely replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -337,7 +337,7 @@ struct Variant[*Ts: CollectionElement]( self.set[Tin](value^) return x^ - fn set[T: CollectionElement](inout self, owned value: T): + fn set[T: CollectionElement](mut self, owned value: T): """Set the variant value. This will call the destructor on the old value, and update the variant's diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 5cf8ba1d3e..6d68951b9b 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -13,13 +13,13 @@ """Establishes the contract between `Writer` and `Writable` types.""" from collections import InlineArray -from memory import memcpy, UnsafePointer -from utils import Span, StaticString -from sys.info import is_nvidia_gpu -from builtin.io import _printf +from sys.info import is_gpu +from memory import UnsafePointer, memcpy, Span -# ===----------------------------------------------------------------------===# +from utils import StaticString + +# ===-----------------------------------------------------------------------===# trait Writer: @@ -35,18 +35,18 @@ trait Writer: Example: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): var s: String # Writer requirement to write a Span of Bytes - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): self.s._iadd[False](bytes) # Writer requirement to take multiple args - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -54,7 +54,7 @@ trait Writer: args.each[write_arg]() # Also make it Writable to allow `print` to write the inner String - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.s) @@ -65,7 +65,7 @@ trait Writer: # Pass multiple args to the Writer. The Int and StringLiteral types # call `writer.write_bytes` in their own `write_to` implementations. - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") # Enable conversion to a String using `str(point)` @@ -89,7 +89,7 @@ trait Writer: """ @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a `Span[Byte]` to this `Writer`. @@ -99,7 +99,7 @@ trait Writer: """ ... - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -118,9 +118,9 @@ trait Writer: # To only have to implement `write_bytes` to make a type a valid Writer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Writable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Writable: @@ -134,7 +134,7 @@ trait Writable: var x: Float64 var y: Float64 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): var string = "Point" # Write a single `Span[Byte]`: writer.write_bytes(string.as_bytes()) @@ -143,7 +143,7 @@ trait Writable: ``` """ - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the string representation of this type to the provided Writer. @@ -156,15 +156,15 @@ trait Writable: ... -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn write_args[ W: Writer, *Ts: Writable ]( - inout writer: W, + mut writer: W, args: VariadicPack[_, Writable, *Ts], *, sep: StaticString = "", @@ -223,47 +223,48 @@ trait MovableWriter(Movable, Writer): ... -struct _WriteBufferHeap[W: MovableWriter, //, capacity: Int](Writer): +struct _WriteBufferHeap(Writer): var data: UnsafePointer[UInt8] var pos: Int - var writer: W - @implicit - fn __init__(out self, owned writer: W): + fn __init__(out self, size: Int): self.data = UnsafePointer[ - UInt8, - address_space = AddressSpace.GENERIC, - ].alloc(capacity) + UInt8, address_space = AddressSpace.GENERIC + ].alloc(size) self.pos = 0 - self.writer = writer^ - fn flush(inout self): - self.writer.write_bytes( - Span[Byte, ImmutableAnyOrigin](ptr=self.data, length=self.pos) - ) - self.pos = 0 + fn __del__(owned self): + self.data.free() @always_inline - fn write_bytes(inout self, bytes: Span[UInt8, _]): + fn write_bytes(mut self, bytes: Span[UInt8, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: return - # If span is too large to fit in buffer, write directly and return - if len_bytes > capacity: - self.flush() - self.writer.write_bytes(bytes) - return - # If buffer would overflow, flush writer and reset pos to 0. - if self.pos + len_bytes > capacity: - self.flush() - ptr = bytes.unsafe_ptr() - # Continue writing to buffer + var ptr = bytes.unsafe_ptr() for i in range(len_bytes): self.data[i + self.pos] = ptr[i] self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): + @parameter + fn write_arg[T: Writable](arg: T): + arg.write_to(self) + + args.each[write_arg]() + + +struct _ArgBytes(Writer): + var size: Int + + fn __init__(out self): + self.size = 0 + + fn write_bytes(mut self, bytes: Span[UInt8, _]): + self.size += len(bytes) + + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -282,7 +283,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): self.pos = 0 self.writer = writer^ - fn flush(inout self): + fn flush(mut self): self.writer.write_bytes( Span[Byte, ImmutableAnyOrigin]( ptr=self.data.unsafe_ptr(), length=self.pos @@ -290,7 +291,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): ) self.pos = 0 - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: @@ -307,7 +308,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): memcpy(self.data.unsafe_ptr() + self.pos, bytes.unsafe_ptr(), len_bytes) self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -365,11 +366,18 @@ fn write_buffered[ """ @parameter - if is_nvidia_gpu(): + if is_gpu(): # Stack space is very small on GPU due to many threads, so use heap - var buffer = _WriteBufferHeap[buffer_size](writer^) + # Count the total length of bytes to allocate only once + var arg_bytes = _ArgBytes() + write_args(arg_bytes, args, sep=sep, end=end) + + var buffer = _WriteBufferHeap(arg_bytes.size + 1) write_args(buffer, args, sep=sep, end=end) - buffer.flush() + buffer.data[buffer.pos] = 0 + writer.write_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) + ) else: var buffer = _WriteBufferStack[buffer_size](writer^) write_args(buffer, args, sep=sep, end=end) diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index dee81507d1..1f1063eee0 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -25,7 +25,9 @@ from bit import ( pop_count, rotate_bits_left, rotate_bits_right, + log2_floor, ) +from math import log2, floor from testing import assert_equal @@ -497,6 +499,30 @@ def test_rotate_bits_simd(): assert_equal(rotate_bits_right[6](Scalar[type](96)), 129) +fn _log2_floor(n: Int) -> Int: + return int(floor(log2(float(n)))) + + +def test_log2_floor(): + assert_equal(log2_floor(0), 0) + for i in range(1, 100): + assert_equal( + log2_floor(i), + _log2_floor(i), + msg="mismatching value for the input value of " + str(i), + ) + + fn _check_alias[n: Int](expected: Int) raises: + alias res = log2_floor(n) + assert_equal(res, expected) + + _check_alias[0](0) + _check_alias[1](0) + _check_alias[2](1) + _check_alias[15](3) + _check_alias[32](5) + + def main(): test_rotate_bits_int() test_rotate_bits_simd() @@ -519,3 +545,4 @@ def main(): test_pop_count() test_pop_count_simd() test_bit_not_simd() + test_log2_floor() diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/stdlib/test/builtin/test_debug_assert.mojo index 9df1b1e1f3..6d8ceb57f3 100644 --- a/stdlib/test/builtin/test_debug_assert.mojo +++ b/stdlib/test/builtin/test_debug_assert.mojo @@ -52,5 +52,5 @@ def test_debug_assert_writable(): struct WritableOnly: var message: String - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.message) diff --git a/stdlib/test/builtin/test_dtype.mojo b/stdlib/test/builtin/test_dtype.mojo index 49d509d21c..d941ab794a 100644 --- a/stdlib/test/builtin/test_dtype.mojo +++ b/stdlib/test/builtin/test_dtype.mojo @@ -13,9 +13,9 @@ # RUN: %mojo %s from collections import Set +from sys import sizeof from testing import assert_equal, assert_false, assert_true -from sys import sizeof fn test_equality() raises: diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index 7c9d3055f4..d30091958e 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -16,8 +16,8 @@ from pathlib import Path, _dir_of_current_file from sys import os_is_windows from tempfile import gettempdir -from memory import UnsafePointer +from memory import UnsafePointer from testing import assert_equal, assert_true diff --git a/stdlib/test/builtin/test_format_float.mojo b/stdlib/test/builtin/test_format_float.mojo index 1544f185ff..3bf820543d 100644 --- a/stdlib/test/builtin/test_format_float.mojo +++ b/stdlib/test/builtin/test_format_float.mojo @@ -12,10 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s +from random import random_float64 + from builtin._format_float import _write_float -from testing import assert_equal from python import Python, PythonObject -from random import random_float64 +from testing import assert_equal def test_float64(): diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index 8d898798da..9919b2f636 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -14,10 +14,9 @@ from sys.info import bitwidthof -from testing import assert_equal, assert_true, assert_false, assert_raises - -from python import PythonObject from memory import UnsafePointer +from python import PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true def test_properties(): diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 84d23a7955..9651e564b5 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true def test_add(): diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/stdlib/test/builtin/test_issue_1505.mojo index a4f9c4e14f..25f8f32e6f 100644 --- a/stdlib/test/builtin/test_issue_1505.mojo +++ b/stdlib/test/builtin/test_issue_1505.mojo @@ -15,9 +15,10 @@ from random import random_ui64 -from utils import IndexList from testing import assert_equal +from utils import IndexList + fn gen_perm() -> IndexList[64]: var result = IndexList[64]() diff --git a/stdlib/test/builtin/test_list_literal.mojo b/stdlib/test/builtin/test_list_literal.mojo index 38ae7764fe..309a831b24 100644 --- a/stdlib/test/builtin/test_list_literal.mojo +++ b/stdlib/test/builtin/test_list_literal.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true def test_list(): diff --git a/stdlib/test/builtin/test_location.mojo b/stdlib/test/builtin/test_location.mojo index c70610663d..cc9a706249 100644 --- a/stdlib/test/builtin/test_location.mojo +++ b/stdlib/test/builtin/test_location.mojo @@ -126,20 +126,22 @@ fn test_parameter_context() raises: @always_inline -fn capture_call_loc(cond: Bool = False) -> _SourceLocation: +fn capture_call_loc[depth: Int = 1](cond: Bool = False) -> _SourceLocation: if ( not cond ): # NOTE: we test that __call_location works even in a nested scope. - return __call_location() + return __call_location[depth]() return _SourceLocation(-1, -1, "") @always_inline("nodebug") -fn capture_call_loc_nodebug(cond: Bool = False) -> _SourceLocation: +fn capture_call_loc_nodebug[ + depth: Int = 1 +](cond: Bool = False) -> _SourceLocation: if ( not cond ): # NOTE: we test that __call_location works even in a nested scope. - return __call_location() + return __call_location[depth]() return _SourceLocation(-1, -1, "") @@ -151,13 +153,22 @@ fn get_call_locs() -> (_SourceLocation, _SourceLocation): @always_inline("nodebug") -fn get_call_locs_inlined() -> (_SourceLocation, _SourceLocation): +fn get_call_locs_inlined[ + depth: Int = 1 +]() -> (_SourceLocation, _SourceLocation): return ( - capture_call_loc(), - capture_call_loc_nodebug(), + capture_call_loc[depth](), + capture_call_loc_nodebug[depth](), ) +@always_inline +fn get_call_locs_inlined_twice[ + depth: Int = 1 +]() -> (_SourceLocation, _SourceLocation): + return get_call_locs_inlined[depth]() + + fn get_four_call_locs() -> ( _SourceLocation, _SourceLocation, @@ -182,8 +193,8 @@ fn get_four_call_locs_inlined() -> ( fn test_builtin_call_loc() raises: - var l = (148, 149, 156, 157) - var c = (25, 33, 25, 33) + var l = (150, 151, 160, 161) + var c = (25, 33, 32, 40) var loc_pair = get_call_locs() check_source_loc(l[0], c[0], loc_pair[0]) check_source_loc(l[1], c[1], loc_pair[1]) @@ -192,6 +203,10 @@ fn test_builtin_call_loc() raises: check_source_loc(l[2], c[2], loc_pair[0]) check_source_loc(l[3], c[3], loc_pair[1]) + loc_pair = get_call_locs_inlined_twice[2]() + check_source_loc(169, 40, loc_pair[0]) + check_source_loc(169, 40, loc_pair[1]) + var loc_quad = get_four_call_locs() check_source_loc(l[0], c[0], loc_quad[0]) check_source_loc(l[1], c[1], loc_quad[1]) @@ -211,7 +226,7 @@ fn source_loc_with_debug() -> _SourceLocation: var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 0 : i64}`, + inlineCount = Int(0).value, _type = ( __mlir_type.index, __mlir_type.index, diff --git a/stdlib/test/builtin/test_object.mojo b/stdlib/test/builtin/test_object.mojo index 65c118665a..899c75da17 100644 --- a/stdlib/test/builtin/test_object.mojo +++ b/stdlib/test/builtin/test_object.mojo @@ -183,7 +183,7 @@ def test_function(lhs, rhs) -> object: return lhs + rhs -# These are all marked borrowed because 'object' doesn't support function +# These are all marked read-only because 'object' doesn't support function # types with owned arguments. def test_function_raises(a) -> object: raise Error("Error from function type") diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index ca3b03afcc..4ace3a30c1 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -14,11 +14,11 @@ import sys - from tempfile import NamedTemporaryFile -from testing import assert_equal from builtin._location import __call_location, _SourceLocation +from testing import assert_equal + from utils import IndexList, StringRef @@ -63,7 +63,7 @@ struct PrintChecker: fn stream(self) -> FileDescriptor: return self.tmp._file_handle._get_raw_fd() - fn check_line(inout self, expected: String, msg: String = "") raises: + fn check_line(mut self, expected: String, msg: String = "") raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) var result = self.tmp.read()[:-1] @@ -72,7 +72,7 @@ struct PrintChecker: self.cursor += len(result) + 1 fn check_line_starts_with( - inout self, prefix: String, msg: String = "" + mut self, prefix: String, msg: String = "" ) raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) diff --git a/stdlib/test/builtin/test_range.mojo b/stdlib/test/builtin/test_range.mojo index b3a1f62be6..051656d27d 100644 --- a/stdlib/test/builtin/test_range.mojo +++ b/stdlib/test/builtin/test_range.mojo @@ -193,7 +193,7 @@ def test_scalar_range(): assert_equal(r.end, 16) assert_equal(r.step, 4) - fn append_many(inout list: List, *values: list.T): + fn append_many(mut list: List, *values: list.T): for value in values: list.append(value[]) diff --git a/stdlib/test/builtin/test_reversed.mojo b/stdlib/test/builtin/test_reversed.mojo index d6027d5429..790619c6c4 100644 --- a/stdlib/test/builtin/test_reversed.mojo +++ b/stdlib/test/builtin/test_reversed.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from collections import Deque, Dict + from testing import assert_equal diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 8b8698c9e7..d7bd8928b4 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -12,11 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s +from collections import InlineArray from sys import has_neon -from memory import UnsafePointer -from collections import InlineArray from builtin.simd import _modf +from memory import UnsafePointer from testing import ( assert_almost_equal, assert_equal, @@ -24,7 +24,8 @@ from testing import ( assert_not_equal, assert_true, ) -from utils import unroll, StaticTuple, IndexList + +from utils import IndexList, StaticTuple, unroll from utils.numerics import isfinite, isinf, isnan, nan diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 7ff2834d46..3c98be083f 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -45,7 +45,7 @@ fn random_numbers[ return result -# fn assert_sorted[dtype: DType](inout list: List[Scalar[dtype]]) raises: +# fn assert_sorted[dtype: DType](mut list: List[Scalar[dtype]]) raises: # sort[dtype](list) # for i in range(1, len(list)): # assert_true( @@ -53,7 +53,7 @@ fn random_numbers[ # ) -fn assert_sorted_string(inout list: List[String]) raises: +fn assert_sorted_string(mut list: List[String]) raises: for i in range(1, len(list)): assert_true( list[i] >= list[i - 1], str(list[i - 1]) + " > " + str(list[i]) @@ -62,7 +62,7 @@ fn assert_sorted_string(inout list: List[String]) raises: fn assert_sorted[ type: ComparableCollectionElement -](inout list: List[type]) raises: +](mut list: List[type]) raises: for i in range(1, len(list)): assert_true(list[i] >= list[i - 1], "error at index: " + str(i)) diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index 855b0a8036..af50f5b896 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -14,8 +14,8 @@ # RUN: %mojo %s | FileCheck %s from random import rand -from memory import UnsafePointer -from utils import Span + +from memory import UnsafePointer, Span fn sort_test[D: DType, name: StringLiteral](size: Int, max: Int) raises: diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 71c5853ba2..f4d5322a71 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -13,8 +13,8 @@ # RUN: %mojo %s from sys.ffi import c_char -from memory import UnsafePointer +from memory import UnsafePointer from testing import ( assert_equal, assert_false, @@ -219,6 +219,20 @@ def test_intable(): _ = StringLiteral.__int__("hi") +def test_join(): + assert_equal("".join(), "") + assert_equal("".join("a", "b", "c"), "abc") + assert_equal(" ".join("a", "b", "c"), "a b c") + assert_equal(" ".join("a", "b", "c", ""), "a b c ") + assert_equal(" ".join("a", "b", "c", " "), "a b c ") + + var sep = "," + var s = String("abc") + assert_equal(sep.join(s, s, s, s), "abc,abc,abc,abc") + assert_equal(sep.join(1, 2, 3), "1,2,3") + assert_equal(sep.join(1, "abc", 3), "1,abc,3") + + def test_isdigit(): assert_true("123".isdigit()) assert_false("abc".isdigit()) @@ -481,6 +495,15 @@ def test_float_conversion(): _ = ("not a float").__float__() +def test_string_literal_from_stringable(): + assert_equal(StringLiteral.get["hello"](), "hello") + assert_equal(StringLiteral.get[String("hello")](), "hello") + assert_equal(StringLiteral.get[42](), "42") + assert_equal( + StringLiteral.get[SIMD[DType.int64, 4](1, 2, 3, 4)](), "[1, 2, 3, 4]" + ) + + def main(): test_add() test_iadd() @@ -490,6 +513,7 @@ def main(): test_bool() test_contains() test_find() + test_join() test_rfind() test_replace() test_comparison_operators() @@ -512,3 +536,4 @@ def main(): test_split() test_splitlines() test_float_conversion() + test_string_literal_from_stringable() diff --git a/stdlib/test/builtin/test_uint.mojo b/stdlib/test/builtin/test_uint.mojo index 9e63c45937..1af1d2f125 100644 --- a/stdlib/test/builtin/test_uint.mojo +++ b/stdlib/test/builtin/test_uint.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_not_equal, assert_true from sys import bitwidthof + from bit import count_trailing_zeros +from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_simple_uint(): diff --git a/stdlib/test/collections/test_counter.mojo b/stdlib/test/collections/test_counter.mojo index 0abc8e1287..27f5f3b9e6 100644 --- a/stdlib/test/collections/test_counter.mojo +++ b/stdlib/test/collections/test_counter.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from collections.counter import Counter from collections import Optional +from collections.counter import Counter from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index a9350c2180..fd2db54440 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -12,13 +12,13 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true, assert_raises - from collections import Deque -# ===----------------------------------------------------------------------===# +from testing import assert_equal, assert_false, assert_raises, assert_true + +# ===-----------------------------------------------------------------------===# # Implementation tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_impl_init_default() raises: @@ -666,9 +666,9 @@ fn test_impl_imul() raises: assert_equal((q._data + 0)[], 3) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # API Interface tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_init_variadic_list() raises: diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index b16cb4b5bb..18a933c6be 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -13,10 +13,11 @@ # RUN: %mojo %s from collections import InlineArray -from testing import assert_equal, assert_false, assert_true -from memory.maybe_uninitialized import UnsafeMaybeUninitialized + from memory import UnsafePointer +from memory.maybe_uninitialized import UnsafeMaybeUninitialized from test_utils import ValueDestructorRecorder +from testing import assert_equal, assert_false, assert_true def test_array_unsafe_get(): diff --git a/stdlib/test/collections/test_inline_list.mojo b/stdlib/test/collections/test_inline_list.mojo index b3d21ed3a0..52adea853c 100644 --- a/stdlib/test/collections/test_inline_list.mojo +++ b/stdlib/test/collections/test_inline_list.mojo @@ -13,8 +13,8 @@ # RUN: %mojo %s from collections import InlineList, Set -from memory import UnsafePointer +from memory import UnsafePointer from test_utils import MoveCounter, ValueDestructorRecorder from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 873baf32e6..1def6849ea 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -13,13 +13,12 @@ # RUN: %mojo %s from collections import List -from memory import UnsafePointer from sys.info import sizeof + +from memory import UnsafePointer, Span from test_utils import CopyCounter, MoveCounter from testing import assert_equal, assert_false, assert_raises, assert_true -from utils import Span - def test_mojo_issue_698(): var list = List[Float64]() diff --git a/stdlib/test/collections/test_set.mojo b/stdlib/test/collections/test_set.mojo index 4dceebd59d..147e488304 100644 --- a/stdlib/test/collections/test_set.mojo +++ b/stdlib/test/collections/test_set.mojo @@ -14,8 +14,8 @@ from collections import Set -from testing import assert_false, assert_raises, assert_true from testing import assert_equal as AE +from testing import assert_false, assert_raises, assert_true fn assert_equal[T: EqualityComparable](lhs: T, rhs: T) raises: diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index 84c881c97b..8f0027893e 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -17,6 +17,7 @@ from collections.string import ( _calc_initial_buffer_size_int64, _isspace, ) + from memory import UnsafePointer from python import Python from testing import ( @@ -1272,19 +1273,23 @@ def test_iter(): var idx = -1 vs = String("mojo🔥") - for item in vs: - idx += 1 - if idx == 0: - assert_equal("m", item) - elif idx == 1: - assert_equal("o", item) - elif idx == 2: - assert_equal("j", item) - elif idx == 3: - assert_equal("o", item) - elif idx == 4: - assert_equal("🔥", item) - assert_equal(4, idx) + var iterator = vs.__iter__() + assert_equal(5, len(iterator)) + var item = iterator.__next__() + assert_equal("m", item) + assert_equal(4, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(3, len(iterator)) + item = iterator.__next__() + assert_equal("j", item) + assert_equal(2, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(1, len(iterator)) + item = iterator.__next__() + assert_equal("🔥", item) + assert_equal(0, len(iterator)) var items = List[String]( "mojo🔥", diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 87604606ca..c9f01c3a14 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -12,15 +12,14 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from bit import pop_count -from builtin._location import __call_location from hashlib._ahash import AHasher -from hashlib.hash import hash as old_hash from hashlib._hasher import _hash_with_hasher as hash +from hashlib.hash import hash as old_hash + +from bit import pop_count +from builtin._location import __call_location +from memory import memset_zero, stack_allocation, Span from testing import assert_equal, assert_not_equal, assert_true -from memory import memset_zero, stack_allocation -from time import now -from utils import Span # Source: https://www.101languages.net/arabic/most-common-arabic-words/ alias words_ar = """ @@ -578,7 +577,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(", ") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/test/hashlib/test_hash.mojo b/stdlib/test/hashlib/test_hash.mojo index 5e7662fbd7..56f475f55d 100644 --- a/stdlib/test/hashlib/test_hash.mojo +++ b/stdlib/test/hashlib/test_hash.mojo @@ -19,6 +19,7 @@ # specific. But for now they test behavior and reproducibility. from hashlib.hash import _hash_simd + from testing import assert_equal, assert_not_equal, assert_true diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index f41685b553..4c10ac50a5 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -13,12 +13,14 @@ # RUN: %mojo %s -from hashlib._hasher import _hash_with_hasher, _HashableWithHasher, _Hasher from hashlib._ahash import AHasher -from memory import UnsafePointer +from hashlib._hasher import _hash_with_hasher, _HashableWithHasher, _Hasher from pathlib import Path + +from memory import UnsafePointer from python import Python, PythonObject from testing import assert_equal, assert_true + from utils import StringRef @@ -28,14 +30,14 @@ struct DummyHasher(_Hasher): fn __init__(out self): self._dummy_value = 0 - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): for i in range(length): self._dummy_value += data[i].cast[DType.uint64]() - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): self._dummy_value += value.cast[DType.uint64]().reduce_add() - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): value.__hash__(self) fn finish(owned self) -> UInt64: @@ -46,7 +48,7 @@ struct DummyHasher(_Hasher): struct SomeHashableStruct(_HashableWithHasher): var _value: Int64 - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher._update_with_simd(self._value) @@ -67,7 +69,7 @@ struct ComplexeHashableStruct(_HashableWithHasher): var _value1: SomeHashableStruct var _value2: SomeHashableStruct - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) @@ -94,10 +96,10 @@ struct ComplexHashableStructWithList(_HashableWithHasher): var _value2: SomeHashableStruct var _value3: List[UInt8] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), @@ -113,10 +115,10 @@ struct ComplexHashableStructWithListAndWideSIMD(_HashableWithHasher): var _value3: List[UInt8] var _value4: SIMD[DType.uint32, 4] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index ad8ab36e9a..67d1f613b2 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -12,9 +12,7 @@ # ===----------------------------------------------------------------------=== # import os -import platform import shutil - from pathlib import Path import lit.formats @@ -80,8 +78,9 @@ def has_not(): # with assertions enabled. config.substitutions.insert(1, ("%bare-mojo", "mojo")) - # NOTE: Right now this is the same as %mojo but we should start testing + # NOTE: Right now these are the same as %mojo but we should start testing # with debug info as well + config.substitutions.insert(0, ("%mojo-no-debug-no-assert", "mojo")) config.substitutions.insert(0, ("%mojo-no-debug", base_mojo_command)) # The `mojo` nightly compiler ships with its own `stdlib.mojopkg`. For the diff --git a/stdlib/test/memory/test_arc.mojo b/stdlib/test/memory/test_arc.mojo index 394b1d507f..82b5342aea 100644 --- a/stdlib/test/memory/test_arc.mojo +++ b/stdlib/test/memory/test_arc.mojo @@ -14,22 +14,22 @@ from collections import List -from memory import Arc, UnsafePointer -from testing import assert_equal, assert_false, assert_true +from memory import ArcPointer, UnsafePointer from test_utils import ObservableDel +from testing import assert_equal, assert_false, assert_true def test_basic(): - var p = Arc(4) + var p = ArcPointer(4) var p2 = p p2[] = 3 assert_equal(3, p[]) def test_is(): - var p = Arc(3) + var p = ArcPointer(3) var p2 = p - var p3 = Arc(3) + var p3 = ArcPointer(3) assert_true(p is p2) assert_false(p is not p2) assert_false(p is p3) @@ -38,12 +38,12 @@ def test_is(): def test_deleter_not_called_until_no_references(): var deleted = False - var p = Arc(ObservableDel(UnsafePointer.address_of(deleted))) + var p = ArcPointer(ObservableDel(UnsafePointer.address_of(deleted))) var p2 = p _ = p^ assert_false(deleted) - var vec = List[Arc[ObservableDel]]() + var vec = List[ArcPointer[ObservableDel]]() vec.append(p2) _ = p2^ assert_false(deleted) @@ -53,13 +53,13 @@ def test_deleter_not_called_until_no_references(): def test_deleter_not_called_until_no_references_explicit_copy(): var deleted = False - var p = Arc(ObservableDel(UnsafePointer.address_of(deleted))) - var p2 = Arc(other=p) + var p = ArcPointer(ObservableDel(UnsafePointer.address_of(deleted))) + var p2 = ArcPointer(other=p) _ = p^ assert_false(deleted) - var vec = List[Arc[ObservableDel]]() - vec.append(Arc(other=p2)^) + var vec = List[ArcPointer[ObservableDel]]() + vec.append(ArcPointer(other=p2)^) _ = p2^ assert_false(deleted) _ = vec^ @@ -67,8 +67,8 @@ def test_deleter_not_called_until_no_references_explicit_copy(): def test_count(): - var a = Arc(10) - var b = Arc(other=a) + var a = ArcPointer(10) + var b = ArcPointer(other=a) var c = a assert_equal(3, a.count()) _ = b^ diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/stdlib/test/memory/test_maybe_uninitialized.mojo index 6c02fec9b6..5dbebfd8d7 100644 --- a/stdlib/test/memory/test_maybe_uninitialized.mojo +++ b/stdlib/test/memory/test_maybe_uninitialized.mojo @@ -13,9 +13,9 @@ # RUN: %mojo %s from os import abort + from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized - from test_utils import CopyCounter, MoveCounter, ValueDestructorRecorder from testing import assert_equal diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index 52cbe98ae4..b9f754c97d 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo --debug-level full %s -from sys import sizeof, simdwidthof +from sys import simdwidthof, sizeof from memory import ( AddressSpace, diff --git a/stdlib/test/memory/test_owned_pointer.mojo b/stdlib/test/memory/test_owned_pointer.mojo index a09b8fa59b..133dff1348 100644 --- a/stdlib/test/memory/test_owned_pointer.mojo +++ b/stdlib/test/memory/test_owned_pointer.mojo @@ -12,14 +12,14 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true, assert_not_equal +from memory import OwnedPointer, UnsafePointer from test_utils import ( - MoveOnly, ExplicitCopyOnly, ImplicitCopyOnly, + MoveOnly, ObservableDel, ) -from memory import OwnedPointer, UnsafePointer +from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_basic_ref(): diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/memory/test_span.mojo similarity index 92% rename from stdlib/test/utils/test_span.mojo rename to stdlib/test/memory/test_span.mojo index 79cd780401..92c49210c6 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -13,10 +13,9 @@ # RUN: %mojo %s from collections import InlineArray, List -from memory import UnsafePointer -from testing import assert_equal, assert_true -from utils import Span +from memory import UnsafePointer, Span +from testing import assert_equal, assert_true def test_span_list_int(): @@ -137,19 +136,6 @@ def test_span_slice(): assert_equal(res[0], 2) assert_equal(res[1], 3) assert_equal(res[2], 4) - # Test slicing with negative step - res = s[1::-1] - assert_equal(res[0], 2) - assert_equal(res[1], 1) - res.unsafe_ptr().free() - res = s[2:1:-1] - assert_equal(res[0], 3) - assert_equal(len(res), 1) - res.unsafe_ptr().free() - res = s[5:1:-2] - assert_equal(res[0], 5) - assert_equal(res[1], 3) - res.unsafe_ptr().free() def test_copy_from(): @@ -203,6 +189,16 @@ def test_ref(): assert_true(s.as_ref() == Pointer.address_of(l.unsafe_ptr()[])) +def test_reversed(): + var forward = InlineArray[Int, 3](1, 2, 3) + var backward = InlineArray[Int, 3](3, 2, 1) + var s = Span[Int](forward) + var i = 0 + for num in reversed(s): + assert_equal(num[], backward[i]) + i += 1 + + def main(): test_span_list_int() test_span_list_str() @@ -214,3 +210,4 @@ def main(): test_bool() test_fill() test_ref() + test_reversed() diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 657fc02b81..d6339f7e18 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -12,9 +12,9 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from memory import UnsafePointer, AddressSpace +from memory import AddressSpace, UnsafePointer from test_utils import ExplicitCopyOnly, MoveCounter -from testing import assert_equal, assert_not_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_not_equal, assert_true struct MoveOnlyType(Movable): @@ -178,10 +178,10 @@ def test_comparisons(): def test_unsafepointer_address_space(): - var p1 = UnsafePointer[Int, AddressSpace(0)].alloc(1) + var p1 = UnsafePointer[Int, address_space = AddressSpace(0)].alloc(1) p1.free() - var p2 = UnsafePointer[Int, AddressSpace.GENERIC].alloc(1) + var p2 = UnsafePointer[Int, address_space = AddressSpace.GENERIC].alloc(1) p2.free() diff --git a/stdlib/test/os/path/test_basename.mojo b/stdlib/test/os/path/test_basename.mojo new file mode 100644 index 0000000000..acda789eca --- /dev/null +++ b/stdlib/test/os/path/test_basename.mojo @@ -0,0 +1,85 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from os.path import basename +from pathlib import Path + +from builtin._location import __source_location +from testing import assert_equal + + +def main(): + # Root directories + assert_equal("", basename("/")) + + # Empty strings + assert_equal("", basename("")) + + # Current directory (matching behavior of python, doesn't resolve `..` etc.) + assert_equal(".", basename(".")) + + # Parent directory + assert_equal("..", basename("..")) + + # Absolute paths + assert_equal("file", basename("/file")) + assert_equal("file.txt", basename("/file.txt")) + assert_equal("file", basename("/dir/file")) + assert_equal("file", basename("/dir/subdir/file")) + + # Relative paths + assert_equal("file", basename("dir/file")) + assert_equal("file", basename("dir/subdir/file")) + assert_equal("file", basename("file")) + + # Trailing slashes + assert_equal("", basename("/path/to/")) + assert_equal("", basename("/path/to/dir/")) + + # Multiple slashes + assert_equal("file", basename("/path/to//file")) + assert_equal("to", basename("/path//to")) + + # Paths with spaces + assert_equal("file", basename("/path to/file")) + assert_equal("file", basename("/path to/dir/file")) + + # Paths with special characters + assert_equal("file", basename("/path-to/file")) + assert_equal("file", basename("/path_to/dir/file")) + + # Paths with dots + assert_equal("file", basename("/path/./to/file")) + assert_equal("file", basename("/path/../to/file")) + + # Paths with double dots + assert_equal("file", basename("/path/../file")) + assert_equal("file", basename("/path/to/../file")) + + # Root and relative mixed + assert_equal("file", basename("/dir/./file")) + assert_equal("file", basename("/dir/subdir/../file")) + + # Edge cases + assert_equal("file", basename("/./file")) + assert_equal("file", basename("/../file")) + + # Unix hidden files + assert_equal(".hiddenfile", basename("/path/to/.hiddenfile")) + assert_equal(".hiddenfile", basename("/path/to/dir/.hiddenfile")) + + assert_equal("test_basename.mojo", basename(__source_location().file_name)) + assert_equal( + "some_file.txt", basename(Path.home() / "dir" / "some_file.txt") + ) diff --git a/stdlib/test/os/path/test_expanduser.mojo b/stdlib/test/os/path/test_expanduser.mojo index 78764e6bf1..7041eefdd6 100644 --- a/stdlib/test/os/path/test_expanduser.mojo +++ b/stdlib/test/os/path/test_expanduser.mojo @@ -14,11 +14,12 @@ import os +from os.env import getenv, setenv from os.path import expanduser, join -from os.env import setenv, getenv -from testing import assert_equal, assert_raises, assert_true from sys.info import os_is_windows +from testing import assert_equal, assert_raises, assert_true + fn get_user_path() -> String: @parameter diff --git a/stdlib/test/os/path/test_expandvars.mojo b/stdlib/test/os/path/test_expandvars.mojo index d81746d88c..fead55656d 100644 --- a/stdlib/test/os/path/test_expandvars.mojo +++ b/stdlib/test/os/path/test_expandvars.mojo @@ -14,6 +14,7 @@ import os from os.path import expandvars + from testing import assert_equal @@ -21,7 +22,7 @@ from testing import assert_equal struct EnvVar: var name: String - fn __init__(out self, name: String, value: String) -> None: + fn __init__(out self, name: String, value: String): self.name = name _ = os.setenv(name, value) diff --git a/stdlib/test/os/path/test_getsize.mojo b/stdlib/test/os/path/test_getsize.mojo index 6975d91335..1aa50e9bfb 100644 --- a/stdlib/test/os/path/test_getsize.mojo +++ b/stdlib/test/os/path/test_getsize.mojo @@ -14,6 +14,7 @@ from os.path import getsize from tempfile import NamedTemporaryFile + from testing import assert_equal diff --git a/stdlib/test/os/path/test_split.mojo b/stdlib/test/os/path/test_split.mojo index eaa6c008ea..0ef994827b 100644 --- a/stdlib/test/os/path/test_split.mojo +++ b/stdlib/test/os/path/test_split.mojo @@ -13,7 +13,7 @@ # RUN: %mojo %s import os -from os.path import split, expanduser +from os.path import expanduser, split from pathlib import Path from builtin._location import __source_location diff --git a/stdlib/test/os/path/test_splitroot.mojo b/stdlib/test/os/path/test_splitroot.mojo new file mode 100644 index 0000000000..fddf23677c --- /dev/null +++ b/stdlib/test/os/path/test_splitroot.mojo @@ -0,0 +1,88 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +import os +from os.path import splitroot + +from testing import assert_equal + + +def test_absolute_path(): + drive, root, tail = splitroot("/usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot("//usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "//") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot("///usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "//usr/lib/file.txt") + + +def test_relative_path(): + drive, root, tail = splitroot("usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot(".") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, ".") + + drive, root, tail = splitroot("..") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "..") + + drive, root, tail = splitroot("entire/.//.tail/..//captured////") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "entire/.//.tail/..//captured////") + + +def test_root_directory(): + drive, root, tail = splitroot("/") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "") + + drive, root, tail = splitroot("//") + assert_equal(drive, "") + assert_equal(root, "//") + assert_equal(tail, "") + + drive, root, tail = splitroot("///") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "//") + + +def test_empty_path(): + drive, root, tail = splitroot("") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "") + + +def main(): + test_absolute_path() + test_relative_path() + test_root_directory() + test_empty_path() diff --git a/stdlib/test/os/test_no_trap.mojo b/stdlib/test/os/test_no_trap.mojo index 3ccfd1a230..8c36b634f1 100644 --- a/stdlib/test/os/test_no_trap.mojo +++ b/stdlib/test/os/test_no_trap.mojo @@ -14,8 +14,8 @@ # We pass an_argument here to avoid the compiler from optimizing the code # away. -from sys import argv from os import abort +from sys import argv # CHECK-LABEL: OK diff --git a/stdlib/test/os/test_remove.mojo b/stdlib/test/os/test_remove.mojo index 820e1d21bb..ccd9382ad3 100644 --- a/stdlib/test/os/test_remove.mojo +++ b/stdlib/test/os/test_remove.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from os import remove, unlink, PathLike +from os import PathLike, remove, unlink from os.path import exists from pathlib import Path diff --git a/stdlib/test/pwd/test_pwd.mojo b/stdlib/test/pwd/test_pwd.mojo index 0cab2ff11f..14f3946a87 100644 --- a/stdlib/test/pwd/test_pwd.mojo +++ b/stdlib/test/pwd/test_pwd.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -import pwd import os -from testing import assert_equal, assert_true, assert_raises +import pwd + +from testing import assert_equal, assert_raises, assert_true def test_pwuid(): diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/stdlib/test/python/module_for_test_python_object_dunder_contains.py new file mode 100644 index 0000000000..40ec598dee --- /dev/null +++ b/stdlib/test/python/module_for_test_python_object_dunder_contains.py @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +class Class_no_iterable_no_contains: + x = 1 + + +class Class_no_iterable_but_contains: + x = 123 + + def __contains__(self, rhs): + return rhs == self.x + + +class Class_iterable_no_contains: + def __init__(self): + self.data = [123, 456] + + def __iter__(self): + self.i = 0 + return self + + def __next__(self): + if self.i >= len(self.data): + raise StopIteration + else: + tmp = self.data[self.i] + self.i += 1 + return tmp diff --git a/stdlib/test/python/my_module.py b/stdlib/test/python/my_module.py index c78c39556e..8147b0a382 100644 --- a/stdlib/test/python/my_module.py +++ b/stdlib/test/python/my_module.py @@ -25,8 +25,7 @@ def __init__(self, bar): class AbstractPerson(ABC): @abstractmethod - def method(self): - ... + def method(self): ... def my_function(name): diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index b2f1203332..ec7a71d89e 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -17,42 +17,42 @@ from python import Python, PythonObject from testing import assert_equal -fn test_import(inout python: Python) raises: +fn test_import(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var py_string = my_module.my_function("Hello") var str = String(python.__str__(py_string)) assert_equal(str, "Formatting the string from Lit with Python: Hello") -fn test_list(inout python: Python) raises: +fn test_list(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_list = PythonObject([1, 2.34, "False"]) var py_string = str(my_list) assert_equal(py_string, "[1, 2.34, 'False']") -fn test_tuple(inout python: Python) raises: +fn test_tuple(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_tuple = PythonObject((1, 2.34, "False")) var py_string = str(my_tuple) assert_equal(py_string, "(1, 2.34, 'False')") -fn test_call_ownership(inout python: Python) raises: +fn test_call_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj) var string = python.__str__(py_string) assert_equal(string, "[1, '5']") -fn test_getitem_ownership(inout python: Python) raises: +fn test_getitem_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj[1]) var string = python.__str__(py_string) assert_equal(string, "5") -fn test_getattr_ownership(inout python: Python) raises: +fn test_getattr_ownership(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var obj = my_module.Foo(4) var py_string = str(obj.bar) diff --git a/stdlib/test/python/test_python_cpython.mojo b/stdlib/test/python/test_python_cpython.mojo new file mode 100644 index 0000000000..77d4bfdb59 --- /dev/null +++ b/stdlib/test/python/test_python_cpython.mojo @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true + + +def test_PyObject_HasAttrString(mut python: Python): + var Cpython_env = python.impl._cpython + + var the_object = PythonObject(0) + var result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(0, result) + + the_object = PythonObject([1, 2, 3]) + result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(1, result) + _ = the_object + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_PyObject_HasAttrString(python) diff --git a/stdlib/test/python/test_python_info.mojo b/stdlib/test/python/test_python_info.mojo index 1728a10c24..b1b7eb29e7 100644 --- a/stdlib/test/python/test_python_info.mojo +++ b/stdlib/test/python/test_python_info.mojo @@ -19,7 +19,7 @@ from python._cpython import PythonVersion from testing import assert_equal -fn test_python_version(inout python: Python) raises: +fn test_python_version(mut python: Python) raises: var version = "3.10.8 (main, Nov 24 2022, 08:08:27) [Clang 14.0.6 ]" var pythonVersion = PythonVersion(version) assert_equal(pythonVersion.major, 3) diff --git a/stdlib/test/python/test_python_interop.mojo b/stdlib/test/python/test_python_interop.mojo index be71cfd2dc..3e1a465628 100644 --- a/stdlib/test/python/test_python_interop.mojo +++ b/stdlib/test/python/test_python_interop.mojo @@ -17,7 +17,7 @@ from python.python import Python, PythonObject, _get_global_python_itf from testing import assert_equal -fn test_execute_python_string(inout python: Python) -> String: +fn test_execute_python_string(mut python: Python) -> String: try: _ = Python.evaluate("print('evaluated by PyRunString')") return str(Python.evaluate("'a' + 'b'")) @@ -25,7 +25,7 @@ fn test_execute_python_string(inout python: Python) -> String: return str(e) -fn test_local_import(inout python: Python) -> String: +fn test_local_import(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") if my_module: @@ -37,7 +37,7 @@ fn test_local_import(inout python: Python) -> String: return str(e) -fn test_dynamic_import(inout python: Python, times: Int = 1) -> String: +fn test_dynamic_import(mut python: Python, times: Int = 1) -> String: alias INLINE_MODULE = """ called_already = False def hello(name): @@ -56,7 +56,7 @@ def hello(name): return str(e) -fn test_call(inout python: Python) -> String: +fn test_call(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") return str( diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index b6e5fc38c1..b1c6799157 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -14,13 +14,14 @@ # RUN: %mojo %s from collections import Dict + from python import Python, PythonObject from testing import assert_equal, assert_false, assert_raises, assert_true from utils import StringRef -def test_dunder_methods(inout python: Python): +def test_dunder_methods(mut python: Python): var a = PythonObject(34) var b = PythonObject(10) @@ -575,6 +576,31 @@ fn test_py_slice() raises: _ = with_2d[0:1][4] +def test_contains_dunder(): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + def main(): # initializing Python instance calls init_python var python = Python() @@ -592,3 +618,4 @@ def main(): test_getitem_raises() test_setitem_raises() test_py_slice() + test_contains_dunder() diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/stdlib/test/python/test_python_object_dunder_contains.mojo new file mode 100644 index 0000000000..5d4c722278 --- /dev/null +++ b/stdlib/test/python/test_python_object_dunder_contains.mojo @@ -0,0 +1,70 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true +from collections import Dict + + +def test_contains_dunder(mut python: Python): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + # tests with python modules: + module = python.import_module( + "module_for_test_python_object_dunder_contains" + ) + + x = module.Class_no_iterable_but_contains() + assert_true(123 in x) + + x = module.Class_no_iterable_no_contains() + with assert_raises( + contains="'Class_no_iterable_no_contains' object is not iterable" + ): + _ = 123 in x + + x = module.Class_iterable_no_contains() + assert_true(123 in x) + assert_true(456 in x) + assert_false(234 in x) + x.data.append(234) + assert_true(234 in x) + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_contains_dunder(python) diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/stdlib/test/python/test_python_to_mojo.mojo index 0fbf502b7a..d621943f9c 100644 --- a/stdlib/test/python/test_python_to_mojo.mojo +++ b/stdlib/test/python/test_python_to_mojo.mojo @@ -17,7 +17,7 @@ from python import Python, PythonObject from testing import assert_equal, assert_false, assert_true -fn test_string_to_python_to_mojo(inout python: Python) raises: +fn test_string_to_python_to_mojo(mut python: Python) raises: var py_string = PythonObject("mojo") var py_string_capitalized = py_string.capitalize() diff --git a/stdlib/test/random/test_random.mojo b/stdlib/test/random/test_random.mojo index f1f1f6ac73..0a90b5ae89 100644 --- a/stdlib/test/random/test_random.mojo +++ b/stdlib/test/random/test_random.mojo @@ -12,7 +12,14 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from random import randn_float64, random_float64, random_si64, random_ui64, seed +from random import ( + randn_float64, + random_float64, + random_si64, + random_ui64, + seed, + shuffle, +) from testing import assert_equal, assert_true @@ -73,6 +80,94 @@ def test_seed(): assert_equal(some_unsigned_integer, random_ui64(0, 255)) +def test_shuffle(): + # TODO: Clean up with list comprehension when possible. + + # Property tests + alias L_i = List[Int] + alias L_s = List[String] + var a = L_i(1, 2, 3, 4) + var b = L_i(1, 2, 3, 4) + var c = L_s("Random", "shuffle", "in", "Mojo") + var d = L_s("Random", "shuffle", "in", "Mojo") + + shuffle(b) + assert_equal(len(a), len(b)) + assert_true(a != b) + for i in range(len(b)): + assert_true(b[i] in a) + + shuffle(d) + assert_equal(len(c), len(d)) + assert_true(c != d) + for i in range(len(d)): + assert_true(d[i] in c) + + var e = L_i(21) + shuffle(e) + assert_true(e == L_i(21)) + var f = L_s("Mojo") + shuffle(f) + assert_true(f == L_s("Mojo")) + + alias L_l = List[List[Int]] + var g = L_l() + var h = L_l() + for i in range(10): + g.append(L_i(i, i + 1, i + 3)) + h.append(L_i(i, i + 1, i + 3)) + shuffle(g) + # TODO: Uncomment when possible + # assert_true(g != h) + assert_equal(len(g), len(h)) + for i in range(10): + # Currently, the below does not compile. + # assert_true(g.__contains__(L_i(i, i + 1, i + 3))) + var target: List[Int] = L_i(i, i + 1, i + 3) + var found = False + for j in range(len(g)): + if g[j] == target: + found = True + break + assert_true(found) + + alias L_l_s = List[List[String]] + var i = L_l_s() + var j = L_l_s() + for x in range(10): + i.append(L_s(str(x), str(x + 1), str(x + 3))) + j.append(L_s(str(x), str(x + 1), str(x + 3))) + shuffle(i) + # TODO: Uncomment when possible + # assert_true(g != h) + assert_equal(len(i), len(j)) + for x in range(10): + var target: List[String] = L_s(str(x), str(x + 1), str(x + 3)) + var found = False + for y in range(len(i)): + if j[y] == target: + found = True + break + assert_true(found) + + # Given the number of permutations of size 1000 is 1000!, + # we rely on the assertion that a truly random shuffle should not + # result in the same order as the to pre-shuffle list with extremely + # high probability. + var l = L_i() + var m = L_i() + for i in range(1000): + l.append(i) + m.append(i) + shuffle(l) + assert_equal(len(l), len(m)) + assert_true(l != m) + shuffle(m) + assert_equal(len(l), len(m)) + assert_true(l != m) + + def main(): test_random() test_seed() + test_shuffle() diff --git a/stdlib/test/sys/test_c_types.mojo b/stdlib/test/sys/test_c_types.mojo index 61029f21c9..f2610aa453 100644 --- a/stdlib/test/sys/test_c_types.mojo +++ b/stdlib/test/sys/test_c_types.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from sys.info import os_is_linux, os_is_macos, os_is_windows, is_64bit, is_32bit from sys.ffi import c_int, c_long, c_long_long +from sys.info import is_32bit, is_64bit, os_is_linux, os_is_macos, os_is_windows from testing import assert_equal, assert_true diff --git a/stdlib/test/sys/test_intrinsics.mojo b/stdlib/test/sys/test_intrinsics.mojo index 417b5bd23b..2bc51de5c6 100644 --- a/stdlib/test/sys/test_intrinsics.mojo +++ b/stdlib/test/sys/test_intrinsics.mojo @@ -20,7 +20,7 @@ from sys import ( strided_load, strided_store, ) -from sys.intrinsics import likely, unlikely, assume +from sys.intrinsics import assume, likely, unlikely from memory import UnsafePointer, memset_zero from testing import assert_equal diff --git a/stdlib/test/sys/test_paramenv.mojo b/stdlib/test/sys/test_paramenv.mojo index abdbd3c266..b1e3cadeb6 100644 --- a/stdlib/test/sys/test_paramenv.mojo +++ b/stdlib/test/sys/test_paramenv.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -D bar=99 -D baz=hello -D foo=11 -D my_true=True -D my_false=false %s -from sys import env_get_int, env_get_bool, env_get_string, is_defined +from sys import env_get_bool, env_get_int, env_get_string, is_defined from testing import assert_equal, assert_false, assert_true diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index c186776e6e..d84ac25554 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -55,7 +55,7 @@ struct TempEnvWithCleanup: """Function called after the context manager exits if an error occurs.""" fn __init__( - inout self, + mut self, vars_to_set: Dict[String, String], clean_up_function: fn () raises -> None, ): @@ -63,20 +63,20 @@ struct TempEnvWithCleanup: self._vars_back = Dict[String, String]() self.clean_up_function = clean_up_function - def __enter__(inout self): + def __enter__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value self._vars_back[key] = os.getenv(key) _ = os.setenv(key, value, overwrite=True) - fn __exit__(inout self): + fn __exit__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value _ = os.setenv(key, value, overwrite=True) - def __exit__(inout self, error: Error) -> Bool: + def __exit__(mut self, error: Error) -> Bool: self.__exit__() self.clean_up_function() return False diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index 6f07f4d3b9..35283b7088 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -12,20 +12,20 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -debug-level full %s +from builtin._location import _SourceLocation +from python import PythonObject from testing import ( assert_almost_equal, assert_equal, assert_false, + assert_is, + assert_is_not, assert_not_equal, assert_raises, assert_true, - assert_is, - assert_is_not, ) from utils.numerics import inf, nan -from builtin._location import _SourceLocation -from python import PythonObject def test_assert_messages(): diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 6be7e4e60a..0148bfeeef 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -14,12 +14,11 @@ from sys import os_is_windows from time import ( - now, + monotonic, perf_counter, perf_counter_ns, sleep, time_function, - monotonic, ) from testing import assert_true @@ -28,7 +27,7 @@ from testing import assert_true @always_inline @parameter fn time_me(): - sleep(1) + sleep(1.0) @always_inline @@ -50,7 +49,7 @@ fn time_templated_function[ fn time_capturing_function(iters: Int) -> Int: @parameter fn time_fn(): - sleep(1) + sleep(1.0) return time_function[time_fn]() @@ -60,7 +59,6 @@ fn test_time() raises: assert_true(perf_counter() > 0) assert_true(perf_counter_ns() > 0) - assert_true(now() > 0) assert_true(monotonic() > 0) var t1 = time_function[time_me]() diff --git a/stdlib/test/utils/test_format.mojo b/stdlib/test/utils/test_format.mojo index e15d744a88..975d26464b 100644 --- a/stdlib/test/utils/test_format.mojo +++ b/stdlib/test/utils/test_format.mojo @@ -34,7 +34,7 @@ struct Point(Writable, Stringable): var y: Int @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") @no_inline diff --git a/stdlib/test/utils/test_format_to_stdout.mojo b/stdlib/test/utils/test_format_to_stdout.mojo index 256146aeff..fed40ec33c 100644 --- a/stdlib/test/utils/test_format_to_stdout.mojo +++ b/stdlib/test/utils/test_format_to_stdout.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -debug-level full %s -from utils import Writable, Writer import sys +from utils import Writable, Writer + fn main() raises: test_write_to_stdout() @@ -25,7 +26,7 @@ struct Point(Writable): var x: Int var y: Int - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") diff --git a/stdlib/test/utils/test_inlined_string.mojo b/stdlib/test/utils/test_inlined_string.mojo index 11712e5925..b2bc0d1956 100644 --- a/stdlib/test/utils/test_inlined_string.mojo +++ b/stdlib/test/utils/test_inlined_string.mojo @@ -13,9 +13,10 @@ # REQUIRES: disabled # RUN: %mojo --debug-level full %s +from os import abort + from testing import assert_equal, assert_true -from os import abort from utils import InlineString from utils.inline_string import _FixedString diff --git a/stdlib/test/utils/test_select.mojo b/stdlib/test/utils/test_select.mojo index cd82f84a2e..dc1911c98a 100644 --- a/stdlib/test/utils/test_select.mojo +++ b/stdlib/test/utils/test_select.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from utils._select import _select_register_value from testing import assert_equal +from utils._select import _select_register_value + def test_select_register_value(): assert_equal(_select_register_value(True, 42, 100), 42) diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo new file mode 100644 index 0000000000..b2f46d55af --- /dev/null +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from testing import assert_equal +from utils import StaticTuple + + +def test_getitem(): + # Should be constructible from a single element + # as well as a variadic list of elements. + var tup1 = StaticTuple[Int, 1](1) + assert_equal(tup1[0], 1) + + var tup2 = StaticTuple[Int, 2](1, 1) + assert_equal(tup2[0], 1) + assert_equal(tup2[1], 1) + + var tup3 = StaticTuple[Int, 3](1, 2, 3) + assert_equal(tup3[0], 1) + assert_equal(tup3[1], 2) + assert_equal(tup3[2], 3) + + assert_equal(tup1[Int(0)], 1) + + +def test_setitem(): + var t = StaticTuple[Int, 3](1, 2, 3) + + t[0] = 100 + assert_equal(t[0], 100) + + t[1] = 200 + assert_equal(t[1], 200) + + t[2] = 300 + assert_equal(t[2], 300) + + alias idx: Int = 0 + t.__setitem__[idx](400) + assert_equal(t[0], 400) + + +def main(): + test_getitem() + test_setitem() diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 1a47a96a5b..2fa18c44f2 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true -from utils import Span, StringSlice +from memory import Span +from utils import StringSlice from utils._utf8_validation import _is_valid_utf8 from utils.string_slice import _count_utf8_continuation_bytes @@ -520,7 +521,103 @@ def test_iter(): assert_equal(4, idx) -fn main() raises: +def test_rstrip(): + # with default rstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.rstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.rstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.rstrip() == " n") + + var str1 = "string".as_string_slice() + assert_true(str1.rstrip() == "string") + + var str2 = "something \t\n\t\v\f".as_string_slice() + assert_true(str2.rstrip() == "something") + + # with custom chars for rstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.rstrip("sip") == "m") + + var str4 = "mississippimississippi \n ".as_string_slice() + assert_true(str4.rstrip("sip ") == "mississippimississippi \n") + assert_true(str4.rstrip("sip \n") == "mississippim") + + +def test_lstrip(): + # with default lstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.lstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.lstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.lstrip() == "n ") + + var str1 = "string".as_string_slice() + assert_true(str1.lstrip() == "string") + + var str2 = " \t\n\t\v\fsomething".as_string_slice() + assert_true(str2.lstrip() == "something") + + # with custom chars for lstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.lstrip("mis") == "ppi") + + var str4 = " \n mississippimississippi".as_string_slice() + assert_true(str4.lstrip("mis ") == "\n mississippimississippi") + assert_true(str4.lstrip("mis \n") == "ppimississippi") + + +def test_strip(): + # with default strip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.strip() == "") + alias comp_empty_string_stripped = "".as_string_slice().strip() + assert_true(comp_empty_string_stripped == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.strip() == "") + alias comp_space_string_stripped = " \t\n\r\v\f ".as_string_slice().strip() + assert_true(comp_space_string_stripped == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.strip() == "n") + alias comp_str0_stripped = " n ".as_string_slice().strip() + assert_true(comp_str0_stripped == "n") + + var str1 = "string".as_string_slice() + assert_true(str1.strip() == "string") + alias comp_str1_stripped = ("string").strip() + assert_true(comp_str1_stripped == "string") + + var str2 = " \t\n\t\v\fsomething \t\n\t\v\f".as_string_slice() + alias comp_str2_stripped = (" \t\n\t\v\fsomething \t\n\t\v\f").strip() + assert_true(str2.strip() == "something") + assert_true(comp_str2_stripped == "something") + + # with custom strip chars + var str3 = "mississippi".as_string_slice() + assert_true(str3.strip("mips") == "") + assert_true(str3.strip("mip") == "ssiss") + alias comp_str3_stripped = "mississippi".as_string_slice().strip("mips") + assert_true(comp_str3_stripped == "") + + var str4 = " \n mississippimississippi \n ".as_string_slice() + assert_true(str4.strip(" ") == "\n mississippimississippi \n") + assert_true(str4.strip("\nmip ") == "ssissippimississ") + + alias comp_str4_stripped = ( + " \n mississippimississippi \n ".as_string_slice().strip(" ") + ) + assert_true(comp_str4_stripped == "\n mississippimississippi \n") + + +def main(): test_string_literal_byte_span() test_string_byte_span() test_heap_string_from_string_slice() @@ -538,4 +635,7 @@ fn main() raises: test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() test_splitlines() + test_rstrip() + test_lstrip() + test_strip() test_iter() diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index b38a4e0e75..0748552be0 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -12,28 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true - from memory import UnsafePointer -from utils import IndexList, StaticTuple from test_utils import ValueDestructorRecorder +from testing import assert_equal, assert_false, assert_true - -def test_static_tuple(): - var tup1 = StaticTuple[Int, 1](1) - assert_equal(tup1[0], 1) - - var tup2 = StaticTuple[Int, 2](1, 1) - assert_equal(tup2[0], 1) - assert_equal(tup2[1], 1) - - var tup3 = StaticTuple[Int, 3](1, 2, 3) - assert_equal(tup3[0], 1) - assert_equal(tup3[1], 2) - assert_equal(tup3[2], 3) - - assert_equal(tup3[0], 1) - assert_equal(tup3[Int(0)], 1) +from utils import IndexList, StaticTuple def test_static_int_tuple(): @@ -72,6 +55,5 @@ def test_tuple_literal(): def main(): - test_static_tuple() test_static_int_tuple() test_tuple_literal() diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index 2428ac18a7..f07b3aa099 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -15,8 +15,8 @@ from sys.ffi import _Global from memory import UnsafePointer -from testing import assert_equal, assert_false, assert_true from test_utils import ObservableDel +from testing import assert_equal, assert_false, assert_true from utils import Variant