diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..07fe41c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..4c6a925 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,20 @@ +name: Main workflow + +on: + push: + branches: [main] + +permissions: + contents: write + +jobs: + test: + uses: ./.github/workflows/test.yml + + package: + uses: ./.github/workflows/package.yml + + publish: + uses: ./.github/workflows/publish.yml + secrets: + PREFIX_API_KEY: ${{ secrets.PREFIX_API_KEY }} diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000..17322a1 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,23 @@ +name: Create package + +on: + workflow_call: + +jobs: + package: + name: Package + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Run the package command + run: | + curl -ssL https://magic.modular.com | bash + source $HOME/.bash_profile + magic run mojo package src/libc -o libc.mojopkg + + - name: Upload package as artifact + uses: actions/upload-artifact@v4 + with: + name: libc-package + path: libc.mojopkg diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..cb4d4a6 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,44 @@ +name: Build and publish + +on: + workflow_call: + secrets: + PREFIX_API_KEY: + required: true + +jobs: + publish: + name: Publish package + strategy: + matrix: + include: + - { target: linux-64, os: ubuntu-latest } + - { target: osx-arm64, os: macos-14 } + fail-fast: false + runs-on: ${{ matrix.os }} + timeout-minutes: 5 + defaults: + run: + shell: bash + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Build package for target platform + env: + TARGET_PLATFORM: ${{ matrix.target }} + PREFIX_API_KEY: ${{ secrets.PREFIX_API_KEY }} + CONDA_BLD_PATH: ${{ runner.workspace }}/.rattler + run: | + curl -ssL https://magic.modular.com | bash + source $HOME/.bash_profile + + # Temporary method to fetch the rattler binary. + RATTLER_BINARY="rattler-build-aarch64-apple-darwin" + if [[ $TARGET_PLATFORM == "linux-64" ]]; then RATTLER_BINARY="rattler-build-x86_64-unknown-linux-musl"; fi + curl -SL --progress-bar https://github.com/prefix-dev/rattler-build/releases/latest/download/${RATTLER_BINARY} -o rattler-build + chmod +x rattler-build + + # Build and push + magic run build --target-platform=$TARGET_PLATFORM + magic run publish -c mojo-community-nightly diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..24f4f37 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,17 @@ +name: Run the testing suite + +on: + workflow_call: + +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Run the test suite + run: | + curl -ssL https://magic.modular.com | bash + source $HOME/.bash_profile + magic run mojo test -I src/ tests/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5fef9b4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic +output diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..17c466c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,15 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.3.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + - repo: local + hooks: + - id: mojo-format + name: mojo-format + entry: magic run mojo format -l 88 + language: system + files: '\.(mojo|🔥)$' + stages: [commit] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..26db7ac --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +TO FIGURE IT OUT diff --git a/README.md b/README.md index 2dd7919..ee1a11a 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,50 @@ # Mojo's libc support -> Note: its a work in progress. Variadic syscall not working at the moment. +## Getting Started + +The only dependency for `libc` is Mojo. + +You can install Mojo following the instructions from the [Modular website](https://www.modular.com/max/mojo). + +Once you have created a Mojo project using the `magic` tool, + +1. Add the `mojo-community` channel to your `mojoproject.toml`, e.g: + ```toml + [project] + channels = ["conda-forge", "https://conda.modular.com/max", "https://repo.prefix.dev/mojo-community"] + ``` +2. Add `libc` as a dependency: + ```toml + [dependencies] + libc = ">=0.1.4" + ``` +3. Run `magic install` at the root of your project, where `mojoproject.toml` is located +4. `libc` should now be installed as a dependency. You can import libc functions from the library, e.g: + ```mojo + from libc import socket + ``` ## Supported Functionality + ### Basic socket connections -Example for [server](https://github.com/crisadamo/mojo-libc/blob/main/Libc.mojo#L1575) and [client](https://github.com/crisadamo/mojo-libc/blob/main/Libc.mojo#L1534) -> Note: `getaddrinfo` is not working properly. +See the examples in [examples/sockets/](examples/sockets/) directory. -To test the socket functionality there are two functions: -- `__test_socket_server__` that start listening for connections on 127.0.0.1:8083 and once a client connects it send the `"Hello, Mojo!"` message. -- `__test_socket_client__` that connects to 127.0.0.1:8083 send the message `"Hello, world Server"` and prints the reply from the server. +### Basic file system operations -In order to test it you need to create two notebooks, on the first one you need to run the `__test_socket_server__()` and then on the second one run `__test_socket_client__()`. +See the examples in [examples/files/](examples/files/) directory. +## Building the project +To build the project, execute the following command: -### Basic file system operations -Example [here](https://github.com/crisadamo/mojo-libc/blob/main/Libc.mojo#L1636) +```bash +./scripts/build.sh +``` + +## Running the tests + +To run the tests, execute the following command: -To test it you can play around with the `__test_file__` function. +```bash +./scripts/run-tests.sh +``` diff --git a/examples/files/print.mojo b/examples/files/print.mojo new file mode 100644 index 0000000..f581c19 --- /dev/null +++ b/examples/files/print.mojo @@ -0,0 +1,20 @@ +from libc import ( + FD_STDOUT, + c_char, + c_int, + c_void, + printf, + strlen, + write, +) + + +fn main(): + var format_str = String("Hello %s\n") + var format_ptr = format_str.unsafe_cstr_ptr() + var name = String("world") + var name_ptr = name.unsafe_cstr_ptr() + _ = printf(format_ptr, name_ptr) + var msg = String("Hello world, again\n") + var msg_ptr = msg.unsafe_cstr_ptr() + _ = write(FD_STDOUT, msg_ptr.bitcast[c_void](), len(msg)) diff --git a/examples/sockets/client.mojo b/examples/sockets/client.mojo new file mode 100644 index 0000000..911fdb7 --- /dev/null +++ b/examples/sockets/client.mojo @@ -0,0 +1,69 @@ +from memory import UnsafePointer +from utils import StaticTuple + +from libc import ( + AF_INET, + AI_PASSIVE, + SOCK_STREAM, + SHUT_RDWR, + addrinfo, + c_char, + connect, + getaddrinfo, + htons, + in_addr, + sizeof, + sockaddr, + sockaddr_in, + socket, + shutdown, +) + + +fn get_ip_address(host: String) raises -> in_addr: + var host_ptr = host.unsafe_cstr_ptr() + var my_addrinfo = addrinfo() + var servinfo = UnsafePointer[addrinfo]().alloc(1) + servinfo.init_pointee_move(my_addrinfo) + + var hints = addrinfo() + hints.ai_family = AF_INET + hints.ai_socktype = SOCK_STREAM + hints.ai_flags = AI_PASSIVE + + var error = getaddrinfo( + host_ptr, + UnsafePointer[c_char](), + UnsafePointer.address_of(hints), + UnsafePointer.address_of(servinfo), + ) + if error != 0: + raise Error("getaddrinfo failed: {}".format(error)) + + var addrinfo = servinfo[] + var ai_addr = addrinfo.ai_addr + + return ai_addr.bitcast[sockaddr_in]()[].sin_addr + + +fn main() raises: + var ip: in_addr + var host = "localhost" + var port = 8080 + print("Connecting to ", host, " on port ", port) + + ip = get_ip_address(host) + + # Convert ip address to network byte order. + var addr: sockaddr_in = sockaddr_in( + AF_INET, htons(port), ip, StaticTuple[c_char, 8](0, 0, 0, 0, 0, 0, 0, 0) + ) + var addr_ptr = UnsafePointer[sockaddr_in].address_of(addr).bitcast[sockaddr]() + var sock = socket(AF_INET, SOCK_STREAM, 0) + + if connect(sock, addr_ptr, sizeof[sockaddr_in]()) == -1: + print("Failed to connect to server") + else: + print("Connected to server") + + _ = shutdown(sock, SHUT_RDWR) diff --git a/examples/sockets/server.mojo b/examples/sockets/server.mojo new file mode 100644 index 0000000..e69de29 diff --git a/libc.mojo b/libc.mojo deleted file mode 100644 index 59975df..0000000 --- a/libc.mojo +++ /dev/null @@ -1,2053 +0,0 @@ -from sys.info import sizeof -from sys.intrinsics import external_call, _mlirtype_is_eq -from memory import memset, memset_zero -from utils.static_tuple import StaticTuple - -# Types aliases -alias c_void = UInt8 -alias c_char = UInt8 -alias c_schar = Int8 -alias c_uchar = UInt8 -alias c_short = Int16 -alias c_ushort = UInt16 -alias c_int = Int32 -alias c_uint = UInt32 -alias c_long = Int64 -alias c_ulong = UInt64 -alias c_float = Float32 -alias c_double = Float64 - -# Note: `Int` is known to be machine's width -alias c_size_t = Int -alias c_ssize_t = Int - -alias ptrdiff_t = Int64 -alias intptr_t = Int64 -alias uintptr_t = UInt64 - -# --- ( error.h Constants )----------------------------------------------------- -alias EPERM = 1 -alias ENOENT = 2 -alias ESRCH = 3 -alias EINTR = 4 -alias EIO = 5 -alias ENXIO = 6 -alias E2BIG = 7 -alias ENOEXEC = 8 -alias EBADF = 9 -alias ECHILD = 10 -alias EAGAIN = 11 -alias ENOMEM = 12 -alias EACCES = 13 -alias EFAULT = 14 -alias ENOTBLK = 15 -alias EBUSY = 16 -alias EEXIST = 17 -alias EXDEV = 18 -alias ENODEV = 19 -alias ENOTDIR = 20 -alias EISDIR = 21 -alias EINVAL = 22 -alias ENFILE = 23 -alias EMFILE = 24 -alias ENOTTY = 25 -alias ETXTBSY = 26 -alias EFBIG = 27 -alias ENOSPC = 28 -alias ESPIPE = 29 -alias EROFS = 30 -alias EMLINK = 31 -alias EPIPE = 32 -alias EDOM = 33 -alias ERANGE = 34 -alias EWOULDBLOCK = EAGAIN - - -fn to_char_ptr(s: String) -> Pointer[c_char]: - """Only ASCII-based strings.""" - let ptr = Pointer[c_char]().alloc(len(s)) - for i in range(len(s)): - ptr.store(i, ord(s[i])) - return ptr - - -fn c_charptr_to_string(s: Pointer[c_char]) -> String: - return String(s.bitcast[Int8](), strlen(s)) - - -# fn cftob(val: c_int) -> Bool: -# """Convert C-like failure (-1) to Bool""" -# return rebind[Bool](val > 0) - - -@always_inline("nodebug") -fn external_call6[ - callee: StringLiteral, - type: AnyType, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, - T5: AnyType, -](arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) -> type: - """Call an external function. - - Parameters: - callee: The name of the external function. - type: The return type. - T0: The first argument type. - T1: The second argument type. - T2: The third argument type. - T3: The fourth argument type. - T4: The fifth argument type. - T5: The fifth argument type. - - Args: - arg0: The first argument. - arg1: The second argument. - arg2: The third argument. - arg3: The fourth argument. - arg4: The fifth argument. - arg5: The fifth argument. - - Returns: - The external call result. - """ - - @parameter - if _mlirtype_is_eq[type, NoneType](): - __mlir_op.`pop.external_call`[func : callee.value, _type:None]( - arg0, arg1, arg2, arg3, arg4, arg5 - ) - return rebind[type](None) - else: - return __mlir_op.`pop.external_call`[func : callee.value, _type:type]( - arg0, arg1, arg2, arg3, arg4, arg5 - ) - - -@always_inline("nodebug") -fn external_call7[ - callee: StringLiteral, - type: AnyType, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, - T5: AnyType, - T6: AnyType, -](arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) -> type: - """Call an external function. - - Parameters: - callee: The name of the external function. - type: The return type. - T0: The first argument type. - T1: The second argument type. - T2: The third argument type. - T3: The fourth argument type. - T4: The fifth argument type. - T5: The sixth argument type. - T6: The seventh argument type. - - Args: - arg0: The first argument. - arg1: The second argument. - arg2: The third argument. - arg3: The fourth argument. - arg4: The fifth argument. - arg5: The sixth argument. - arg6: The seventh argument. - - Returns: - The external call result. - """ - - @parameter - if _mlirtype_is_eq[type, NoneType](): - __mlir_op.`pop.external_call`[func : callee.value, _type:None]( - arg0, arg1, arg2, arg3, arg4, arg5, arg6 - ) - return rebind[type](None) - else: - return __mlir_op.`pop.external_call`[func : callee.value, _type:type]( - arg0, arg1, arg2, arg3, arg4, arg5, arg6 - ) - - -# --- ( Network Related Constants )--------------------------------------------- -alias sa_family_t = c_ushort -alias socklen_t = c_uint -alias in_addr_t = c_uint -alias in_port_t = c_ushort - -# Address Family Constants -alias AF_UNSPEC = 0 -alias AF_UNIX = 1 -alias AF_LOCAL = AF_UNIX -alias AF_INET = 2 -alias AF_AX25 = 3 -alias AF_IPX = 4 -alias AF_APPLETALK = 5 -alias AF_NETROM = 6 -alias AF_BRIDGE = 7 -alias AF_ATMPVC = 8 -alias AF_X25 = 9 -alias AF_INET6 = 10 -alias AF_ROSE = 11 -alias AF_DECnet = 12 -alias AF_NETBEUI = 13 -alias AF_SECURITY = 14 -alias AF_KEY = 15 -alias AF_NETLINK = 16 -alias AF_ROUTE = AF_NETLINK -alias AF_PACKET = 17 -alias AF_ASH = 18 -alias AF_ECONET = 19 -alias AF_ATMSVC = 20 -alias AF_RDS = 21 -alias AF_SNA = 22 -alias AF_IRDA = 23 -alias AF_PPPOX = 24 -alias AF_WANPIPE = 25 -alias AF_LLC = 26 -alias AF_CAN = 29 -alias AF_TIPC = 30 -alias AF_BLUETOOTH = 31 -alias AF_IUCV = 32 -alias AF_RXRPC = 33 -alias AF_ISDN = 34 -alias AF_PHONET = 35 -alias AF_IEEE802154 = 36 -alias AF_CAIF = 37 -alias AF_ALG = 38 -alias AF_NFC = 39 -alias AF_VSOCK = 40 -alias AF_KCM = 41 -alias AF_QIPCRTR = 42 -alias AF_MAX = 43 - -alias PF_UNSPEC = AF_UNSPEC -alias PF_UNIX = AF_UNIX -alias PF_LOCAL = AF_LOCAL -alias PF_INET = AF_INET -alias PF_AX25 = AF_AX25 -alias PF_IPX = AF_IPX -alias PF_APPLETALK = AF_APPLETALK -alias PF_NETROM = AF_NETROM -alias PF_BRIDGE = AF_BRIDGE -alias PF_ATMPVC = AF_ATMPVC -alias PF_X25 = AF_X25 -alias PF_INET6 = AF_INET6 -alias PF_ROSE = AF_ROSE -alias PF_DECnet = AF_DECnet -alias PF_NETBEUI = AF_NETBEUI -alias PF_SECURITY = AF_SECURITY -alias PF_KEY = AF_KEY -alias PF_NETLINK = AF_NETLINK -alias PF_ROUTE = AF_ROUTE -alias PF_PACKET = AF_PACKET -alias PF_ASH = AF_ASH -alias PF_ECONET = AF_ECONET -alias PF_ATMSVC = AF_ATMSVC -alias PF_RDS = AF_RDS -alias PF_SNA = AF_SNA -alias PF_IRDA = AF_IRDA -alias PF_PPPOX = AF_PPPOX -alias PF_WANPIPE = AF_WANPIPE -alias PF_LLC = AF_LLC -alias PF_CAN = AF_CAN -alias PF_TIPC = AF_TIPC -alias PF_BLUETOOTH = AF_BLUETOOTH -alias PF_IUCV = AF_IUCV -alias PF_RXRPC = AF_RXRPC -alias PF_ISDN = AF_ISDN -alias PF_PHONET = AF_PHONET -alias PF_IEEE802154 = AF_IEEE802154 -alias PF_CAIF = AF_CAIF -alias PF_ALG = AF_ALG -alias PF_NFC = AF_NFC -alias PF_VSOCK = AF_VSOCK -alias PF_KCM = AF_KCM -alias PF_QIPCRTR = AF_QIPCRTR -alias PF_MAX = AF_MAX - -# Socket Type constants -alias SOCK_STREAM = 1 -alias SOCK_DGRAM = 2 -alias SOCK_RAW = 3 -alias SOCK_RDM = 4 -alias SOCK_SEQPACKET = 5 -alias SOCK_DCCP = 6 -alias SOCK_PACKET = 10 -# alias SOCK_CLOEXEC = O_CLOEXEC -# alias SOCK_NONBLOCK = O_NONBLOCK - -# Address Information -alias AI_PASSIVE = 1 -alias AI_CANONNAME = 2 -alias AI_NUMERICHOST = 4 -alias AI_V4MAPPED = 8 -alias AI_ALL = 16 -alias AI_ADDRCONFIG = 32 -alias AI_IDN = 64 - -alias INET_ADDRSTRLEN = 16 -alias INET6_ADDRSTRLEN = 46 - -alias SHUT_RD = 0 -alias SHUT_WR = 1 -alias SHUT_RDWR = 2 - - -alias SOL_SOCKET = 1 - -alias SO_DEBUG = 1 -alias SO_REUSEADDR = 2 -alias SO_TYPE = 3 -alias SO_ERROR = 4 -alias SO_DONTROUTE = 5 -alias SO_BROADCAST = 6 -alias SO_SNDBUF = 7 -alias SO_RCVBUF = 8 -alias SO_KEEPALIVE = 9 -alias SO_OOBINLINE = 10 -alias SO_NO_CHECK = 11 -alias SO_PRIORITY = 12 -alias SO_LINGER = 13 -alias SO_BSDCOMPAT = 14 -alias SO_REUSEPORT = 15 -alias SO_PASSCRED = 16 -alias SO_PEERCRED = 17 -alias SO_RCVLOWAT = 18 -alias SO_SNDLOWAT = 19 -alias SO_RCVTIMEO = 20 -alias SO_SNDTIMEO = 21 -# alias SO_RCVTIMEO_OLD = 20 -# alias SO_SNDTIMEO_OLD = 21 -alias SO_SECURITY_AUTHENTICATION = 22 -alias SO_SECURITY_ENCRYPTION_TRANSPORT = 23 -alias SO_SECURITY_ENCRYPTION_NETWORK = 24 -alias SO_BINDTODEVICE = 25 -alias SO_ATTACH_FILTER = 26 -alias SO_DETACH_FILTER = 27 -alias SO_GET_FILTER = SO_ATTACH_FILTER -alias SO_PEERNAME = 28 -alias SO_TIMESTAMP = 29 -# alias SO_TIMESTAMP_OLD = 29 -alias SO_ACCEPTCONN = 30 -alias SO_PEERSEC = 31 -alias SO_SNDBUFFORCE = 32 -alias SO_RCVBUFFORCE = 33 -alias SO_PASSSEC = 34 -alias SO_TIMESTAMPNS = 35 -# alias SO_TIMESTAMPNS_OLD = 35 -alias SO_MARK = 36 -alias SO_TIMESTAMPING = 37 -# alias SO_TIMESTAMPING_OLD = 37 -alias SO_PROTOCOL = 38 -alias SO_DOMAIN = 39 -alias SO_RXQ_OVFL = 40 -alias SO_WIFI_STATUS = 41 -alias SCM_WIFI_STATUS = SO_WIFI_STATUS -alias SO_PEEK_OFF = 42 -alias SO_NOFCS = 43 -alias SO_LOCK_FILTER = 44 -alias SO_SELECT_ERR_QUEUE = 45 -alias SO_BUSY_POLL = 46 -alias SO_MAX_PACING_RATE = 47 -alias SO_BPF_EXTENSIONS = 48 -alias SO_INCOMING_CPU = 49 -alias SO_ATTACH_BPF = 50 -alias SO_DETACH_BPF = SO_DETACH_FILTER -alias SO_ATTACH_REUSEPORT_CBPF = 51 -alias SO_ATTACH_REUSEPORT_EBPF = 52 -alias SO_CNX_ADVICE = 53 -alias SCM_TIMESTAMPING_OPT_STATS = 54 -alias SO_MEMINFO = 55 -alias SO_INCOMING_NAPI_ID = 56 -alias SO_COOKIE = 57 -alias SCM_TIMESTAMPING_PKTINFO = 58 -alias SO_PEERGROUPS = 59 -alias SO_ZEROCOPY = 60 -alias SO_TXTIME = 61 -alias SCM_TXTIME = SO_TXTIME -alias SO_BINDTOIFINDEX = 62 -alias SO_TIMESTAMP_NEW = 63 -alias SO_TIMESTAMPNS_NEW = 64 -alias SO_TIMESTAMPING_NEW = 65 -alias SO_RCVTIMEO_NEW = 66 -alias SO_SNDTIMEO_NEW = 67 -alias SO_DETACH_REUSEPORT_BPF = 68 - - -# --- ( Network Related Structs )----------------------------------------------- -@value -@register_passable("trivial") -struct in_addr: - var s_addr: in_addr_t - - -@value -@register_passable("trivial") -struct in6_addr: - var s6_addr: StaticTuple[16, c_char] - - -@value -@register_passable("trivial") -struct sockaddr: - var sa_family: sa_family_t - var sa_data: StaticTuple[14, c_char] - - -@value -@register_passable("trivial") -struct sockaddr_in: - var sin_family: sa_family_t - var sin_port: in_port_t - var sin_addr: in_addr - var sin_zero: StaticTuple[8, c_char] - - -@value -@register_passable("trivial") -struct sockaddr_in6: - var sin6_family: sa_family_t - var sin6_port: in_port_t - var sin6_flowinfo: c_uint - var sin6_addr: in6_addr - var sin6_scope_id: c_uint - - -@value -@register_passable("trivial") -struct addrinfo: - var ai_flags: c_int - var ai_family: c_int - var ai_socktype: c_int - var ai_protocol: c_int - var ai_addrlen: socklen_t - var ai_addr: Pointer[sockaddr] - var ai_canonname: Pointer[c_char] - # FIXME(cristian): This should be Pointer[addrinfo] - var ai_next: Pointer[c_void] - - fn __init__() -> Self: - return Self( - 0, 0, 0, 0, 0, Pointer[sockaddr](), Pointer[c_char](), Pointer[c_void]() - ) - - -fn strlen(s: Pointer[c_char]) -> c_size_t: - """Libc POSIX `strlen` function. - - Reference: https://man7.org/linux/man-pages/man3/strlen.3p.html - Fn signature: size_t strlen(const char *s) - - Args: s: A pointer to a C string. - Returns: The length of the string.""" - return external_call["strlen", c_size_t, Pointer[c_char]](s) - - -# --- ( Network Related Syscalls & Structs )------------------------------------ - - -fn htonl(hostlong: c_uint) -> c_uint: - """Libc POSIX `htonl` function. - - Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html - Fn signature: uint32_t htonl(uint32_t hostlong) - - Args: hostlong: A 32-bit unsigned integer in host byte order. - Returns: A 32-bit unsigned integer in network byte order.""" - return external_call["htonl", c_uint, c_uint](hostlong) - - -fn htons(hostshort: c_ushort) -> c_ushort: - """Libc POSIX `htons` function. - - Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html - Fn signature: uint16_t htons(uint16_t hostshort) - - Args: - hostshort: A 16-bit unsigned integer in host byte order. - Returns: A 16-bit unsigned integer in network byte order. - """ - return external_call["htons", c_ushort, c_ushort](hostshort) - - -fn ntohl(netlong: c_uint) -> c_uint: - """Libc POSIX `ntohl` function. - - Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html - Fn signature: uint32_t ntohl(uint32_t netlong) - - Args: - netlong: A 32-bit unsigned integer in network byte order. - Returns: A 32-bit unsigned integer in host byte order. - """ - return external_call["ntohl", c_uint, c_uint](netlong) - - -fn ntohs(netshort: c_ushort) -> c_ushort: - """Libc POSIX `ntohs` function. - - Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html - Fn signature: uint16_t ntohs(uint16_t netshort) - - Args: - netshort: A 16-bit unsigned integer in network byte order. - Returns: A 16-bit unsigned integer in host byte order. - """ - return external_call["ntohs", c_ushort, c_ushort](netshort) - - -fn inet_ntop( - af: c_int, src: Pointer[c_void], dst: Pointer[c_char], size: socklen_t -) -> Pointer[c_char]: - """Libc POSIX `inet_ntop` function. - - Reference: https://man7.org/linux/man-pages/man3/inet_ntop.3p.html. - Fn signature: const char *inet_ntop(int af, const void *restrict src, char *restrict dst, socklen_t size) - - Args: - af: Address Family see AF_ alises. - src: A pointer to a binary address. - dst: A pointer to a buffer to store the string representation of the address. - size: The size of the buffer pointed by dst. - - Returns: A pointer. - """ - return external_call[ - "inet_ntop", - Pointer[c_char], # FnName, RetType - c_int, - Pointer[c_void], - Pointer[c_char], - socklen_t, # Args - ](af, src, dst, size) - - -fn inet_pton(af: c_int, src: Pointer[c_char], dst: Pointer[c_void]) -> c_int: - """Libc POSIX `inet_pton` function. - - Reference: https://man7.org/linux/man-pages/man3/inet_ntop.3p.html - Fn signature: int inet_pton(int af, const char *restrict src, void *restrict dst) - - Args: - af: Address Family see AF_ alises. - src: A pointer to a string representation of an address. - dst: A pointer to a buffer to store the binary address. - Returns: A pointer. - """ - return external_call[ - "inet_pton", - c_int, # FnName, RetType - c_int, - Pointer[c_char], - Pointer[c_void], # Args - ](af, src, dst) - - -fn inet_addr(cp: Pointer[c_char]) -> in_addr_t: - """Libc POSIX `inet_addr` function. - - Reference: https://man7.org/linux/man-pages/man3/inet_addr.3p.html - Fn signature: in_addr_t inet_addr(const char *cp) - - Args: - cp: A pointer to a string representation of an address. - Returns: A pointer. - """ - return external_call["inet_addr", in_addr_t, Pointer[c_char]](cp) - - -fn inet_ntoa(addr: in_addr) -> Pointer[c_char]: - """Libc POSIX `inet_ntoa` function. - - Reference: https://man7.org/linux/man-pages/man3/inet_addr.3p.html - Fn signature: char *inet_ntoa(struct in_addr in) - - Args: in: A pointer to a binary address. - Returns: A pointer. - """ - return external_call["inet_ntoa", Pointer[c_char], in_addr](addr) - - -fn socket(domain: c_int, type: c_int, protocol: c_int) -> c_int: - """Libc POSIX `socket` function. - - Reference: https://man7.org/linux/man-pages/man3/socket.3p.html - Fn signature: int socket(int domain, int type, int protocol) - - Args: - domain: Address Family see AF_ alises. - type: Socket Type see SOCK_ alises. - protocol: Protocol see IPPROTO_ alises. - Returns: A pointer to a socket. - """ - return external_call[ - "socket", c_int, c_int, c_int, c_int # FnName, RetType # Args - ](domain, type, protocol) - - -fn setsockopt( - socket: c_int, - level: c_int, - option_name: c_int, - option_value: Pointer[c_void], - option_len: socklen_t, -) -> c_int: - """Libc POSIX `setsockopt` function. - - Reference: https://man7.org/linux/man-pages/man3/setsockopt.3p.html - Fn signature: int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len) - - Args: - socket: A pointer to a socket. - level: Protocol Level see SOL_ alises. - option_name: Option name see SO_ alises. - option_value: A pointer to a buffer containing the option value. - option_len: The size of the buffer pointed by option_value. - Returns: A pointer to a socket opt. - """ - return external_call[ - "setsockopt", - c_int, # FnName, RetType - c_int, - c_int, - c_int, - Pointer[c_void], - socklen_t, # Args - ](socket, level, option_name, option_value, option_len) - - -fn bind(socket: c_int, address: Pointer[sockaddr], address_len: socklen_t) -> c_int: - """Libc POSIX `bind` function. - - Reference: https://man7.org/linux/man-pages/man3/bind.3p.html - Fn signature: int bind(int socket, const struct sockaddr *address, socklen_t address_len) - """ - return external_call[ - "bind", c_int, c_int, Pointer[sockaddr], socklen_t # FnName, RetType # Args - ](socket, address, address_len) - - -fn listen(socket: c_int, backlog: c_int) -> c_int: - """Libc POSIX `listen` function. - - Reference: https://man7.org/linux/man-pages/man3/listen.3p.html - Fn signature: int listen(int socket, int backlog) - - Args: - socket: A pointer to a socket. - backlog: The maximum length to which the queue of pending connections for socket may grow. - Returns: A pointer to a socket. - """ - return external_call["listen", c_int, c_int, c_int](socket, backlog) - - -fn accept( - socket: c_int, address: Pointer[sockaddr], address_len: Pointer[socklen_t] -) -> c_int: - """Libc POSIX `accept` function. - - Reference: https://man7.org/linux/man-pages/man3/accept.3p.html - Fn signature: int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len); - - Args: - socket: A pointer to a socket. - address: A pointer to a buffer to store the address of the accepted socket. - address_len: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A pointer to a socket. - """ - return external_call[ - "accept", - c_int, # FnName, RetType - c_int, - Pointer[sockaddr], - Pointer[socklen_t], # Args - ](socket, address, address_len) - - -fn connect(socket: c_int, address: Pointer[sockaddr], address_len: socklen_t) -> c_int: - """Libc POSIX `connect` function. - - Reference: https://man7.org/linux/man-pages/man3/connect.3p.html - Fn signature: int connect(int socket, const struct sockaddr *address, socklen_t address_len) - - Args: - socket: A pointer to a socket. - address: A pointer to a buffer to store the address of the accepted socket. - address_len: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A pointer to a socket. - """ - return external_call[ - "connect", c_int, c_int, Pointer[sockaddr], socklen_t # FnName, RetType # Args - ](socket, address, address_len) - - -fn recv( - socket: c_int, buffer: Pointer[c_void], length: c_size_t, flags: c_int -) -> c_ssize_t: - """Libc POSIX `recv` function. - - Reference: https://man7.org/linux/man-pages/man3/recv.3p.html - Fn signature: ssize_t recv(int socket, void *buffer, size_t length, int flags) - """ - return external_call[ - "recv", - c_ssize_t, # FnName, RetType - c_int, - Pointer[c_void], - c_size_t, - c_int, # Args - ](socket, buffer, length, flags) - - -fn recvfrom( - socket: c_int, - buffer: Pointer[c_void], - length: c_size_t, - flags: c_int, - address: Pointer[sockaddr], - address_len: Pointer[socklen_t], -) -> c_ssize_t: - """Libc POSIX `recvfrom` function. - - Reference: https://man7.org/linux/man-pages/man3/recvfrom.3p.html - Fn signature: ssize_t recvfrom(int socket, void *restrict buffer, size_t length, int flags, struct sockaddr *restrict address, socklen_t *restrict address_len) - """ - return external_call6[ - "recvfrom", - c_ssize_t, # FnName, RetType - c_int, - Pointer[c_void], - c_size_t, - c_int, - Pointer[sockaddr], # Args - Pointer[socklen_t], # Args - ](socket, buffer, length, flags, address, address_len) - - -fn send( - socket: c_int, buffer: Pointer[c_void], length: c_size_t, flags: c_int -) -> c_ssize_t: - """Libc POSIX `send` function. - - Reference: https://man7.org/linux/man-pages/man3/send.3p.html - Fn signature: ssize_t send(int socket, const void *buffer, size_t length, int flags) - - Args: - socket: A pointer to a socket. - buffer: A pointer to a buffer to store the address of the accepted socket. - length: A pointer to a buffer to store the length of the address of the accepted socket. - flags: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A pointer to a socket. - """ - return external_call[ - "send", - c_ssize_t, # FnName, RetType - c_int, - Pointer[c_void], - c_size_t, - c_int, # Args - ](socket, buffer, length, flags) - - -fn sendto( - socket: c_int, - message: Pointer[c_void], - length: c_size_t, - flags: c_int, - dest_addr: Pointer[sockaddr], - dest_len: socklen_t, -) -> c_ssize_t: - """Libc POSIX `sendto` function. - - Reference: https://man7.org/linux/man-pages/man3/sendto.3p.html - Fn signature: ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len) - - Args: - socket: A pointer to a socket. - message: A pointer to a buffer to store the address of the accepted socket. - length: A pointer to a buffer to store the length of the address of the accepted socket. - flags: A pointer to a buffer to store the length of the address of the accepted socket. - dest_addr: A pointer to a buffer to store the length of the address of the accepted socket. - dest_len: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A pointer to a socket. - """ - return external_call6[ - "sendto", - c_ssize_t, # FnName, RetType - c_int, - Pointer[c_void], - c_size_t, - c_int, - Pointer[sockaddr], - socklen_t, # Args - ](socket, message, length, flags, dest_addr, dest_len) - - -fn shutdown(socket: c_int, how: c_int) -> c_int: - """Libc POSIX `shutdown` function. - - Reference: https://man7.org/linux/man-pages/man3/shutdown.3p.html - Fn signature: int shutdown(int socket, int how) - - Args: - socket: A pointer to a socket. - how: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A pointer to a socket. - """ - return external_call["shutdown", c_int, c_int, c_int]( # FnName, RetType # Args - socket, how - ) - - -fn getaddrinfo( - nodename: Pointer[c_char], - servname: Pointer[c_char], - hints: Pointer[addrinfo], - res: Pointer[Pointer[addrinfo]], -) -> c_int: - """Libc POSIX `getaddrinfo` function. - - Reference: https://man7.org/linux/man-pages/man3/getaddrinfo.3p.html - Fn signature: int getaddrinfo(const char *restrict nodename, const char *restrict servname, const struct addrinfo *restrict hints, struct addrinfo **restrict res) - """ - return external_call[ - "getaddrinfo", - c_int, # FnName, RetType - Pointer[c_char], - Pointer[c_char], - Pointer[addrinfo], # Args - Pointer[Pointer[addrinfo]], # Args - ](nodename, servname, hints, res) - - -fn gai_strerror(ecode: c_int) -> Pointer[c_char]: - """Libc POSIX `gai_strerror` function. - - Reference: https://man7.org/linux/man-pages/man3/gai_strerror.3p.html - Fn signature: const char *gai_strerror(int ecode) - - Args: - ecode: A pointer to a socket. - Returns: A pointer to a socket. - """ - return external_call[ - "gai_strerror", Pointer[c_char], c_int # FnName, RetType # Args - ](ecode) - - -# fn get_addr(ptr: Pointer[sockaddr]) -> sockaddr: -# if ptr.load().sa_family == AF_INET: -# ptr.bitcast[sockaddr_in]().load().sin_addr -# return ptr.bitcast[sockaddr_in6]().load().sin6_addr - - -fn inet_pton(address_family: Int, address: String) -> Int: - var ip_buf_size = 4 - if address_family == AF_INET6: - ip_buf_size = 16 - - let ip_buf = Pointer[c_void].alloc(ip_buf_size) - let conv_status = inet_pton( - rebind[c_int](address_family), to_char_ptr(address), ip_buf - ) - return ip_buf.bitcast[c_uint]().load().to_int() - - -# --- ( File Related Syscalls & Structs )--------------------------------------- -alias off_t = Int64 -alias mode_t = UInt32 - -alias FM_READ = "r" -alias FM_WRITE = "w" -alias FM_APPEND = "a" -alias FM_BINARY = "b" -alias FM_PLUS = "+" - -alias SEEK_SET = 0 -alias SEEK_CUR = 1 -alias SEEK_END = 2 - -alias O_RDONLY = 0 -alias O_WRONLY = 1 -alias O_RDWR = 2 -alias O_APPEND = 8 -alias O_CREAT = 512 -alias O_TRUNC = 1024 -alias O_EXCL = 2048 -alias O_SYNC = 8192 -alias O_NONBLOCK = 16384 -alias O_ACCMODE = 3 -alias O_CLOEXEC = 524288 - -# from fcntl.h -alias O_EXEC = -1 -alias O_SEARCH = -1 -alias O_DIRECTORY = -1 -alias O_DSYNC = -1 -alias O_NOCTTY = -1 -alias O_NOFOLLOW = -1 -alias O_RSYNC = -1 -alias O_TTY_INIT = -1 - -alias STDIN_FILENO = 0 -alias STDOUT_FILENO = 1 -alias STDERR_FILENO = 2 - -alias F_DUPFD = 0 -alias F_GETFD = 1 -alias F_SETFD = 2 -alias F_GETFL = 3 -alias F_SETFL = 4 -alias F_GETOWN = 5 -alias F_SETOWN = 6 -alias F_GETLK = 7 -alias F_SETLK = 8 -alias F_SETLKW = 9 -alias F_RGETLK = 10 -alias F_RSETLK = 11 -alias F_CNVT = 12 -alias F_RSETLKW = 13 -alias F_DUPFD_CLOEXEC = 14 - -# TODO(cristian) -alias FD_CLOEXEC = -1 -alias F_RDLCK = -1 -alias F_UNLCK = -1 -alias F_WRLCK = -1 - -alias AT_EACCESS = 512 -alias AT_FDCWD = -100 -alias AT_SYMLINK_NOFOLLOW = 256 -alias AT_REMOVEDIR = 512 -alias AT_SYMLINK_FOLLOW = 1024 -alias AT_NO_AUTOMOUNT = 2048 -alias AT_EMPTY_PATH = 4096 -alias AT_RECURSIVE = 32768 - - -@register_passable("trivial") -struct FILE: - pass - - -fn fcntl[*T: AnyType](fildes: c_int, cmd: c_int, *args: *T) -> c_int: - """Libc POSIX `fcntl` function. - - Reference: https://man7.org/linux/man-pages/man3/close.3p.html - - Fn signature: int fcntl(int fildes, int cmd, ...) - Args: - fildes: A File Descriptor to close. - cmd: A command to execute. - args: Arguments for the command, args: Arguments for the command. - Returns: Upon successful completion,0 shall be returned; - otherwise, -1 shall be returned and errno set to indicate the error. - """ - return external_call["fcntl", c_int, c_int, c_int]( # FnName, RetType # Args - fildes, cmd, args - ) - - -fn close(fildes: c_int) -> c_int: - """Libc POSIX `close` function. - - Reference: https://man7.org/linux/man-pages/man3/close.3p.html - Fn signature: int close(int fildes) - - Args: - fildes: A File Descriptor to close. - Returns: Upon successful completion, 0 shall be returned; otherwise, -1 - shall be returned and errno set to indicate the error. - """ - return external_call["close", c_int, c_int](fildes) - - -fn open[*T: AnyType](path: Pointer[c_char], oflag: c_int, *args: *T) -> c_int: - """Libc POSIX `open` function. - - Reference: https://man7.org/linux/man-pages/man3/open.3p.html - Fn signature: int open(const char *path, int oflag, ...) - - Args: - path: A path to a file. - oflag: A flag to open the file with. - args: Arguments. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "open", c_int, Pointer[c_char], c_int # FnName, RetType # Args - ](path, oflag, args) - - -fn openat[ - *T: AnyType -](fd: c_int, path: Pointer[c_char], oflag: c_int, *args: *T) -> c_int: - """Libc POSIX `open` function. - - Reference: https://man7.org/linux/man-pages/man3/open.3p.html - Fn signature: int openat(int fd, const char *path, int oflag, ...) - - Args: - fd: A File Descriptor to open the file with. - path: A path to a file. - oflag: A flag to open the file with. - args: Arguments. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "openat", c_int, c_int, Pointer[c_char], c_int # FnName, RetType # Args - ](fd, path, oflag, args) - - -fn fopen(pathname: Pointer[c_char], mode: Pointer[c_char]) -> Pointer[FILE]: - """Libc POSIX `fopen` function. - - Reference: https://man7.org/linux/man-pages/man3/fopen.3p.html - Fn signature: FILE *fopen(const char *restrict pathname, const char *restrict mode) - - Args: - pathname: A path to a file. - mode: A mode to open the file with. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fopen", - Pointer[FILE], # FnName, RetType - Pointer[c_char], - Pointer[c_char], # Args - ](pathname, mode) - - -fn fdopen(fildes: c_int, mode: Pointer[c_char]) -> Pointer[FILE]: - """Libc POSIX `fdopen` function. - - Reference: https://man7.org/linux/man-pages/man3/fdopen.3p.html - Fn signature: FILE *fdopen(int fildes, const char *mode) - - Args: - fildes: A File Descriptor to open the file with. - mode: A mode to open the file with. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fdopen", Pointer[FILE], c_int, Pointer[c_char] # FnName, RetType # Args - ](fildes, mode) - - -fn freopen( - pathname: Pointer[c_char], mode: Pointer[c_char], stream: Pointer[FILE] -) -> Pointer[FILE]: - """Libc POSIX `freopen` function. - - Reference: https://man7.org/linux/man-pages/man3/freopen.3p.html - Fn signature: FILE *freopen(const char *restrict pathname, const char *restrict mode, FILE *restrict stream) - - Args: - pathname: A path to a file. - mode: A mode to open the file with. - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "freopen", - Pointer[FILE], # FnName, RetType - Pointer[c_char], - Pointer[c_char], - Pointer[FILE], # Args - ](pathname, mode, stream) - - -fn fmemopen( - buf: Pointer[c_void], size: c_size_t, mode: Pointer[c_char] -) -> Pointer[FILE]: - """Libc POSIX `fmemopen` function. - - Reference: https://man7.org/linux/man-pages/man3/fmemopen.3p.html - Fn signature: FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode) - - Args: - buf: A pointer to a buffer. - size: The size of the buffer. - mode: A mode to open the file with. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fmemopen", - Pointer[FILE], # FnName, RetType - Pointer[c_void], - c_size_t, - Pointer[c_char], # Args - ](buf, size, mode) - - -fn creat(path: Pointer[c_char], mode: mode_t) -> c_int: - """Libc POSIX `creat` function. - - Reference: https://man7.org/linux/man-pages/man3/creat.3p.html - Fn signature: int creat(const char *path, mode_t mode) - - Args: - path: A path to a file. - mode: A mode to open the file with. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "creat", c_int, Pointer[c_char], mode_t # FnName, RetType # Args - ](path, mode) - - -fn fseek(stream: Pointer[FILE], offset: c_long, whence: c_int) -> c_int: - """Libc POSIX `fseek` function. - - Reference: https://man7.org/linux/man-pages/man3/fseek.3p.html - Fn signature: int fseek(FILE *stream, long offset, int whence) - - Args: - stream: A pointer to a stream. - offset: An offset to seek to. - whence: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fseek", c_int, Pointer[FILE], c_long, c_int # FnName, RetType # Args - ](stream, offset, whence) - - -fn fseeko(stream: Pointer[FILE], offset: off_t, whence: c_int) -> c_int: - """Libc POSIX `fseeko` function. - - Reference: https://man7.org/linux/man-pages/man3/fseek.3p.html - Fn signature: int fseeko(FILE *stream, off_t offset, int whence) - - Args: - stream: A pointer to a stream. - offset: An offset to seek to. - whence: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fseeko", c_int, Pointer[FILE], off_t, c_int # FnName, RetType # Args - ](stream, offset, whence) - - -fn lseek(fildes: c_int, offset: off_t, whence: c_int) -> off_t: - """Libc POSIX `lseek` function. - - Reference: https://man7.org/linux/man-pages/man3/lseek.3p.html - Fn signature: off_t lseek(int fildes, off_t offset, int whence) - - Args: - fildes: A File Descriptor to open the file with. - offset: An offset to seek to. - whence: A pointer to a buffer to store the length of the address of the accepted socket. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "lseek", off_t, c_int, off_t, c_int # FnName, RetType # Args - ](fildes, offset, whence) - - -fn fputc(c: c_int, stream: Pointer[FILE]) -> c_int: - """Libc POSIX `fputc` function. - - Reference: https://man7.org/linux/man-pages/man3/fputc.3p.html - Fn signature: int fputc(int c, FILE *stream) - - Args: - c: A character to write. - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fputc", c_int, c_int, Pointer[FILE] # FnName, RetType # Args - ](c, stream) - - -fn fputs(s: Pointer[c_char], stream: Pointer[FILE]) -> c_int: - """Libc POSIX `fputs` function. - - Reference: https://man7.org/linux/man-pages/man3/fputs.3p.html - Fn signature: int fputs(const char *restrict s, FILE *restrict stream) - - Args: - s: A string to write. - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fputs", c_int, Pointer[c_char], Pointer[FILE] # FnName, RetType # Args - ](s, stream) - - -fn fgetc(stream: Pointer[FILE]) -> c_int: - """Libc POSIX `fgetc` function. - - Reference: https://man7.org/linux/man-pages/man3/fgetc.3p.html - Fn signature: int fgetc(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["fgets", c_int, Pointer[FILE]]( # FnName, RetType # Args - stream - ) - - -fn fgets(s: Pointer[c_char], n: c_int, stream: Pointer[FILE]) -> Pointer[c_char]: - """Libc POSIX `fgets` function. - - Reference: https://man7.org/linux/man-pages/man3/fgets.3p.html - Fn signature: char *fgets(char *restrict s, int n, FILE *restrict stream) - - Args: - s: A pointer to a buffer to store the read string. - n: The maximum number of characters to read. - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fgets", - Pointer[c_char], # FnName, RetType - Pointer[c_char], - c_int, - Pointer[FILE], # Args - ](s, n, stream) - - -fn dprintf[*T: AnyType](fildes: c_int, format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `dprintf` function. - - Reference: https://man7.org/linux/man-pages/man3/fprintf.3p.html - Fn signature: int dprintf(int fildes, const char *restrict format, ...) - - Args: - fildes: A File Descriptor to open the file with. - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "dprintf", c_int, c_int, Pointer[c_char] # FnName, RetType # Args - ](fildes, format, args) - - -fn fprintf[ - *T: AnyType -](stream: Pointer[FILE], format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `fprintf` function. - - Reference: https://man7.org/linux/man-pages/man3/fprintf.3p.html - Fn signature: int fprintf(FILE *restrict stream, const char *restrict format, ...) - - Args: - stream: A pointer to a stream. - format: A format string. - args: Arguments for the format string. - Returns: - """ - return external_call[ - "fprintf", c_int, Pointer[FILE], Pointer[c_char] # FnName, RetType # Args - ](stream, format, args) - - -# printf's family function(s) this is used to implement the rest of the printf's family -fn _printf[callee: StringLiteral](format: Pointer[c_char]) -> c_int: - return external_call[callee, c_int, Pointer[c_char]](format) - - -fn _printf[ - callee: StringLiteral, T0: AnyType -](format: Pointer[c_char], arg0: T0) -> c_int: - return external_call[callee, c_int, Pointer[c_char], T0](format, arg0) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1) -> c_int: - return external_call[callee, c_int, Pointer[c_char], T0, T1](format, arg0, arg1) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType, T2: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2) -> c_int: - return external_call[callee, c_int, Pointer[c_char], T0, T1, T2]( - format, arg0, arg1, arg2 - ) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3) -> c_int: - return external_call[callee, c_int, Pointer[c_char], T0, T1, T2, T3]( - format, arg0, arg1, arg2, arg3 - ) - - -fn _printf[ - callee: StringLiteral, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4) -> c_int: - return external_call6[callee, c_int, Pointer[c_char], T0, T1, T2, T3, T4]( - format, arg0, arg1, arg2, arg3, arg4 - ) - - -fn _printf[ - callee: StringLiteral, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, - T5: AnyType, -]( - format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5 -) -> c_int: - return external_call7[callee, c_int, Pointer[c_char], T0, T1, T2, T3, T4, T5]( - format, arg0, arg1, arg2, arg3, arg4, arg5 - ) - - -fn _printf[callee: StringLiteral](format: String) -> c_int: - return _printf[callee](to_char_ptr(format)) - - -fn _printf[callee: StringLiteral, T0: AnyType](format: String, arg0: T0) -> c_int: - return _printf[callee, T0](to_char_ptr(format), arg0) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType -](format: String, arg0: T0, arg1: T1) -> c_int: - return _printf[callee, T0, T1](to_char_ptr(format), arg0, arg1) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType, T2: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2) -> c_int: - return _printf[callee, T0, T1, T2](to_char_ptr(format), arg0, arg1, arg2) - - -fn _printf[ - callee: StringLiteral, T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3) -> c_int: - return _printf[callee, T0, T1, T2, T3](to_char_ptr(format), arg0, arg1, arg2, arg3) - - -fn _printf[ - callee: StringLiteral, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4) -> c_int: - return _printf[callee, T0, T1, T2, T3, T4]( - to_char_ptr(format), arg0, arg1, arg2, arg3, arg4 - ) - - -fn _printf[ - callee: StringLiteral, - T0: AnyType, - T1: AnyType, - T2: AnyType, - T3: AnyType, - T4: AnyType, - T5: AnyType, -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) -> c_int: - return _printf[callee, T0, T1, T2, T3, T4, T5]( - to_char_ptr(format), arg0, arg1, arg2, arg3, arg4, arg5 - ) - - -fn printf(format: Pointer[c_char]) -> c_int: - return _printf["printf"](format) - - -fn printf[T0: AnyType](format: Pointer[c_char], arg0: T0) -> c_int: - return _printf["printf", T0](format, arg0) - - -fn printf[ - T0: AnyType, T1: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1) -> c_int: - return _printf["printf", T0, T1](format, arg0, arg1) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2) -> c_int: - return _printf["printf", T0, T1, T2](format, arg0, arg1, arg2) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3) -> c_int: - return _printf["printf", T0, T1, T2, T3](format, arg0, arg1, arg2, arg3) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType, T4: AnyType -](format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4) -> c_int: - return _printf["printf", T0, T1, T2, T3, T4](format, arg0, arg1, arg2, arg3, arg4) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType, T4: AnyType, T5: AnyType -]( - format: Pointer[c_char], arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5 -) -> c_int: - return _printf["printf", T0, T1, T2, T3, T4, T5]( - format, arg0, arg1, arg2, arg3, arg4, arg5 - ) - - -fn printf(format: String) -> c_int: - return _printf["printf"](format) - - -fn printf[T0: AnyType](format: String, arg0: T0) -> c_int: - return _printf["printf", T0](format, arg0) - - -fn printf[T0: AnyType, T1: AnyType](format: String, arg0: T0, arg1: T1) -> c_int: - return _printf["printf", T0, T1](format, arg0, arg1) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2) -> c_int: - return _printf["printf", T0, T1, T2](format, arg0, arg1, arg2) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3) -> c_int: - return _printf["printf", T0, T1, T2, T3](format, arg0, arg1, arg2, arg3) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType, T4: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4) -> c_int: - return _printf["printf", T0, T1, T2, T3, T4](format, arg0, arg1, arg2, arg3, arg4) - - -fn printf[ - T0: AnyType, T1: AnyType, T2: AnyType, T3: AnyType, T4: AnyType, T5: AnyType -](format: String, arg0: T0, arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) -> c_int: - return _printf["printf", T0, T1, T2, T3, T4, T5]( - format, arg0, arg1, arg2, arg3, arg4, arg5 - ) - - -fn snprintf[ - *T: AnyType -](s: Pointer[c_char], n: c_size_t, format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `snprintf` function. - - Reference: https://man7.org/linux/man-pages/man3/fprintf.3p.html - Fn signature: int snprintf(char *restrict s, size_t n, const char *restrict format, ...) - - Args: - s: A pointer to a buffer to store the read string. - n: The maximum number of characters to read. - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "snprintf", - c_int, # FnName, RetType - Pointer[c_char], - c_size_t, - Pointer[c_char], # Args - ](s, n, format, args) - - -fn sprintf[ - *T: AnyType -](s: Pointer[c_char], format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `sprintf` function. - - Reference: https://man7.org/linux/man-pages/man3/fprintf.3p.html - Fn signature: int sprintf(char *restrict s, const char *restrict format, ...) - - Args: - s: A pointer to a buffer to store the read string. - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "sprintf", c_int, Pointer[c_char], Pointer[c_char] # FnName, RetType # Args - ](s, format, args) - - -fn fscanf[ - *T: AnyType -](stream: Pointer[FILE], format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `fscanf` function. - - Reference: https://man7.org/linux/man-pages/man3/fscanf.3p.html - Fn signature: int fscanf(FILE *restrict stream, const char *restrict format, ...) - - Args: - stream: A pointer to a stream. - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fscanf", c_int, Pointer[FILE], Pointer[c_char] # FnName, RetType # Args - ](stream, format, args) - - -fn scanf[*T: AnyType](format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `scanf` function. - - Reference: https://man7.org/linux/man-pages/man3/fscanf.3p.html - Fn signature: int scanf(const char *restrict format, ...) - - Args: - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["scanf", c_int, Pointer[c_char]]( # FnName, RetType # Args - format, args - ) - - -fn sscanf[*T: AnyType](s: Pointer[c_char], format: Pointer[c_char], *args: *T) -> c_int: - """Libc POSIX `sscanf` function. - - Reference: https://man7.org/linux/man-pages/man3/fscanf.3p.html - Fn signature: int sscanf(const char *restrict s, const char *restrict format, ...) - - Args: - s: A pointer to a buffer to store the read string. - format: A format string. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "sscanf", c_int, Pointer[c_char], Pointer[c_char] # FnName, RetType # Args - ](s, format, args) - - -fn fread( - ptr: Pointer[c_void], size: c_size_t, nitems: c_size_t, stream: Pointer[FILE] -) -> c_int: - """Libc POSIX `fread` function. - - Reference: https://man7.org/linux/man-pages/man3/fread.3p.html - Fn signature: size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream) - - Args: - ptr: A pointer to a buffer to store the read string. - size: The size of the buffer. - nitems: The number of items to read. - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "fread", - c_size_t, # FnName, RetType - Pointer[c_void], - c_size_t, - c_size_t, - Pointer[FILE], # Args - ](ptr, size, nitems, stream) - - -fn rewind(stream: Pointer[FILE]) -> c_void: - """Libc POSIX `rewind` function. - - Reference: https://man7.org/linux/man-pages/man3/rewind.3p.html - Fn signature: void rewind(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: void - """ - return external_call["rewind", c_void, Pointer[FILE]](stream) - - -fn getline( - lineptr: Pointer[Pointer[FILE]], n: Pointer[c_size_t], stream: Pointer[FILE] -) -> c_ssize_t: - """Libc POSIX `getline` function. - - Reference: https://man7.org/linux/man-pages/man3/getline.3p.html - Fn signature: ssize_t getline(char **restrict lineptr, size_t *restrict n, FILE *restrict stream); - - Args: - lineptr: A pointer to a pointer to a buffer to store the read string. - n: A pointer to a buffer to store the length of the address of the accepted socket. - stream: A pointer to a stream. - Returns: Size of the lines read. - """ - return external_call[ - "getline", - c_ssize_t, # FnName, RetType - Pointer[Pointer[FILE]], - Pointer[c_size_t], - Pointer[FILE], # Args - ](lineptr, n, stream) - - -fn pread(fildes: c_int, buf: Pointer[c_void], nbyte: c_size_t, offset: off_t) -> c_int: - """Libc POSIX `pread` function. - - Reference: https://man7.org/linux/man-pages/man3/read.3p.html - Fn signature: ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset) - - Args: - fildes: A File Descriptor to open the file with. - buf: A pointer to a buffer to store the read string. - nbyte: The maximum number of characters to read. - offset: An offset to seek to. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["pread", c_ssize_t, c_int, Pointer[c_void], c_size_t, off_t]( - fildes, buf, nbyte, offset - ) - - -fn read(fildes: c_int, buf: Pointer[c_void], nbyte: c_size_t) -> c_int: - """Libc POSIX `read` function. - - Reference: https://man7.org/linux/man-pages/man3/read.3p.html - Fn signature: sssize_t read(int fildes, void *buf, size_t nbyte) - - Args: - fildes: A File Descriptor to open the file with. - buf: A pointer to a buffer to store the read string. - nbyte: The maximum number of characters to read. - Returns: Amount of bytes read. - """ - return external_call["read", c_ssize_t, c_int, Pointer[c_void], c_size_t]( - fildes, buf, nbyte - ) - - -fn pwrite(fildes: c_int, buf: Pointer[c_void], nbyte: c_size_t, offset: off_t) -> c_int: - """Libc POSIX `pwrite` function. - - Reference: https://man7.org/linux/man-pages/man3/write.3p.html - Fn signature: ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset) - - Args: - fildes: A File Descriptor to open the file with. - buf: A pointer to a buffer to store the read string. - nbyte: The maximum number of characters to read. - offset: An offset to seek to. - Returns: Amount of bytes written. - """ - return external_call["pwrite", c_ssize_t, c_int, Pointer[c_void], c_size_t, off_t]( - fildes, buf, nbyte, offset - ) - - -fn write(fildes: c_int, buf: Pointer[c_void], nbyte: c_size_t) -> c_int: - """Libc POSIX `write` function. - - Reference: https://man7.org/linux/man-pages/man3/write.3p.html - Fn signature: ssize_t write(int fildes, const void *buf, size_t nbyte); - - Args: - fildes: A File Descriptor to open the file with. - buf: A pointer to a buffer to store the read string. - nbyte: The maximum number of characters to read. - Returns: Amount of bytes written. - """ - return external_call["write", c_ssize_t, c_int, Pointer[c_void], c_size_t]( - fildes, buf, nbyte - ) - - -fn fclose(stream: Pointer[FILE]) -> c_int: - """Libc POSIX `fclose` function. - - Reference: https://man7.org/linux/man-pages/man3/fclose.3p.html - Fn signature: int fclose(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["fclose", c_int, Pointer[FILE]](stream) - - -fn ftell(stream: Pointer[FILE]) -> c_long: - """Libc POSIX `ftell` function. - - Reference: https://man7.org/linux/man-pages/man3/ftell.3p.html - Fn signature: long ftell(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: The current file position of the given stream. - """ - return external_call["ftell", c_long, Pointer[FILE]](stream) - - -fn ftello(stream: Pointer[FILE]) -> off_t: - """Libc POSIX `ftello` function. - - Reference: https://man7.org/linux/man-pages/man3/ftell.3p.html - Fn signature: off_t ftello(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: The current file position of the given stream. - """ - return external_call["ftello", off_t, Pointer[FILE]](stream) - - -# fn fflush(stream: Pointer[FILE]) -> c_int: -# """Libc POSIX `fflush` function. -# Reference: https://man7.org/linux/man-pages/man3/fflush.3p.html -# Fn signature: int fflush(FILE *stream) -# -# Args: -# stream -# -# Returns: -# """ -# return external_call["fflush", c_int, Pointer[FILE]](stream) -# - - -fn clearerr(stream: Pointer[FILE]) -> c_void: - """Libc POSIX `feof` function. - - Reference: https://man7.org/linux/man-pages/man3/clearerr.3p.html - Fn signature: void clearerr(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: void - """ - return external_call["clearerr", c_void, Pointer[FILE]](stream) - - -fn feof(stream: Pointer[FILE]) -> c_int: - """Libc POSIX `feof` function. - - Reference: https://man7.org/linux/man-pages/man3/feof.3p.html - Fn signature: int feof(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: 1 if the end-of-file indicator associated with the stream is set, else 0. - """ - return external_call["feof", c_int, Pointer[FILE]](stream) - - -fn ferror(stream: Pointer[FILE]) -> c_int: - """Libc POSIX `ferror` function. - - Reference: https://man7.org/linux/man-pages/man3/ferror.3p.html - Fn signature: int ferror(FILE *stream) - - Args: - stream: A pointer to a stream. - Returns: 1 if the error indicator associated with the stream is set, else 0. - """ - return external_call["ferror", c_int, Pointer[FILE]](stream) - - -fn ioctl[*T: AnyType](fildes: c_int, request: c_int, *args: *T) -> c_int: - """Libc POSIX `ioctl` function. - - Reference: https://man7.org/linux/man-pages/man3/ioctl.3p.html - Fn signature: int ioctl(int fildes, int request, ... /* arg */) - - TODO(cristian): add ioctl Options - Args: - fildes: A File Descriptor to open the file with. - request: An offset to seek to. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["ioctl", c_int, c_int, c_int]( # FnName, RetType # Args - fildes, request, args - ) - - -# --- ( Logging Syscalls ) ----------------------------------------------------- -alias LOG_PID = -1 -alias LOG_CONS = -1 -alias LOG_NDELAY = -1 -alias LOG_ODELAY = -1 -alias LOG_NOWAIT = -1 -alias LOG_KERN = -1 -alias LOG_USER = -1 -alias LOG_MAIL = -1 -alias LOG_NEWS = -1 -alias LOG_UUCP = -1 -alias LOG_DAEMON = -1 -alias LOG_AUTH = -1 -alias LOG_CRON = -1 -alias LOG_LPR = -1 -alias LOG_LOCAL0 = -1 -alias LOG_LOCAL1 = -1 -alias LOG_LOCAL2 = -1 -alias LOG_LOCAL3 = -1 -alias LOG_LOCAL4 = -1 -alias LOG_LOCAL5 = -1 -alias LOG_LOCAL6 = -1 -alias LOG_LOCAL7 = -1 -alias LOG_MASK = -1 # (pri) -alias LOG_EMERG = -1 -alias LOG_ALERT = -1 -alias LOG_CRIT = -1 -alias LOG_ERR = -1 -alias LOG_WARNING = -1 -alias LOG_NOTICE = -1 -alias LOG_INFO = -1 -alias LOG_DEBUG = -1 - - -fn openlog(ident: Pointer[c_char], logopt: c_int, facility: c_int) -> c_void: - """Libc POSIX `openlog` function. - - Reference: https://man7.org/linux/man-pages/man3/closelog.3p.html - Fn signature: void openlog(const char *ident, int logopt, int facility) - - Args: - ident: A File Descriptor to open the file with. - logopt: An offset to seek to. - facility: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "openlog", c_void, Pointer[c_char], c_int, c_int # FnName, RetType # Args - ](ident, logopt, facility) - - -fn syslog[*T: AnyType](priority: c_int, message: Pointer[c_char], *args: *T) -> c_void: - """Libc POSIX `syslog` function. - - Reference: https://man7.org/linux/man-pages/man3/closelog.3p.html - Fn signature: void syslog(int priority, const char *message, ... /* arguments */) - - Args: - priority: A File Descriptor to open the file with. - message: An offset to seek to. - args: Arguments for the format string. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call[ - "syslog", c_void, c_int, Pointer[c_char] # FnName, RetType # Args - ](priority, message, args) - - -fn setlogmask(maskpri: c_int) -> c_int: - """Libc POSIX `setlogmask` function. - - Reference: https://man7.org/linux/man-pages/man3/closelog.3p.html - Fn signature: int setlogmask(int maskpri) - - Args: - maskpri: A File Descriptor to open the file with. - Returns: A File Descriptor or -1 in case of failure - """ - return external_call["setlogmask", c_int, c_int](maskpri) # FnName, RetType # Args - - -fn closelog(): - """Libc POSIX `closelog` function. - - Reference: https://man7.org/linux/man-pages/man3/closelog.3p.html - Fn signature: void closelog(void) - """ - _ = external_call["closelog", c_void]() - - -# --- ( Testing Functions ) ---------------------------------------------------- - - -fn __test_getaddrinfo__(): - let ip_addr = "127.0.0.1" - let port = 8083 - - var servinfo = Pointer[addrinfo]().alloc(1) - servinfo.store(addrinfo()) - - var hints = addrinfo() - hints.ai_family = AF_INET - hints.ai_socktype = SOCK_STREAM - hints.ai_flags = AI_PASSIVE - # let hints_ptr = - - let status = getaddrinfo( - to_char_ptr(ip_addr), - Pointer[UInt8](), - Pointer.address_of(hints), - Pointer.address_of(servinfo), - ) - let msg_ptr = gai_strerror(c_int(status)) - _ = external_call["printf", c_int, Pointer[c_char], Pointer[c_char]]( - to_char_ptr("gai_strerror: %s"), msg_ptr - ) - # let msg = c_charptr_to_string(msg_ptr) - _ = printf("getaddrinfo satus: %d", msg_ptr) - # getaddrinfo() - - -fn __test_socket_client__(): - let ip_addr = "127.0.0.1" # The server's hostname or IP address - let port = 8083 # The port used by the server - let address_family = AF_INET - - let ip_buf = Pointer[c_void].alloc(4) - let conv_status = inet_pton(address_family, to_char_ptr(ip_addr), ip_buf) - let raw_ip = ip_buf.bitcast[c_uint]().load() - - _ = printf("inet_pton: %d :: status: %d\n", raw_ip, conv_status) - - let bin_port = htons(UInt16(port)) - _ = printf("htons: %d\n", bin_port) - - var ai = sockaddr_in(address_family, bin_port, raw_ip, StaticTuple[8, c_char]()) - let ai_ptr = Pointer[sockaddr_in].address_of(ai).bitcast[sockaddr]() - - let sockfd = socket(address_family, SOCK_STREAM, 0) - if sockfd == -1: - print("Socket creation error") - _ = printf("sockfd: %d\n", sockfd) - - if connect(sockfd, ai_ptr, sizeof[sockaddr_in]()) == -1: - _ = shutdown(sockfd, SHUT_RDWR) - - let msg = to_char_ptr("Hello, world Server") - let bytes_sent = send(sockfd, msg, strlen(msg), 0) - if bytes_sent == -1: - _ = shutdown(sockfd, SHUT_RDWR) - _ = printf("failed to send message\n") - - let buf_size = 1024 - var buf = Pointer[UInt8]().alloc(buf_size) - let bytes_recv = recv(sockfd, buf, buf_size, 0) - if bytes_recv == -1: - _ = shutdown(sockfd, SHUT_RDWR) - _ = printf("failed to receive message\n") - print("Recived Message: ") - print(String(buf.bitcast[Int8](), bytes_recv)) - - -fn __test_socket_server__() raises: - let ip_addr = "127.0.0.1" - let port = 8083 - - let address_family = AF_INET - var ip_buf_size = 4 - if address_family == AF_INET6: - ip_buf_size = 16 - - let ip_buf = Pointer[c_void].alloc(ip_buf_size) - let conv_status = inet_pton(address_family, to_char_ptr(ip_addr), ip_buf) - let raw_ip = ip_buf.bitcast[c_uint]().load() - - _ = printf("inet_pton: %d :: status: %d\n", raw_ip, conv_status) - - let bin_port = htons(UInt16(port)) - _ = printf("htons: %d\n", bin_port) - - var ai = sockaddr_in(address_family, bin_port, raw_ip, StaticTuple[8, c_char]()) - let ai_ptr = Pointer[sockaddr_in].address_of(ai).bitcast[sockaddr]() - - let sockfd = socket(address_family, SOCK_STREAM, 0) - if sockfd == -1: - print("Socket creation error") - _ = printf("sockfd: %d\n", sockfd) - - var yes: Int = 1 - if ( - setsockopt( - sockfd, - SOL_SOCKET, - SO_REUSEADDR, - Pointer[Int].address_of(yes).bitcast[c_void](), - sizeof[Int](), - ) - == -1 - ): - print("set socket options failed") - - if bind(sockfd, ai_ptr, sizeof[sockaddr_in]()) == -1: - # close(sockfd) - _ = shutdown(sockfd, SHUT_RDWR) - print("Binding socket failed") - - if listen(sockfd, c_int(128)) == -1: - _ = printf("Listen %d failed.\n", sockfd) - - _ = printf( - "server: started at %s : %d with fd %d – waiting for connections...\n", - ip_addr, - port, - sockfd, - ) - - let their_addr_ptr = Pointer[sockaddr].alloc(1) - var sin_size = socklen_t(sizeof[socklen_t]()) - let new_sockfd = accept( - sockfd, their_addr_ptr, Pointer[socklen_t].address_of(sin_size) - ) - if new_sockfd == -1: - print("Accept failed") - # close(sockfd) - _ = shutdown(sockfd, SHUT_RDWR) - - # inet_ntop(their_addr.ss_family, get_in_addr((struct sockaddr *)&their_addr), s, sizeof s); - # printf("server: got connection from %s\n", s); - - let msg = "Hello, Mojo!" - if send(new_sockfd, to_char_ptr(msg).bitcast[c_void](), len(msg), 0) == -1: - print("Failed to send response") - print("Message sent succesfully") - # close(new_fd) - _ = shutdown(sockfd, SHUT_RDWR) - # close(new_fd) - - -fn __test_file__(): - let fp = fopen(to_char_ptr("test.mojo"), to_char_ptr("r")) - - let buf_size = 1024 - var buf = Pointer[UInt8]().alloc(buf_size) - let status = fread(buf.bitcast[c_void](), buf_size, 1, fp) - - print(String(buf.bitcast[Int8](), buf_size)) - - _ = fclose(fp) - - -fn main(): - __test_getaddrinfo__() - __test_socket_client__() - - try: - __test_socket_server__() - except e: - print(e.value) - - __test_file__() diff --git a/magic.lock b/magic.lock new file mode 100644 index 0000000..2d2d8de --- /dev/null +++ b/magic.lock @@ -0,0 +1,5938 @@ +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.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.10.10-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/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.31-he1a10d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.4-hae4d56a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.29-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.19-h2bff981_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.3-h19b0707_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.10-h14a7884_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.19-hc9e6898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.7-hb8d5873_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.7-h666547d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-h2bff981_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.20-h2bff981_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.28.3-hbe26082_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.407-h25d6d5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_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.2-heb4867d_0.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-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.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_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.4-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/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.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.65.0-pyhd8ed1ab_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/httpcore-1.0.6-pyhd8ed1ab_0.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/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/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/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-had3b6fe_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hf54134d_16_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 + - 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/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/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.3-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/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/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-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/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.29.0-h435de7b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.29.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_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/liblapack-3.9.0-25_linux64_openblas.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_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h39682fd_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-hd5b35b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.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/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.20.0-h0e7cc3e_1.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/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/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-h064dc61_2.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.dev2024110305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024110305-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024110305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024110305-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.dev2024110305-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.15-py312h98912ed_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/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/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.48b0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.2-h669347b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.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/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.25.3-py312h83439f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h01725c0_2_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/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/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-pyhd8ed1ab_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-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/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/re2-2023.09.01-h7f4b329_2.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.9.11-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/linux-64/s2n-1.5.5-h3931f03_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.3.0-pyhd8ed1ab_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/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.2-pyha770c72_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.1-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.66.6-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.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.5-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/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/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/websockets-13.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/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.16.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.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 + 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.10.10-py312h906988d_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/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.31-h14f56dd_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.4-hd45b2be_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.29-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.19-hd45b2be_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.3-hdf5079d_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.10-h4588aaf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.19-h5ad5fc2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.7-hbe077eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.7-h86d2b7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-hd45b2be_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.20-hd45b2be_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.28.3-h4f9f7e0_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.407-h880863c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_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.2-h7ab814d_0.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-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.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_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.4-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/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.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.65.0-pyhd8ed1ab_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/httpcore-1.0.6-pyhd8ed1ab_0.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/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.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/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/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-hc6a7651_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_16_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 + - 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.3-ha82da77_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.3-hf9b8971_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/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/libgoogle-cloud-2.29.0-hfa33a2f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.29.0-h90fd6fa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_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/liblapack-3.9.0-25_osxarm64_openblas.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_h517c56d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-hf0ba9ef_16_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hc39d83c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.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/libthrift-0.20.0-h64651cc_1.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/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.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.3-hb52a8e5_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.dev2024110305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024110305-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024110305-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024110305-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.dev2024110305-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.15-py312h02f2b3b_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/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/openssl-3.3.2-h8359307_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.48b0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.2-h75dedd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.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/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-4.25.3-py312he4aa971_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312hc40f475_2_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/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/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-pyhd8ed1ab_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-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/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/re2-2023.09.01-h4cba328_2.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.9.11-py312h024a12e_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/osx-arm64/safetensors-0.4.5-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_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/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.2-pyha770c72_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.1-py312hd6eb99f_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.66.6-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.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.5-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/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/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/websockets-13.1-py312h024a12e_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/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.16.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.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: aiohappyeyeballs + version: 2.4.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda + sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac + md5: ec763b0a58960558ca0ad7255a51a237 + depends: + - python >=3.8.0 + license: PSF-2.0 + license_family: PSF + size: 19271 + timestamp: 1727779893392 +- kind: conda + name: aiohttp + version: 3.10.10 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.10.10-py312h178313f_0.conda + sha256: d941b4e4ea00bf8f777321d2dea9c05e71767e4a38f4934b2c8d7a8408b2c813 + md5: d2f9e490ab2eae3e661b281346618a82 + 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 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.12.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 834195 + timestamp: 1728629186912 +- kind: conda + name: aiohttp + version: 3.10.10 + build: py312h906988d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.10.10-py312h906988d_0.conda + sha256: f81b3f6e46ae5622b66191fdd3ff40d193b8cdd92242ba11bfa89159747406f9 + md5: f932c1be57fcd5a289e501f39735a7c2 + 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 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.12.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 807784 + timestamp: 1728629249798 +- kind: conda + name: aiosignal + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 + md5: d1e1eb7e21a9e2c74279d87dafb68156 + depends: + - frozenlist >=1.1.0 + - python >=3.7 + license: Apache-2.0 + license_family: APACHE + size: 12730 + timestamp: 1667935912504 +- kind: conda + name: annotated-types + version: 0.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f + md5: 7e9f4612544c8edbfd6afad17f1bd045 + depends: + - python >=3.7 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18235 + timestamp: 1716290348421 +- kind: conda + name: anyio + version: 4.6.2.post1 + 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 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.1 + constrains: + - uvloop >=0.21.0b1 + - trio >=0.26.1 + license: MIT + license_family: MIT + size: 109864 + timestamp: 1728935803440 +- kind: conda + name: attrs + version: 24.2.0 + build: pyh71513ae_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 + md5: 6732fa52eb8e66e5afeb32db8701a791 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 56048 + timestamp: 1722977241383 +- kind: conda + name: aws-c-auth + version: 0.7.31 + build: h14f56dd_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.31-h14f56dd_2.conda + sha256: 7ec650c52962f62e141d5c8ac018befd9a0c50eef1c951cba11089cadd90e703 + md5: 85a9125cf9705e4c7a829a829af6744b + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + license: Apache-2.0 + license_family: Apache + size: 92624 + timestamp: 1728796392911 +- kind: conda + name: aws-c-auth + version: 0.7.31 + build: he1a10d6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.31-he1a10d6_2.conda + sha256: 83fa4b24101cd85da825dcbb7611390c2a6e31a3fc17abb4d1ee5b8c40bdaa5a + md5: 76550a294cc78aaccfca7824bb4814ce + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 107301 + timestamp: 1728796325782 +- kind: conda + name: aws-c-cal + version: 0.7.4 + build: hae4d56a_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.4-hae4d56a_2.conda + sha256: 4bfed63898a1697364ce9621e1fc09c98f143777b0ca60655eb812efa5bf246d + md5: cdc628e4ffb4ffcd476e3847267e1689 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 47181 + timestamp: 1728755555430 +- kind: conda + name: aws-c-cal + version: 0.7.4 + build: hd45b2be_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.4-hd45b2be_2.conda + sha256: d701872d79184dbb759aa033e6a6e4ec5c6f1b58e3255e53b756d0246d19986a + md5: de4bf687ac70a2b861a94b87164669c9 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 39794 + timestamp: 1728755626145 +- kind: conda + name: aws-c-common + version: 0.9.29 + build: h7ab814d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.29-h7ab814d_0.conda + sha256: 8d2c330f0de571f1bf6f2db7650a1aa8c4060a2ccd25b48f392a4d3ea8222daa + md5: d4a90d217342b08daa7e80049fdaa6c9 + depends: + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + size: 220687 + timestamp: 1728706817796 +- kind: conda + name: aws-c-common + version: 0.9.29 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.29-hb9d3cd8_0.conda + sha256: b3b50f518e9afad383f6851bf7000cf8b343d7d3ca71558df233ee7b4bfc2919 + md5: acc51b49fd7467c8dfe4343001b812b4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 237231 + timestamp: 1728706773555 +- kind: conda + name: aws-c-compression + version: 0.2.19 + build: h2bff981_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.19-h2bff981_2.conda + sha256: 908a416ff3f62b09bed436e1f77418f54115412244734d3960b11d586dd0749f + md5: 87a059d4d2ab89409496416119dd7152 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 18983 + timestamp: 1728750679322 +- kind: conda + name: aws-c-compression + version: 0.2.19 + build: hd45b2be_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.19-hd45b2be_2.conda + sha256: 86900c68f95a2ca79cb9bcb8a3e8fd0a7912cfa3754a6a1e6b78d35c0b8db58b + md5: 9c634af661f50e923419e0df92633d31 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + license: Apache-2.0 + license_family: Apache + size: 18065 + timestamp: 1728750721405 +- kind: conda + name: aws-c-event-stream + version: 0.4.3 + build: h19b0707_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.3-h19b0707_4.conda + sha256: 951f96eb45a439a36935dc2099e10c902518ec511a287c1685ca65a88a9accaa + md5: df38f56123f30d61de24474e600e7d41 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 53821 + timestamp: 1728792746255 +- kind: conda + name: aws-c-event-stream + version: 0.4.3 + build: hdf5079d_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.3-hdf5079d_4.conda + sha256: 6976ea97bf8c79114da3026a9d46b717131e2445be01f244718a426ad4b587f2 + md5: d89057a51d66d9c0c907c3dfebf845eb + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + - libcxx >=17 + license: Apache-2.0 + license_family: Apache + size: 46737 + timestamp: 1728792823021 +- kind: conda + name: aws-c-http + version: 0.8.10 + build: h14a7884_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.10-h14a7884_2.conda + sha256: 0561267292739a451d7d389f100330fefafb97859962f617cd5268c96400e3aa + md5: 6147c6b6cef67adcb85516f5cf775be7 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-compression >=0.2.19,<0.2.20.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 197562 + timestamp: 1728792795954 +- kind: conda + name: aws-c-http + version: 0.8.10 + build: h4588aaf_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.10-h4588aaf_2.conda + sha256: 0f422e1cb3ebfa4fbf316e0ee576ed8e8f96cd9890783a0d319366e7ad9ebca6 + md5: fd850cc4bc7af65f3b7e98324bda96fa + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-compression >=0.2.19,<0.2.20.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + license: Apache-2.0 + license_family: Apache + size: 152421 + timestamp: 1728792977955 +- kind: conda + name: aws-c-io + version: 0.14.19 + build: h5ad5fc2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.19-h5ad5fc2_1.conda + sha256: 0fcfbd9b46474b543d59183bedee08bf46d0f5167c95406b3b06ce922d6626c4 + md5: 463fae93275ddd0a6e2afb327b4d87e5 + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + license: Apache-2.0 + license_family: Apache + size: 137474 + timestamp: 1728770995104 +- kind: conda + name: aws-c-io + version: 0.14.19 + build: hc9e6898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.19-hc9e6898_1.conda + sha256: 35f9719fb9d5ddf4955a432d73d910261d60754d20b58de2be2701a2e68a9cfb + md5: ec84785f7ae14ed43156a54aec33bb14 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - libgcc >=13 + - s2n >=1.5.5,<1.5.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 158806 + timestamp: 1728770974012 +- kind: conda + name: aws-c-mqtt + version: 0.10.7 + build: hb8d5873_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.7-hb8d5873_2.conda + sha256: b30a3d8ba9352760c30f696b65486fe0e1d3cfe771f114b008a70ad440eb00c0 + md5: 8dc25ca24c1a50b8295a848c384ede99 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 195951 + timestamp: 1728797647791 +- kind: conda + name: aws-c-mqtt + version: 0.10.7 + build: hbe077eb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.7-hbe077eb_2.conda + sha256: 376f757b460fc936da6b8159ef80ed5a51a23d2ba02e7834055a99616004d3bc + md5: 5013eaa8a8242355199a31e8973ff3f0 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + license: Apache-2.0 + license_family: Apache + size: 135058 + timestamp: 1728797199832 +- kind: conda + name: aws-c-s3 + version: 0.6.7 + build: h666547d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.7-h666547d_0.conda + sha256: fe006f58bd9349ab7cd4cd864dd4e83409e89764b10d9d7eb7ec148e2f964465 + md5: 7f59dcbbd4eab14ca9256f20b43849eb + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.7.31,<0.7.32.0a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + - libgcc >=13 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 113457 + timestamp: 1728967087200 +- kind: conda + name: aws-c-s3 + version: 0.6.7 + build: h86d2b7d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.7-h86d2b7d_0.conda + sha256: 4691154b75d85039da165b01bd25a2dce99f40b8a635fa9537a36a45dcc3e236 + md5: 851d2b927ba01ac963ffbc1868e971a3 + depends: + - __osx >=11.0 + - aws-c-auth >=0.7.31,<0.7.32.0a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + license: Apache-2.0 + license_family: Apache + size: 96707 + timestamp: 1728967262718 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: h2bff981_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-h2bff981_4.conda + sha256: ef65ca9eb9f32ada6fb1b47759374e7ef4f85db002f2265ebc8fd61718284cbc + md5: 5a8afd37e2dfe464d68e63d1c38b08c5 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 55957 + timestamp: 1728755888042 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: hd45b2be_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-hd45b2be_4.conda + sha256: cc374eef1b367fb9acc83b2e74830f62742d3e53e1f0f6a0d01939b16ed1e3d5 + md5: 7ccdd0f21ffbc77b11963f00892ca8b5 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + license: Apache-2.0 + license_family: Apache + size: 49543 + timestamp: 1728755942076 +- kind: conda + name: aws-checksums + version: 0.1.20 + build: h2bff981_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.20-h2bff981_1.conda + sha256: e1793f2e52fe04ef3a6b2069abda7960d061c6f7af1f0d5f616d43e7a7c40e3c + md5: 8b424cf6b3cfc5cffe98bf4d16c032fb + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72862 + timestamp: 1728750748391 +- kind: conda + name: aws-checksums + version: 0.1.20 + build: hd45b2be_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.20-hd45b2be_1.conda + sha256: d935ca7faa780cfa1053fe1bffb77611a54b4df791897a22048e770b250c651f + md5: ab0b68aafe787311cb8397fd2e60982d + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + license: Apache-2.0 + license_family: Apache + size: 70087 + timestamp: 1728750818479 +- kind: conda + name: aws-crt-cpp + version: 0.28.3 + build: h4f9f7e0_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.28.3-h4f9f7e0_8.conda + sha256: 98cbed635af4841186aa3261e6ceadd03822983d6e30f0afa5d34eb452b2b509 + md5: 14af6354d5437421793e17e865301371 + depends: + - __osx >=11.0 + - aws-c-auth >=0.7.31,<0.7.32.0a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-event-stream >=0.4.3,<0.4.4.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-c-mqtt >=0.10.7,<0.10.8.0a0 + - aws-c-s3 >=0.6.7,<0.6.8.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libcxx >=17 + license: Apache-2.0 + license_family: Apache + size: 229980 + timestamp: 1729181342157 +- kind: conda + name: aws-crt-cpp + version: 0.28.3 + build: hbe26082_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.28.3-hbe26082_8.conda + sha256: a9c23a685929b24fcd032daae36b61c4862912abf0a0a8735aeef53418c5bce6 + md5: 80d5fac04be0e6c2774f57eb7529f145 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.7.31,<0.7.32.0a0 + - aws-c-cal >=0.7.4,<0.7.5.0a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-event-stream >=0.4.3,<0.4.4.0a0 + - aws-c-http >=0.8.10,<0.8.11.0a0 + - aws-c-io >=0.14.19,<0.14.20.0a0 + - aws-c-mqtt >=0.10.7,<0.10.8.0a0 + - aws-c-s3 >=0.6.7,<0.6.8.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 349632 + timestamp: 1729181229435 +- kind: conda + name: aws-sdk-cpp + version: 1.11.407 + build: h25d6d5c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.407-h25d6d5c_1.conda + sha256: f05d43f3204887cec9a9853a9217f06562b28161950b5485aed1f8afe42aad17 + md5: 0f2bd0128d59a45c9fd56151eab0b37e + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-event-stream >=0.4.3,<0.4.4.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + - aws-crt-cpp >=0.28.3,<0.28.4.0a0 + - libcurl >=8.10.1,<9.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: 2931742 + timestamp: 1729235000691 +- kind: conda + name: aws-sdk-cpp + version: 1.11.407 + build: h880863c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.407-h880863c_1.conda + sha256: 9cea713c0d727def94e29a99cdfe1deb65c241c90bc41c96e1e77777cb84d4c9 + md5: 60877ad5c76505fa4b90ab5567babb3d + depends: + - __osx >=11.0 + - aws-c-common >=0.9.29,<0.9.30.0a0 + - aws-c-event-stream >=0.4.3,<0.4.4.0a0 + - aws-checksums >=0.1.20,<0.1.21.0a0 + - aws-crt-cpp >=0.28.3,<0.28.4.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2709553 + timestamp: 1729235667236 +- kind: conda + name: azure-core-cpp + version: 1.13.0 + build: h935415a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + sha256: b7e0a22295db2e1955f89c69cefc32810309b3af66df986d9fb75d89f98a80f7 + md5: debd1677c2fea41eb2233a260f48a298 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.8.0,<9.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 338134 + timestamp: 1720853194547 +- kind: conda + name: azure-core-cpp + version: 1.13.0 + build: hd01fc5c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + sha256: aff4af38416cf7a81c79e5a3b071ce5aa13ec48da28db0312bc1ebe62cf7273d + md5: 2083f6313e623079db6ee67af00e6b27 + depends: + - __osx >=11.0 + - libcurl >=8.8.0,<9.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 287922 + timestamp: 1720853302106 +- kind: conda + name: azure-identity-cpp + version: 1.8.0 + build: h13ea094_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + sha256: 11b01715cae19390890f29ebb56d36d895feafd787ba929aa10b6ce712f3f4b9 + md5: 383b72f2ee009992b21f4db08a708510 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 142135 + timestamp: 1721777696118 +- kind: conda + name: azure-identity-cpp + version: 1.8.0 + build: hd126650_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + sha256: f85452eca3ae0e156b1d1a321a1a9f4f58d44ff45236c0d8602ab96aaad3c6ba + md5: 36df3cf05459de5d0a41c77c4329634b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 199516 + timestamp: 1721777604325 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.12.0 + build: hd2e3451_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + sha256: 69a0f5c2a08a1a40524b343060debb8d92295e2cc5805c3db56dad7a41246a93 + md5: 61f1c193452f0daa582f39634627ea33 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 523120 + timestamp: 1721865032339 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.12.0 + build: hfde595f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + sha256: f733f4acedd8bf1705c780e0828f0b83242ae7e72963aef60d12a7c5b3a8640d + md5: f2c935764fdacd0fafc05f975fd347e0 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + size: 419976 + timestamp: 1721865180569 +- kind: conda + name: azure-storage-common-cpp + version: 12.7.0 + build: h10ac4d7_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + sha256: 1030fa54497a73eb78c509d451f25701e2e781dc182e7647f55719f1e1f9bee8 + md5: ab6d507ad16dbe2157920451d662e4a1 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 143039 + timestamp: 1721832724803 +- kind: conda + name: azure-storage-common-cpp + version: 12.7.0 + build: hcf3b6fd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + sha256: 3fdf9c0337c48706cffe2e4c761cdea4132fb6dbd1f144d969c28afd903cf256 + md5: df7e01bcf8f3a9bfb0ab06778f915f29 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 119821 + timestamp: 1721832870493 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.11.0 + build: h082e32e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + sha256: 3c288dc1ae6bff9a1e21ab5196d13ab486850f61ec649a743a87bf9726901abf + md5: 16b05d31f626717668f01c01a970115f + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + size: 189065 + timestamp: 1721925275724 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.11.0 + build: h325d260_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + sha256: 1726fa324bb402e52d63227d6cb3f849957cd6841f8cb8aed58bb0c81203befb + md5: 11d926d1f4a75a1b03d1c053ca20424b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 274492 + timestamp: 1721925100762 +- 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: 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: 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.2 + build: h7ab814d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.2-h7ab814d_0.conda + sha256: 24d53d27397f9c2f0c168992690b5ec1bd62593fb4fc1f1e906ab91b10fd06c3 + md5: 8a8cfc11064b521bc54bd2d8591cb137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 177487 + timestamp: 1729006763496 +- kind: conda + name: c-ares + version: 1.34.2 + build: heb4867d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.2-heb4867d_0.conda + sha256: c2a515e623ac3e17a56027c06098fbd5ab47afefefbd386b4c21289f2ec55139 + md5: 2b780c0338fc0ffa678ac82c54af51fd + depends: + - __glibc >=2.28,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 205797 + timestamp: 1729006575652 +- 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: 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: 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: charset-normalizer + version: 3.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 + md5: a374efa97290b8799046df7c5ca17164 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 47314 + timestamp: 1728479405343 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + md5: f3ad426304898027fc619827ff428eca + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 84437 + timestamp: 1692311973840 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + md5: 3faab06a954c2a04039983f2c4a50d99 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 25170 + timestamp: 1666700778190 +- 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: deprecated + version: 1.2.14 + build: pyh1a96a4e_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.14-pyh1a96a4e_0.conda + sha256: 8f61539b00ea315c99f8b6f9e2408caa6894593617676741214cc0280e875ca0 + md5: 4e4c4236e1ca9bcd8816b921a4805882 + depends: + - python >=2.7 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14033 + timestamp: 1685233463632 +- 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_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda + sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 + md5: 0adf8f63d500d20418656289249533f9 + depends: + - python >=3.9.0,<4.0.0 + - sniffio + constrains: + - cryptography >=43 + - wmi >=1.5.1 + - h2 >=4.1.0 + - trio >=0.23 + - httpcore >=1.0.0 + - aioquic >=1.0.0 + - httpx >=0.26.0 + - idna >=3.7 + license: ISC + license_family: OTHER + size: 172740 + timestamp: 1728178868478 +- kind: conda + name: email-validator + version: 2.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda + sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 + md5: 3067adf57ee658ddf5bfad47b0041ce4 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.7 + license: Unlicense + size: 44157 + timestamp: 1718984716782 +- kind: conda + name: email_validator + version: 2.2.0 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 + md5: 0214a004f7cf5ac28fc10a390dfc47ee + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6690 + timestamp: 1718984720419 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 + md5: d02ae936e42063ca46af6cdad2dbd1e0 + depends: + - python >=3.7 + license: MIT and PSF-2.0 + size: 20418 + timestamp: 1720869435725 +- kind: conda + name: fastapi + version: 0.115.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.4-pyhd8ed1ab_0.conda + sha256: 69d319a58a7f929c047c0e6c1b845a3b384840ff95b1391516aa683f517f0929 + md5: 29841fbba8e0d4628ab513b92212def4 + 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.8 + - python-multipart >=0.0.7 + - starlette >=0.40.0,<0.42.0 + - typing_extensions >=4.8.0 + - uvicorn >=0.12.0 + license: MIT + license_family: MIT + size: 73156 + timestamp: 1730122842479 +- 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_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 + md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + depends: + - python >=3.7 + license: Unlicense + size: 17357 + timestamp: 1726613593584 +- 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: fsspec + version: 2024.10.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 134745 + timestamp: 1729608972363 +- 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: 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: 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.65.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.65.0-pyhd8ed1ab_0.conda + sha256: 093e899196b6bedb761c707677a3bc7161a04371084eb26f489327e8aa8d6f25 + md5: f5bdd5dd4ad1fd075a6f25670bdda1b6 + 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.7 + license: Apache-2.0 + license_family: APACHE + size: 115834 + timestamp: 1724834348732 +- kind: conda + name: h11 + version: 0.14.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 + md5: b21ed0883505ba1910994f1df031a428 + depends: + - python >=3 + - typing_extensions + license: MIT + license_family: MIT + size: 48251 + timestamp: 1664132995560 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + md5: b748fbf7060927a6e82df7cb5ee8f097 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.6.1 + license: MIT + license_family: MIT + size: 46754 + timestamp: 1634280590080 +- kind: conda + name: hpack + version: 4.0.0 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + md5: 914d6646c4dbb1fd3ff539830a12fd71 + depends: + - python + license: MIT + license_family: MIT + size: 25341 + timestamp: 1598856368685 +- kind: conda + name: httpcore + version: 1.0.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + sha256: 8952c3f1eb18bf4d7e813176c3b23e0af4e863e8b05087e73f74f371d73077ca + md5: b8e1901ef9a215fc41ecfb6bef7e0943 + depends: + - anyio >=3.0,<5.0 + - certifi + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - python >=3.8 + - sniffio 1.* + license: BSD-3-Clause + license_family: BSD + size: 45711 + timestamp: 1727821031365 +- 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 + 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: 77287 + timestamp: 1726688371563 +- 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 + 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: 93588 + timestamp: 1726688214856 +- kind: conda + name: httpx + version: 0.27.2 + 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 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.8 + - sniffio + license: BSD-3-Clause + license_family: BSD + size: 65085 + timestamp: 1724778453275 +- kind: conda + name: huggingface_hub + version: 0.26.2 + build: pyh0610db2_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 + 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 + license_family: APACHE + size: 274216 + timestamp: 1730211995421 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14646 + timestamp: 1619110249723 +- 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 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: 7ba2ede0e7c795ff95088daf0dc59753 + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 49837 + timestamp: 1726459583613 +- 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: jinja2 + version: 3.1.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d + md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + depends: + - markupsafe >=2.0 + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 111565 + timestamp: 1715127275924 +- kind: conda + name: jupyter_client + version: 8.6.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: a14218cfb29662b4a19ceb04e93e298e + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.8 + - 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 +- 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: 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: 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: 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: libabseil + version: '20240116.2' + build: cxx17_h00cdb27_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + sha256: a9517c8683924f4b3b9380cdaa50fdd2009cd8d5f3918c92f64394238189d3cb + md5: f16963d88aed907af8b90878b8d8a05c + depends: + - __osx >=11.0 + - libcxx >=16 + constrains: + - abseil-cpp =20240116.2 + - libabseil-static =20240116.2=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1136123 + timestamp: 1720857649214 +- kind: conda + name: libabseil + version: '20240116.2' + build: cxx17_he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + sha256: 945396726cadae174a661ce006e3f74d71dbd719219faf7cc74696b267f7b0b5 + md5: c48fc56ec03229f294176923c3265c05 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + constrains: + - abseil-cpp =20240116.2 + - libabseil-static =20240116.2=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1264712 + timestamp: 1720857377573 +- kind: conda + name: libarrow + version: 17.0.0 + build: had3b6fe_16_cpu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-had3b6fe_16_cpu.conda + sha256: 9aa5598878cccc29de744ebc4b501c4a5a43332973edfdf0a19ddc521bd7248f + md5: c899e532e16be21570d32bc74ea3d34f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.28.3,<0.28.4.0a0 + - aws-sdk-cpp >=1.11.407,<1.11.408.0a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-identity-cpp >=1.8.0,<1.8.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-files-datalake-cpp >=12.11.0,<12.11.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 >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.29.0,<2.30.0a0 + - libgoogle-cloud-storage >=2.29.0,<2.30.0a0 + - libre2-11 >=2023.9.1 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.2,<2.0.3.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 8495428 + timestamp: 1726669963852 +- kind: conda + name: libarrow + version: 17.0.0 + build: hc6a7651_16_cpu + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-hc6a7651_16_cpu.conda + sha256: 1facd5aa7140031be0f68733ab5e413ea1505da40548e27a173b2407046f36b5 + md5: 05fecc4ae5930dc548327980a4bc7a83 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.28.3,<0.28.4.0a0 + - aws-sdk-cpp >=1.11.407,<1.11.408.0a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-identity-cpp >=1.8.0,<1.8.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-files-datalake-cpp >=12.11.0,<12.11.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=17 + - libgoogle-cloud >=2.29.0,<2.30.0a0 + - libgoogle-cloud-storage >=2.29.0,<2.30.0a0 + - libre2-11 >=2023.9.1 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.2,<2.0.3.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 5318871 + timestamp: 1726669928492 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: h5888daf_16_cpu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-h5888daf_16_cpu.conda + sha256: 0ff4c712c7c61e60708c6ef4f8158200059e0f63c25d0a54c8e4cca7bd153d86 + md5: 18f796aae018a26a20ac51d19de69115 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 had3b6fe_16_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 608267 + timestamp: 1726669999941 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: hf9b8971_16_cpu + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_16_cpu.conda + sha256: c9ff43babc0acbd864584ed1720cf063715589e31e9e2024b90d2094d4f20d38 + md5: 319bd2a8c30dffa54d6ad69847f16de1 + depends: + - __osx >=11.0 + - libarrow 17.0.0 hc6a7651_16_cpu + - libcxx >=17 + license: Apache-2.0 + license_family: APACHE + size: 483187 + timestamp: 1726670022814 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: h5888daf_16_cpu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-h5888daf_16_cpu.conda + sha256: e500e0154cf3ebb41bed3bdf41bd0ff5e0a6b7527a46ba755c05e59c8036e442 + md5: 5400efd6bf101674e0ce170906a0f7cb + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 had3b6fe_16_cpu + - libarrow-acero 17.0.0 h5888daf_16_cpu + - libgcc >=13 + - libparquet 17.0.0 h39682fd_16_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585061 + timestamp: 1726670063965 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: hf9b8971_16_cpu + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_16_cpu.conda + sha256: e77d3c6825384c232f61fd3602a32507b66410dbe8879cd69a89b0fc49489533 + md5: 67ea0ef775de4c394c3c7db991297ffa + depends: + - __osx >=11.0 + - libarrow 17.0.0 hc6a7651_16_cpu + - libarrow-acero 17.0.0 hf9b8971_16_cpu + - libcxx >=17 + - libparquet 17.0.0 hf0ba9ef_16_cpu + license: Apache-2.0 + license_family: APACHE + size: 491606 + timestamp: 1726671006156 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: hbf8b706_16_cpu + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_16_cpu.conda + sha256: 6880b3c8fb88ee6c0bbae34b0efea86567ccec1b8cd8a3662b8b8c6dfeb5e87a + md5: b739c909163c38f85f40f5650ab2aeb2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 hc6a7651_16_cpu + - libarrow-acero 17.0.0 hf9b8971_16_cpu + - libarrow-dataset 17.0.0 hf9b8971_16_cpu + - libcxx >=17 + - libprotobuf >=4.25.3,<4.25.4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 472812 + timestamp: 1726671149860 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: hf54134d_16_cpu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hf54134d_16_cpu.conda + sha256: 53f3d5f12c9ea557f33a4e1cf9067ce2dbb4211eff0a095574eeb7f0528bc044 + md5: 1cbc3fb1ee28c99e5f8c52920a7717a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 had3b6fe_16_cpu + - libarrow-acero 17.0.0 h5888daf_16_cpu + - libarrow-dataset 17.0.0 h5888daf_16_cpu + - libgcc >=13 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 550960 + timestamp: 1726670093831 +- 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_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: 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: 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: 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: 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_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: 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: 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.3 + build: ha82da77_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda + sha256: 6d062760c6439e75b9a44d800d89aff60fe3441998d87506c62dc94c50412ef4 + md5: bf691071fba4734984231617783225bc + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 520771 + timestamp: 1730314603920 +- 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: 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: 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.3 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + sha256: 4bb47bb2cd09898737a5211e2992d63c555d63715a07ba56eae0aff31fb89c22 + md5: 59f4c43bb1b5ef1c71946ff2cbf59524 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.3.* + license: MIT + license_family: MIT + size: 73616 + timestamp: 1725568742634 +- kind: conda + name: libexpat + version: 2.6.3 + build: hf9b8971_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + sha256: 5cbe5a199fba14ade55457a468ce663aac0b54832c39aa54470b3889b4c75c4a + md5: 5f22f07c2ab2dea8c66fe9585a062c96 + depends: + - __osx >=11.0 + constrains: + - expat 2.6.3.* + license: MIT + license_family: MIT + size: 63895 + timestamp: 1725568783033 +- 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: 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: 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-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: 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-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_1.conda + sha256: 423f1e2403f0c665748e42d335e421e53fd03c08d457cfb6f360d329d9459851 + md5: 0a7f4cd238267c88e5d69f7826a407eb + depends: + - libgfortran 14.2.0 h69a702a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54106 + timestamp: 1729027945817 +- 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: 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: 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: libgoogle-cloud + version: 2.29.0 + build: h435de7b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.29.0-h435de7b_0.conda + sha256: c8ee42a4acce5227d220ec6500f6872d52d82e478c76648b9ff57dd2d86429bd + md5: 5d95d9040c4319997644f68e9aefbe70 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.29.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1241649 + timestamp: 1725640926284 +- kind: conda + name: libgoogle-cloud + version: 2.29.0 + build: hfa33a2f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.29.0-hfa33a2f_0.conda + sha256: 1f42048702d773a355d276d24313ac63781a331959fc3662c6be36e979d7845c + md5: f78c7bd435ee45f4661daae9e81ddf13 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libcxx >=17 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.29.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 866727 + timestamp: 1725640714587 +- kind: conda + name: libgoogle-cloud-storage + version: 2.29.0 + build: h0121fbd_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.29.0-h0121fbd_0.conda + sha256: 2847c9e940b742275a7068e0a742bdabf211bf0b2bbb1453592d6afb47c7e17e + md5: 06dfd5208170b56eee943d9ac674a533 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.29.0 h435de7b_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 781655 + timestamp: 1725641060970 +- kind: conda + name: libgoogle-cloud-storage + version: 2.29.0 + build: h90fd6fa_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.29.0-h90fd6fa_0.conda + sha256: ec80383fbb6fae95d2ff7d04ba46b282ab48219b7ce85b3cd5ee7d0d8bae74e1 + md5: baee0b9cb1c5319f370a534ca5a16267 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=17 + - libgoogle-cloud 2.29.0 hfa33a2f_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 535346 + timestamp: 1725641618955 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h15f2491_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + sha256: 28241ed89335871db33cb6010e9ccb2d9e9b6bb444ddf6884f02f0857363c06a + md5: 8dabe607748cb3d7002ad73cd06f1325 + depends: + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libgcc-ng >=12 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + size: 7316832 + timestamp: 1713390645548 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h9c18a4f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + sha256: d2c5b5a828f6f1242c11e8c91968f48f64446f7dd5cbfa1197545e465eb7d47a + md5: e624fc11026dbb84c549435eccd08623 + depends: + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + size: 5016525 + timestamp: 1713392846329 +- 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: 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: 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_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: 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: 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: libopenblas + version: 0.3.28 + build: openmp_h517c56d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_h517c56d_0.conda + sha256: 43d69d072f1a3774994d31f9d3241cfa0f1c5560b536989020d7cde30fbef956 + md5: 9306fd5b6b39b2b7e13c1d50c3fee354 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=16.0.6 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2934061 + timestamp: 1723931625423 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h94d23a6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_0.conda + sha256: 1e41a6d63e07be996238a1e840a426f86068956a45e0c0bb24e49a8dad9874c1 + md5: 9ebc9aedafaa2515ab247ff6bb509458 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=14 + - libgfortran-ng + - libgfortran5 >=14.1.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5572213 + timestamp: 1723932528810 +- kind: conda + name: libparquet + version: 17.0.0 + build: h39682fd_16_cpu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h39682fd_16_cpu.conda + sha256: 09bc64111e5e1e9f5fee78efdd62592e01c681943fe6e91b369f6580dc8726c4 + md5: dd1fee2da0659103080fdd74004656df + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 had3b6fe_16_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.20.0,<0.20.1.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1186069 + timestamp: 1726670048098 +- kind: conda + name: libparquet + version: 17.0.0 + build: hf0ba9ef_16_cpu + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-hf0ba9ef_16_cpu.conda + sha256: 6ed28f06409b02a9f521ee5e8cf2f4d3fb63a7633c11f2ee7ec2880e78e184e5 + md5: 517ecf2ee0c2822e6120c258f3acd383 + depends: + - __osx >=11.0 + - libarrow 17.0.0 hc6a7651_16_cpu + - libcxx >=17 + - libthrift >=0.20.0,<0.20.1.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 873007 + timestamp: 1726670938318 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: hc39d83c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hc39d83c_1.conda + sha256: f51bde2dfe73968ab3090c1098f520b65a8d8f11e945cb13bf74d19e30966b61 + md5: fa77986d9170450c014586ab87e144f8 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2177164 + timestamp: 1727160770879 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: hd5b35b9_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-hd5b35b9_1.conda + sha256: 8b5e4e31ed93bf36fd14e9cf10cd3af78bb9184d0f1f87878b8d28c0374aa4dc + md5: 06def97690ef90781a91b786cb48a0a9 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2883090 + timestamp: 1727161327039 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: h5a48ba9_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + sha256: 3f3c65fe0e9e328b4c1ebc2b622727cef3e5b81b18228cfa6cf0955bc1ed8eff + md5: 41c69fba59d495e8cf5ffda48a607e35 + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + size: 232603 + timestamp: 1708946763521 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: h7b2c953_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + sha256: c8a0a6e7a627dc9c66ffb8858f8f6d499f67fd269b6636b25dc5169760610f05 + md5: 0b7b2ced046d6b5fe6e9d46b1ee0324c + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + size: 171443 + timestamp: 1708947163461 +- 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: 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.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 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 875349 + timestamp: 1730208050020 +- 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 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 837683 + timestamp: 1730208293578 +- 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 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 271133 + timestamp: 1685837707056 +- 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 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 255610 + timestamp: 1685837894256 +- 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: libthrift + version: 0.20.0 + build: h0e7cc3e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.20.0-h0e7cc3e_1.conda + sha256: 3e70dfda31a3ce28310c86cc0001f20abb78c917502e12c94285a1337fe5b9f0 + md5: d0ed81c4591775b70384f4cc78e05cd1 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 417404 + timestamp: 1724652349098 +- kind: conda + name: libthrift + version: 0.20.0 + build: h64651cc_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.20.0-h64651cc_1.conda + sha256: b6afcbc934258e0474e0f1059bc7b23865723b902062f2f2910e0370e6495401 + md5: 4cf2e5233320648397184415f380c891 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 315041 + timestamp: 1724657608736 +- 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 + 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: 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: 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: 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: 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.4 + build: h064dc61_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-h064dc61_2.conda + sha256: d80f927754f8531768723f23b367d0cff24faa307cc5a64d146b23fddb8a2976 + md5: 61e2f77697c8c502633743bc0d160a80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + constrains: + - icu <0.0a0 + license: MIT + license_family: MIT + size: 689361 + timestamp: 1730355822995 +- kind: conda + name: libxml2 + version: 2.13.4 + build: h8424949_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda + sha256: 51048cd9d4d7ab3ab440bac01d1db8193ae1bd3e9502cdf6792a69c792fec2e5 + md5: 3f0764c38bc02720231d49d6035531f2 + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 572400 + timestamp: 1730356085177 +- 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: 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.3 + build: hb52a8e5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda + sha256: 49a8940e727aa82ee034fa9a60b3fcababec41b3192d955772aab635a5374b82 + md5: dd695d23e78d1ca4fecce969b1e1db61 + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.3|19.1.3.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280488 + timestamp: 1730364082380 +- 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: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_0 + 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 + depends: + - mdurl >=0.1,<1 + - python >=3.8 + license: MIT + license_family: MIT + size: 64356 + timestamp: 1686175179621 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 + md5: a755704ea0e2503f8c227d84829a8e81 + 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: 24878 + timestamp: 1729351558563 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312ha0ccf2a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda + sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d + md5: c6ff9f291d011c9d4f0b840f49435c64 + 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: 24495 + timestamp: 1729351534830 +- kind: conda + name: max + version: 24.6.0.dev2024110305 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024110305-release.conda + sha256: e9870905130625b2a01d9b80339d899260c53f4921eec49ebdd3a8366121b32b + md5: 042b85a598f98be0037ed2172f78cb7d + depends: + - max-core ==24.6.0.dev2024110305 release + - max-python >=24.6.0.dev2024110305,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024110305 release + - mblack ==24.6.0.dev2024110305 release + license: LicenseRef-Modular-Proprietary + size: 9859 + timestamp: 1730611077999 +- kind: conda + name: max-core + version: 24.6.0.dev2024110305 + build: release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024110305-release.conda + sha256: af589918de07a30c8eeb752608460bf6a7fe37200c53bf7de4205c7c46ed2752 + md5: c31d34ef1e6ba2c42712d55bea2367c0 + depends: + - mblack ==24.6.0.dev2024110305 release + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 249504371 + timestamp: 1730611077997 +- kind: conda + name: max-core + version: 24.6.0.dev2024110305 + build: release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024110305-release.conda + sha256: 27f300abf514aa4e40c86d2dc1dc7c4da5417b3258fba551e592a3c882e79466 + md5: 6127933de0a127f945dbb43ec9bca3da + depends: + - mblack ==24.6.0.dev2024110305 release + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 213465450 + timestamp: 1730611202582 +- kind: conda + name: max-python + version: 24.6.0.dev2024110305 + build: 3.12release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024110305-3.12release.conda + sha256: 28946dc9a097bda843673431d1e5e77d101ad5dd9862890963faa00a15656662 + md5: 52d82dbfee295d431a940b4a68eff2d8 + depends: + - max-core ==24.6.0.dev2024110305 release + - python 3.12.* + - numpy >=1.18,<2.0 + - fastapi + - pydantic-settings + - sse-starlette + - transformers + - opentelemetry-sdk >=1.27.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - python-json-logger + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 124479897 + timestamp: 1730611078007 +- kind: conda + name: max-python + version: 24.6.0.dev2024110305 + build: 3.12release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024110305-3.12release.conda + sha256: 57fc924f0a83ab92bb083b7d5aacfcb6f076865aadcab5b9adbd258085d70aa4 + md5: 45120ea7135a5b8ded1340aef5d7e578 + depends: + - max-core ==24.6.0.dev2024110305 release + - python 3.12.* + - numpy >=1.18,<2.0 + - fastapi + - pydantic-settings + - sse-starlette + - transformers + - opentelemetry-sdk >=1.27.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - python-json-logger + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 114178373 + timestamp: 1730611202585 +- kind: conda + name: mblack + version: 24.6.0.dev2024110305 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024110305-release.conda + sha256: c7230f182d4384834e22dd475f60c6c549238044050b4a102e4ffa8f9f5c6c4b + md5: ecd6265df539c00e3a60772911e759b6 + 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: 130595 + timestamp: 1730611078003 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + md5: 776a8dd9e824f77abac30e6ef43a8f7a + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14680 + timestamp: 1704317789138 +- kind: conda + name: mojo-jupyter + version: 24.6.0.dev2024110305 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024110305-release.conda + sha256: 4016b026ebd389acb2d9dedba708212fad37c1bf90afc0b4b359e0bd0a775cab + md5: 487f0fe4294050706babaeb6f2856745 + depends: + - max-core ==24.6.0.dev2024110305 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22878 + timestamp: 1730611078005 +- 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: 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: mypy_extensions + version: 1.0.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 + md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + depends: + - python >=3.5 + license: MIT + license_family: MIT + size: 10492 + timestamp: 1675543414256 +- 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: 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: 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: openssl + version: 3.3.2 + build: h8359307_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + sha256: 940fa01c4dc6152158fe8943e05e55a1544cab639df0994e3b35937839e4f4d1 + md5: 1773ebccdc13ec603356e8ff1db9e958 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2882450 + timestamp: 1725410638874 +- kind: conda + name: openssl + version: 3.3.2 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + sha256: cee91036686419f6dd6086902acf7142b4916e1c4ba042e9ca23e151da012b6d + md5: 4d638782050ab6faa27275bed57e9b4e + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2891789 + timestamp: 1725410790053 +- kind: conda + name: opentelemetry-api + version: 1.27.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.27.0-pyhd8ed1ab_0.conda + sha256: ed8350db9d8f177f2e0eefb4df24c1134f1b39f7ef3e20ac42725a3b860309cd + md5: 947b016e29819585f8f3f82dbb7ede91 + depends: + - deprecated >=1.2.6 + - importlib-metadata >=6.0.0,<7.1.0 + - python >=3.8 + - setuptools >=16.0 + license: Apache-2.0 + license_family: APACHE + size: 43708 + timestamp: 1724916819673 +- kind: conda + name: opentelemetry-exporter-otlp-proto-common + version: 1.27.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.27.0-pyhd8ed1ab_0.conda + sha256: 6ec5cc984ad9c0faef329a1a1507d4431f08812b9053be42a2a736ae081dc3c5 + md5: 00e6c03b1437fa6bf3a775bc8f89f677 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.27.0 + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 18221 + timestamp: 1724929505617 +- kind: conda + name: opentelemetry-exporter-otlp-proto-http + version: 1.27.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.27.0-pyhd8ed1ab_0.conda + sha256: b5b86f0f819b5dd05bf0e67ddaa763086194a751aa534bed44fdbf089b317142 + md5: 3caeb0419f4d0f9ac0538c799df15612 + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api 1.27.0 + - opentelemetry-exporter-otlp-proto-common 1.27.0 + - opentelemetry-proto 1.27.0 + - opentelemetry-sdk 1.27.0 + - python >=3.8 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 16982 + timestamp: 1724969540619 +- kind: conda + name: opentelemetry-proto + version: 1.27.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.27.0-pyhd8ed1ab_0.conda + sha256: ca0480de7f33511dc983aeaf7de23f49c3a258b185588543f85abcf08b10d000 + md5: 3de386ea142a50514f6bba04c3fb48c0 + depends: + - protobuf >=3.19,<5.0 + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 37620 + timestamp: 1724925809921 +- kind: conda + name: opentelemetry-sdk + version: 1.27.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.27.0-pyhd8ed1ab_0.conda + sha256: fb0e4f664166d168edf455f744d827c2342b4b1e99d035cd2e47721863d845e5 + md5: 1a16e734cd0ebb70d3b79265403beb13 + depends: + - opentelemetry-api 1.27.0 + - opentelemetry-semantic-conventions 0.48b0 + - python >=3.8 + - typing-extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 73814 + timestamp: 1724923174196 +- kind: conda + name: opentelemetry-semantic-conventions + version: 0.48b0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.48b0-pyhd8ed1ab_0.conda + sha256: e2f9a4dbb4eef97e5ab04a73b3898c0f186d57705eae66c6991452385f987e9c + md5: eefd5ed55046af15c08051afb6b0eb6b + depends: + - opentelemetry-api 1.27.0 + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 76393 + timestamp: 1724919708207 +- kind: conda + name: orc + version: 2.0.2 + build: h669347b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.2-h669347b_0.conda + sha256: 8a126e0be7f87c499f0a9b5229efa4321e60fc4ae46abdec9b13240631cb1746 + md5: 1e6c10f7d749a490612404efeb179eb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx-ng >=12 + - 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: 1066349 + timestamp: 1723760593232 +- kind: conda + name: orc + version: 2.0.2 + build: h75dedd0_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.2-h75dedd0_0.conda + sha256: a23f3a88a6b16363bd13f964b4abd12be1576abac460126f3269cbed12d04840 + md5: 9c89e09cede143716b479c5eacc924fb + depends: + - __osx >=11.0 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.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: 436164 + timestamp: 1723760750932 +- kind: conda + name: packaging + version: '24.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + sha256: 36aca948219e2c9fdd6d80728bcc657519e02f06c2703d8db3446aec67f51d81 + md5: cbe1bb1f21567018ce595d9c2be0f0db + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 50290 + timestamp: 1718189540074 +- 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_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d + md5: 17064acba08d3686f1135b5ec1b32b12 + depends: + - python >=3.7 + license: MPL-2.0 + license_family: MOZILLA + size: 41173 + timestamp: 1702250135032 +- kind: conda + name: platformdirs + version: 4.3.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: fd8f2b18b65bbf62e8f653100690c8d2 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 20625 + timestamp: 1726613611845 +- 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 + 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: 47796 + timestamp: 1728545963127 +- 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 + 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: 53498 + timestamp: 1728545927816 +- kind: conda + name: protobuf + version: 4.25.3 + build: py312h83439f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.25.3-py312h83439f5_1.conda + sha256: 30d212eca5e25d0b0260dd0fff18f917386bfe046e425d627847aaed642a0aa4 + md5: 7bbcc35ebf7e3d8c59e472f1bf0e65fc + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libgcc >=13 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + license: BSD-3-Clause + license_family: BSD + size: 390590 + timestamp: 1725018571385 +- kind: conda + name: protobuf + version: 4.25.3 + build: py312he4aa971_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-4.25.3-py312he4aa971_1.conda + sha256: 1eb7f6c300be7a727ceaa01b009b9af14aac5112f685e8ef38238dbc8f4ad4dc + md5: 5feb2cb13c6b7c2b2365ee5307e4b2db + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcxx >=17 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + license: BSD-3-Clause + license_family: BSD + size: 373218 + timestamp: 1725018824150 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312h9cebb41_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_2.conda + sha256: 9e1baddd1199e244f4f8be10c7250691088948583ab3955c510b90eb71c91a2c + md5: 5f7d505626cb057e1320bbd46dd02ef2 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_2_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25538 + timestamp: 1730169714708 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312ha814d7c_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_2.conda + sha256: d6433c343120e723cad92b52ea05c16e05096845489275a697201ce0a50fc568 + md5: 04a90c4ce691f2e289658dd475f69631 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_2_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25811 + timestamp: 1730169125041 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312h01725c0_2_cpu + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h01725c0_2_cpu.conda + sha256: e5ed32ee7664a6322263e446d3504a35ff6f5452b17f1161bce7922d03f3cbd4 + md5: add603bfa43d9bf3f06783f780e1a817 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 4607408 + timestamp: 1730169265797 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312hc40f475_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312hc40f475_2_cpu.conda + sha256: 708488e602a159fa38a7fd5fa4466e9f093761dc4a8538661f06be3df42f30a5 + md5: bc617fed2854d65a16760d2bf02a475c + depends: + - __osx >=11.0 + - libarrow 17.0.0.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 3990396 + timestamp: 1730169098217 +- kind: conda + name: pycparser + version: '2.22' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 + md5: 844d9eb3b43095b031874477f7d70088 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 105098 + timestamp: 1711811634025 +- kind: conda + name: pydantic + version: 2.9.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda + sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a + md5: 1eb533bb8eb2199e3fef3e4aa147319f + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.23.4 + - python >=3.7 + - typing-extensions >=4.6.1 + license: MIT + license_family: MIT + size: 300649 + timestamp: 1726601202431 +- kind: conda + name: pydantic-core + version: 2.23.4 + 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 + 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: 1611784 + timestamp: 1726525286507 +- kind: conda + name: pydantic-core + version: 2.23.4 + build: py312he431725_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 + 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: 1431747 + timestamp: 1726525575527 +- 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: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 18981 + timestamp: 1661604969727 +- 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 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.3,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<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 +- 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 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.3,<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 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<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 +- kind: conda + name: python-dateutil + version: 2.9.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 + md5: 2cf4264fffb9e6eff6031c5b6884d61c + depends: + - python >=3.7 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222742 + timestamp: 1709299922152 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c + md5: c2997ea9360ac4e015658804a7a84f94 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 24278 + timestamp: 1706018281544 +- 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.17 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c + md5: a08ea55eb3ad403b12639cd3a4a8d28f + depends: + - python >=3.8 + license: Apache-2.0 + license_family: Apache + size: 27810 + timestamp: 1730382122271 +- kind: conda + name: python-tzdata + version: '2024.2' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 986287f89929b2d629bd6ef6497dc307 + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 142527 + timestamp: 1727140688093 +- 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: 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: 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: 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: re2 + version: 2023.09.01 + build: h4cba328_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + sha256: 0e0d44414381c39a7e6f3da442cb41c637df0dcb383a07425f19c19ccffa0118 + md5: 0342882197116478a42fa4ea35af79c1 + depends: + - libre2-11 2023.09.01 h7b2c953_2 + license: BSD-3-Clause + license_family: BSD + size: 26770 + timestamp: 1708947220914 +- kind: conda + name: re2 + version: 2023.09.01 + build: h7f4b329_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + sha256: f0f520f57e6b58313e8c41abc7dfa48742a05f1681f05654558127b667c769a8 + md5: 8f70e36268dea8eb666ef14c29bd3cda + depends: + - libre2-11 2023.09.01 h5a48ba9_2 + license: BSD-3-Clause + license_family: BSD + size: 26617 + timestamp: 1708946796423 +- 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: 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.9.11 + build: py312h024a12e_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.9.11-py312h024a12e_0.conda + sha256: c4dbb0a7195e3b5ec6059a6d280b44be3905ee8bf0d1622443efd8865dd90cf4 + md5: 796612a39474f5f08f7fc910d161a395 + 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: 366013 + timestamp: 1726095775313 +- kind: conda + name: regex + version: 2024.9.11 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.9.11-py312h66e93f0_0.conda + sha256: d841a27a17a8dc1a39b4b00145fd9a27a2832d838c18fbb8ba48f5bc63a02d6d + md5: f998667df44480bb9a365998290d8c93 + 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: 405100 + timestamp: 1726095738310 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: rich + version: 13.9.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 + md5: bcf8cc8924b5d20ead3d122130b8320b + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.8 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185481 + timestamp: 1730592349978 +- kind: conda + name: s2n + version: 1.5.5 + build: h3931f03_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.5-h3931f03_0.conda + sha256: a6fa0afa836f8f26dea0abc180ca2549bb517932d9a88a121e707135d4bcb715 + md5: 334dba9982ab9f5d62033c61698a8683 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 353081 + timestamp: 1728534228471 +- 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: 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: setuptools + version: 75.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + sha256: a36d020b9f32fc3f1a6488a1c4a9c13988c6468faf6895bf30ca69521a61230e + md5: 2ce9825396daf72baabaade36cee16da + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 779561 + timestamp: 1730382173961 +- kind: conda + name: shellingham + version: 1.5.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb + md5: d08db09a552699ee9e7eec56b4eb3899 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 14568 + timestamp: 1698144516278 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_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 + depends: + - python + license: MIT + license_family: MIT + size: 14259 + timestamp: 1620240338595 +- 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 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 42465 + timestamp: 1720003704360 +- 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 + depends: + - __osx >=11.0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + size: 35708 + timestamp: 1720003794374 +- kind: conda + name: sniffio + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b + md5: 490730480d76cf9c8f8f2849719c6e2b + depends: + - python >=3.7 + license: Apache-2.0 + license_family: Apache + size: 15064 + timestamp: 1708953086199 +- 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.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.2-pyha770c72_0.conda + sha256: 02206e5369944e0fd29e4f5c8e9b51dd926a74a46b621a73323669ad404f1081 + md5: 287492bb6e159da4357a10a2bd05c13c + depends: + - anyio >=3.4.0,<5 + - python >=3.8 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 59059 + timestamp: 1730305803101 +- 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.20.1 + build: py312h8360d73_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.1-py312h8360d73_0.conda + sha256: fc53ce7623ed31c32eaf4a2e102413abd2e6ef0943ed30b031de3ef8d664e72a + md5: 3780314d2f454d83c1d46fd43d251b9c + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<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: 2250327 + timestamp: 1728588997546 +- kind: conda + name: tokenizers + version: 0.20.1 + build: py312hd6eb99f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.1-py312hd6eb99f_0.conda + sha256: d969b688896caf8e8909d8f454268052624f2cf46504dc8bc3ddd9338c6b99a6 + md5: 530119ab40068bd198688f38f8abafa6 + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=17 + - 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: 1930339 + timestamp: 1728589077546 +- 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 + 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: 841722 + timestamp: 1724956439106 +- 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 + 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: 837665 + timestamp: 1724956252424 +- kind: conda + name: tqdm + version: 4.66.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.6-pyhd8ed1ab_0.conda + sha256: 32c39424090a8cafe7994891a816580b3bd253eb4d4f5473bdefcf6a81ebc061 + md5: 92718e1f892e1e4623dcc59b9f9c4e55 + depends: + - colorama + - python >=3.7 + license: MPL-2.0 or MIT + size: 89367 + timestamp: 1730145312554 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 + md5: 3df84416a021220d8b5700c613af2dc5 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 110187 + timestamp: 1713535244513 +- kind: conda + name: transformers + version: 4.46.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.1-pyhd8ed1ab_0.conda + sha256: f376f76da888edc56fefa154c668354c57e2811719f2b7c7c1b2b82fae9e83ae + md5: fbaa8c04ee9b5cc7d1ceead310d0cfb1 + 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.20,<0.21 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3650438 + timestamp: 1730245118077 +- kind: conda + name: typer + version: 0.12.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.5-pyhd8ed1ab_0.conda + sha256: da9ff9e27c5fa8268c2d5898335485a897d9496eef3b5b446cd9387a89d168de + md5: be70216cc1a5fe502c849676baabf498 + depends: + - python >=3.7 + - typer-slim-standard 0.12.5 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 53350 + timestamp: 1724613663049 +- kind: conda + name: typer-slim + version: 0.12.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.5-pyhd8ed1ab_0.conda + sha256: 7be1876627495047f3f07c52c93ddc2ae2017b93affe58110a5474e5ebcb2662 + md5: a46aa56c0ca7cc2bd38baffc2686f0a6 + depends: + - click >=8.0.0 + - python >=3.7 + - typing_extensions >=3.7.4.3 + constrains: + - rich >=10.11.0 + - typer >=0.12.5,<0.12.6.0a0 + - shellingham >=1.3.0 + license: MIT + license_family: MIT + size: 45641 + timestamp: 1724613646022 +- kind: conda + name: typer-slim-standard + version: 0.12.5 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.5-hd8ed1ab_0.conda + sha256: bb298b116159ec1085f6b29eaeb982006651a0997eda08de8b70cfb6177297f3 + md5: 2dc1ee4046de0692077e9aa9ba351d36 + depends: + - rich + - shellingham + - typer-slim 0.12.5 pyhd8ed1ab_0 + license: MIT + license_family: MIT + size: 46817 + timestamp: 1724613648907 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 + md5: 52d648bd608f5737b123f510bb5514b5 + depends: + - typing_extensions 4.12.2 pyha770c72_0 + license: PSF-2.0 + license_family: PSF + size: 10097 + timestamp: 1717802659025 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + size: 39888 + timestamp: 1717802653893 +- 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_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: 6b55867f385dd762ed99ea687af32a69 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 98076 + timestamp: 1726496531769 +- kind: conda + name: uvicorn + version: 0.32.0 + 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 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.8 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 49065 + timestamp: 1730219789315 +- kind: conda + name: uvicorn-standard + version: 0.32.0 + 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 + depends: + - __unix + - httptools >=0.5.0 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.32.0 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 +- 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: watchfiles + version: 0.24.0 + build: py312h12e396e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 + md5: fa5bb5b364b0f8162d67c31009c985c9 + 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: 397205 + timestamp: 1725347165866 +- kind: conda + name: watchfiles + version: 0.24.0 + build: py312he431725_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 + md5: 7fd741404e6fcab22a988ee6742dc778 + 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: 342896 + timestamp: 1725347401713 +- kind: conda + name: websockets + version: '13.1' + build: py312h024a12e_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-13.1-py312h024a12e_0.conda + sha256: 5e21d67cb8f6ed9433791235b6895b2623312dbaccd95201abba726ab6cf2027 + md5: fc2912e966527b1b2cc7a28c58e7b468 + 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: 238360 + timestamp: 1727013548151 +- kind: conda + name: websockets + version: '13.1' + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/websockets-13.1-py312h66e93f0_0.conda + sha256: fd045d3de3b46bd9bbf39a8169b0ccbfb9087caeb036fed32a2dfbf33c9b05ee + md5: c2647bf776646075ccb357189aabdf54 + 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: 238238 + timestamp: 1727013475463 +- 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 + 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: 59642 + timestamp: 1724958200454 +- 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 + 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: 62624 + timestamp: 1724958046744 +- 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.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: 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: yarl + version: 1.16.0 + build: py312h0bf5046_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.16.0-py312h0bf5046_0.conda + sha256: 2485912fa1c1acf51501519cd4d0253234f7e5b243093985b26ce167fdd67407 + md5: 81e954d5e6d3465d00f040b8ac1a8f67 + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.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: 138281 + timestamp: 1729798786022 +- kind: conda + name: yarl + version: 1.16.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.16.0-py312h66e93f0_0.conda + sha256: e9718b1f67f7359dee66995164ff734890066ad2eecb483b08f3f35b3f813c2d + md5: c3f4a6b56026c22319bf31514662b283 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 147820 + timestamp: 1729798523861 +- kind: conda + name: zeromq + version: 4.3.5 + build: h3b0a872_6 + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda + sha256: e67288b1c98a31ee58a5c07bdd873dbe08e75f752e1ad605d5e8c0697339903e + md5: 113506c8d2d558e733f5c38f6bf08c50 + 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: 335528 + timestamp: 1728364029042 +- kind: conda + name: zeromq + version: 4.3.5 + build: h9f5b81c_6 + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda + sha256: 5c5061c976141eccbbb2aec21483ddd10fd1df4fd9bcf638e3fd57b2bd85721f + md5: 84121ef1717cdfbecedeae70142706cc + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 280870 + timestamp: 1728363954972 +- kind: conda + name: zipp + version: 3.20.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 + md5: 4daaed111c05672ae669f7036ee5bba3 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 21409 + timestamp: 1726248679175 +- 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: 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: 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/mojoproject.toml b/mojoproject.toml new file mode 100644 index 0000000..26c946a --- /dev/null +++ b/mojoproject.toml @@ -0,0 +1,14 @@ +[project] +authors = ["Cristian Adamo", "Manuel Saelices"] +channels = ["conda-forge", "https://conda.modular.com/max-nightly"] +description = "Add a short description here" +name = "mojo-libc" +platforms = ["linux-64", "osx-arm64"] +version = "0.1.4" + +[tasks] +build = { cmd = "rattler-build build --recipe recipes -c https://conda.modular.com/max-nightly -c conda-forge --skip-existing=all", env = {MODULAR_MOJO_IMPORT_PATH = "$CONDA_PREFIX/lib/mojo"} } +publish = { cmd = "bash scripts/publish.sh", env = { PREFIX_API_KEY = "$PREFIX_API_KEY" } } + +[dependencies] +max = ">=24.5.0,<25" diff --git a/recipes/recipe.yaml b/recipes/recipe.yaml new file mode 100644 index 0000000..a48a06d --- /dev/null +++ b/recipes/recipe.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json + +context: + version: "0.1.4" + +package: + name: "libc" + version: 0.1.4 + +source: + - path: ../src + - path: ../LICENSE + +build: + script: + - mkdir -p ${PREFIX}/lib/mojo + - magic run mojo package libc -o ${PREFIX}/lib/mojo/libc.mojopkg + +requirements: + run: + - max >=24.5.0 + +about: + homepage: https://github.com/crisadamo/mojo-libc + license: MIT + license_file: LICENSE + summary: Mojo's libc support + repository: https://github.com/crisadamo/mojo-libc diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..3ef48dd --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +mojo package src/libc -o libc.mojopkg diff --git a/scripts/publish.sh b/scripts/publish.sh new file mode 100755 index 0000000..e081260 --- /dev/null +++ b/scripts/publish.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# ignore errors because we want to ignore duplicate packages +for file in $CONDA_BLD_PATH/**/*.conda; do + magic run rattler-build upload prefix -c "mojo-community" "$file" || true +done + +rm $CONDA_BLD_PATH/**/*.conda \ No newline at end of file diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh new file mode 100755 index 0000000..4a6b98a --- /dev/null +++ b/scripts/run-tests.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +mojo test -I src/ tests/ diff --git a/src/libc/__init__.mojo b/src/libc/__init__.mojo new file mode 100644 index 0000000..6765aac --- /dev/null +++ b/src/libc/__init__.mojo @@ -0,0 +1 @@ +from ._libc import * diff --git a/src/libc/_libc.mojo b/src/libc/_libc.mojo new file mode 100644 index 0000000..225107f --- /dev/null +++ b/src/libc/_libc.mojo @@ -0,0 +1,934 @@ +from builtin.builtin_list import _LITRefPackHelper +from memory import memcpy, Pointer, UnsafePointer +from sys.ffi import ( + c_char, + c_int, + c_long, + c_uint, + external_call, + OpaquePointer, +) +from sys.info import sizeof +from utils import StaticTuple + +alias IPPROTO_IPV6 = 41 +alias IPV6_V6ONLY = 26 +alias EPROTONOSUPPORT = 93 + +# Adapted from https://github.com/gabrieldemarmiesse/mojo-stdlib-extensions/ . Huge thanks to Gabriel! + +alias FD = c_int +alias FD_STDIN: FD = 0 +alias FD_STDOUT: FD = 1 +alias FD_STDERR: FD = 2 + +alias SUCCESS = 0 +alias GRND_NONBLOCK: UInt8 = 1 + +alias char_UnsafePointer = UnsafePointer[c_char] + +# Adapted from https://github.com/crisadamo/mojo-Libc . Huge thanks to Cristian! +# C types +alias c_void = UInt8 +alias c_schar = Int8 +alias c_uchar = UInt8 +alias c_short = Int16 +alias c_ushort = UInt16 +alias c_ulong = UInt64 +alias c_float = Float32 +alias c_double = Float64 + +# `Int` is known to be machine's width +alias c_size_t = Int +alias c_ssize_t = Int + +alias ptrdiff_t = Int64 +alias intptr_t = Int64 +alias uintptr_t = UInt64 + +# --- ( error.h Constants )----------------------------------------------------- +alias EPERM = 1 +alias ENOENT = 2 +alias ESRCH = 3 +alias EINTR = 4 +alias EIO = 5 +alias ENXIO = 6 +alias E2BIG = 7 +alias ENOEXEC = 8 +alias EBADF = 9 +alias ECHILD = 10 +alias EAGAIN = 11 +alias ENOMEM = 12 +alias EACCES = 13 +alias EFAULT = 14 +alias ENOTBLK = 15 +alias EBUSY = 16 +alias EEXIST = 17 +alias EXDEV = 18 +alias ENODEV = 19 +alias ENOTDIR = 20 +alias EISDIR = 21 +alias EINVAL = 22 +alias ENFILE = 23 +alias EMFILE = 24 +alias ENOTTY = 25 +alias ETXTBSY = 26 +alias EFBIG = 27 +alias ENOSPC = 28 +alias ESPIPE = 29 +alias EROFS = 30 +alias EMLINK = 31 +alias EPIPE = 32 +alias EDOM = 33 +alias ERANGE = 34 +alias EWOULDBLOCK = EAGAIN + +alias Bytes = List[Byte, True] + + +fn cftob(val: c_int) -> Bool: + """Convert C-like failure (-1) to Bool.""" + return rebind[Bool](val > 0) + + +# --- ( Network Related Constants )--------------------------------------------- +alias sa_family_t = c_ushort +alias socklen_t = c_uint +alias in_addr_t = c_uint +alias in_port_t = c_ushort + +# Address Family Constants +alias AF_UNSPEC = 0 +alias AF_UNIX = 1 +alias AF_LOCAL = AF_UNIX +alias AF_INET = 2 +alias AF_AX25 = 3 +alias AF_IPX = 4 +alias AF_APPLETALK = 5 +alias AF_NETROM = 6 +alias AF_BRIDGE = 7 +alias AF_ATMPVC = 8 +alias AF_X25 = 9 +alias AF_INET6 = 10 +alias AF_ROSE = 11 +alias AF_DECnet = 12 +alias AF_NETBEUI = 13 +alias AF_SECURITY = 14 +alias AF_KEY = 15 +alias AF_NETLINK = 16 +alias AF_ROUTE = AF_NETLINK +alias AF_PACKET = 17 +alias AF_ASH = 18 +alias AF_ECONET = 19 +alias AF_ATMSVC = 20 +alias AF_RDS = 21 +alias AF_SNA = 22 +alias AF_IRDA = 23 +alias AF_PPPOX = 24 +alias AF_WANPIPE = 25 +alias AF_LLC = 26 +alias AF_CAN = 29 +alias AF_TIPC = 30 +alias AF_BLUETOOTH = 31 +alias AF_IUCV = 32 +alias AF_RXRPC = 33 +alias AF_ISDN = 34 +alias AF_PHONET = 35 +alias AF_IEEE802154 = 36 +alias AF_CAIF = 37 +alias AF_ALG = 38 +alias AF_NFC = 39 +alias AF_VSOCK = 40 +alias AF_KCM = 41 +alias AF_QIPCRTR = 42 +alias AF_MAX = 43 + +alias PF_UNSPEC = AF_UNSPEC +alias PF_UNIX = AF_UNIX +alias PF_LOCAL = AF_LOCAL +alias PF_INET = AF_INET +alias PF_AX25 = AF_AX25 +alias PF_IPX = AF_IPX +alias PF_APPLETALK = AF_APPLETALK +alias PF_NETROM = AF_NETROM +alias PF_BRIDGE = AF_BRIDGE +alias PF_ATMPVC = AF_ATMPVC +alias PF_X25 = AF_X25 +alias PF_INET6 = AF_INET6 +alias PF_ROSE = AF_ROSE +alias PF_DECnet = AF_DECnet +alias PF_NETBEUI = AF_NETBEUI +alias PF_SECURITY = AF_SECURITY +alias PF_KEY = AF_KEY +alias PF_NETLINK = AF_NETLINK +alias PF_ROUTE = AF_ROUTE +alias PF_PACKET = AF_PACKET +alias PF_ASH = AF_ASH +alias PF_ECONET = AF_ECONET +alias PF_ATMSVC = AF_ATMSVC +alias PF_RDS = AF_RDS +alias PF_SNA = AF_SNA +alias PF_IRDA = AF_IRDA +alias PF_PPPOX = AF_PPPOX +alias PF_WANPIPE = AF_WANPIPE +alias PF_LLC = AF_LLC +alias PF_CAN = AF_CAN +alias PF_TIPC = AF_TIPC +alias PF_BLUETOOTH = AF_BLUETOOTH +alias PF_IUCV = AF_IUCV +alias PF_RXRPC = AF_RXRPC +alias PF_ISDN = AF_ISDN +alias PF_PHONET = AF_PHONET +alias PF_IEEE802154 = AF_IEEE802154 +alias PF_CAIF = AF_CAIF +alias PF_ALG = AF_ALG +alias PF_NFC = AF_NFC +alias PF_VSOCK = AF_VSOCK +alias PF_KCM = AF_KCM +alias PF_QIPCRTR = AF_QIPCRTR +alias PF_MAX = AF_MAX + +# Socket Type constants +alias SOCK_STREAM = 1 +alias SOCK_DGRAM = 2 +alias SOCK_RAW = 3 +alias SOCK_RDM = 4 +alias SOCK_SEQPACKET = 5 +alias SOCK_DCCP = 6 +alias SOCK_PACKET = 10 +alias SOCK_CLOEXEC = O_CLOEXEC +alias SOCK_NONBLOCK = O_NONBLOCK + +# Address Information +alias AI_PASSIVE = 1 +alias AI_CANONNAME = 2 +alias AI_NUMERICHOST = 4 +alias AI_V4MAPPED = 8 +alias AI_ALL = 16 +alias AI_ADDRCONFIG = 32 +alias AI_IDN = 64 + +alias INET_ADDRSTRLEN = 16 +alias INET6_ADDRSTRLEN = 46 + +alias SHUT_RD = 0 +alias SHUT_WR = 1 +alias SHUT_RDWR = 2 + +alias SOL_SOCKET = 1 + +alias SO_DEBUG = 1 +alias SO_REUSEADDR = 2 +alias SO_TYPE = 3 +alias SO_ERROR = 4 +alias SO_DONTROUTE = 5 +alias SO_BROADCAST = 6 +alias SO_SNDBUF = 7 +alias SO_RCVBUF = 8 +alias SO_KEEPALIVE = 9 +alias SO_OOBINLINE = 10 +alias SO_NO_CHECK = 11 +alias SO_PRIORITY = 12 +alias SO_LINGER = 13 +alias SO_BSDCOMPAT = 14 +alias SO_REUSEPORT = 15 +alias SO_PASSCRED = 16 +alias SO_PEERCRED = 17 +alias SO_RCVLOWAT = 18 +alias SO_SNDLOWAT = 19 +alias SO_RCVTIMEO = 20 +alias SO_SNDTIMEO = 21 +alias SO_RCVTIMEO_OLD = 20 +alias SO_SNDTIMEO_OLD = 21 +alias SO_SECURITY_AUTHENTICATION = 22 +alias SO_SECURITY_ENCRYPTION_TRANSPORT = 23 +alias SO_SECURITY_ENCRYPTION_NETWORK = 24 +alias SO_BINDTODEVICE = 25 +alias SO_ATTACH_FILTER = 26 +alias SO_DETACH_FILTER = 27 +alias SO_GET_FILTER = SO_ATTACH_FILTER +alias SO_PEERNAME = 28 +alias SO_TIMESTAMP = 29 +alias SO_TIMESTAMP_OLD = 29 +alias SO_ACCEPTCONN = 30 +alias SO_PEERSEC = 31 +alias SO_SNDBUFFORCE = 32 +alias SO_RCVBUFFORCE = 33 +alias SO_PASSSEC = 34 +alias SO_TIMESTAMPNS = 35 +alias SO_TIMESTAMPNS_OLD = 35 +alias SO_MARK = 36 +alias SO_TIMESTAMPING = 37 +alias SO_TIMESTAMPING_OLD = 37 +alias SO_PROTOCOL = 38 +alias SO_DOMAIN = 39 +alias SO_RXQ_OVFL = 40 +alias SO_WIFI_STATUS = 41 +alias SCM_WIFI_STATUS = SO_WIFI_STATUS +alias SO_PEEK_OFF = 42 +alias SO_NOFCS = 43 +alias SO_LOCK_FILTER = 44 +alias SO_SELECT_ERR_QUEUE = 45 +alias SO_BUSY_POLL = 46 +alias SO_MAX_PACING_RATE = 47 +alias SO_BPF_EXTENSIONS = 48 +alias SO_INCOMING_CPU = 49 +alias SO_ATTACH_BPF = 50 +alias SO_DETACH_BPF = SO_DETACH_FILTER +alias SO_ATTACH_REUSEPORT_CBPF = 51 +alias SO_ATTACH_REUSEPORT_EBPF = 52 +alias SO_CNX_ADVICE = 53 +alias SCM_TIMESTAMPING_OPT_STATS = 54 +alias SO_MEMINFO = 55 +alias SO_INCOMING_NAPI_ID = 56 +alias SO_COOKIE = 57 +alias SCM_TIMESTAMPING_PKTINFO = 58 +alias SO_PEERGROUPS = 59 +alias SO_ZEROCOPY = 60 +alias SO_TXTIME = 61 +alias SCM_TXTIME = SO_TXTIME +alias SO_BINDTOIFINDEX = 62 +alias SO_TIMESTAMP_NEW = 63 +alias SO_TIMESTAMPNS_NEW = 64 +alias SO_TIMESTAMPING_NEW = 65 +alias SO_RCVTIMEO_NEW = 66 +alias SO_SNDTIMEO_NEW = 67 +alias SO_DETACH_REUSEPORT_BPF = 68 + + +# --- ( Network Related Structs )----------------------------------------------- +@value +@register_passable("trivial") +struct in_addr: + var s_addr: in_addr_t + + +@value +@register_passable("trivial") +struct in6_addr: + var s6_addr: StaticTuple[c_char, 16] + + +@value +@register_passable("trivial") +struct sockaddr: + var sa_family: sa_family_t + var sa_data: StaticTuple[c_char, 14] + + +@value +@register_passable("trivial") +struct sockaddr_in: + var sin_family: sa_family_t + var sin_port: in_port_t + var sin_addr: in_addr + var sin_zero: StaticTuple[c_char, 8] + + +@value +@register_passable("trivial") +struct sockaddr_in6: + var sin6_family: sa_family_t + var sin6_port: in_port_t + var sin6_flowinfo: c_uint + var sin6_addr: in6_addr + var sin6_scope_id: c_uint + + +@value +@register_passable("trivial") +struct addrinfo: + var ai_flags: c_int + var ai_family: c_int + var ai_socktype: c_int + var ai_protocol: c_int + var ai_addrlen: socklen_t + var ai_addr: UnsafePointer[sockaddr] + var ai_canonname: UnsafePointer[c_char] + var ai_next: UnsafePointer[c_void] + + fn __init__(inout self) -> None: + self.ai_flags = 0 + self.ai_family = 0 + self.ai_socktype = 0 + self.ai_protocol = 0 + self.ai_addrlen = 0 + self.ai_addr = UnsafePointer[sockaddr]() + self.ai_canonname = UnsafePointer[c_char]() + self.ai_next = UnsafePointer[c_void]() + + +fn strlen(s: UnsafePointer[c_char]) -> c_size_t: + """Libc POSIX `strlen` function + Reference: https://man7.org/linux/man-pages/man3/strlen.3p.html + Fn signature: size_t strlen(const char *s). + + Args: s: A UnsafePointer to a C string. + Returns: The length of the string. + """ + return external_call["strlen", c_size_t, UnsafePointer[c_char]](s) + + +# --- ( Network Related Syscalls & Structs )------------------------------------ + + +fn htonl(hostlong: c_uint) -> c_uint: + """Libc POSIX `htonl` function + Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html + Fn signature: uint32_t htonl(uint32_t hostlong). + + Args: hostlong: A 32-bit integer in host byte order. + Returns: The value provided in network byte order. + """ + return external_call["htonl", c_uint, c_uint](hostlong) + + +fn htons(hostshort: c_ushort) -> c_ushort: + """Libc POSIX `htons` function + Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html + Fn signature: uint16_t htons(uint16_t hostshort). + + Args: hostshort: A 16-bit integer in host byte order. + Returns: The value provided in network byte order. + """ + return external_call["htons", c_ushort, c_ushort](hostshort) + + +fn ntohl(netlong: c_uint) -> c_uint: + """Libc POSIX `ntohl` function + Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html + Fn signature: uint32_t ntohl(uint32_t netlong). + + Args: netlong: A 32-bit integer in network byte order. + Returns: The value provided in host byte order. + """ + return external_call["ntohl", c_uint, c_uint](netlong) + + +fn ntohs(netshort: c_ushort) -> c_ushort: + """Libc POSIX `ntohs` function + Reference: https://man7.org/linux/man-pages/man3/htonl.3p.html + Fn signature: uint16_t ntohs(uint16_t netshort). + + Args: netshort: A 16-bit integer in network byte order. + Returns: The value provided in host byte order. + """ + return external_call["ntohs", c_ushort, c_ushort](netshort) + + +fn inet_ntop( + af: c_int, + src: UnsafePointer[c_void], + dst: UnsafePointer[c_char], + size: socklen_t, +) -> UnsafePointer[c_char]: + """Libc POSIX `inet_ntop` function + Reference: https://man7.org/linux/man-pages/man3/inet_ntop.3p.html. + Fn signature: const char *inet_ntop(int af, const void *restrict src, char *restrict dst, socklen_t size). + + Args: + af: Address Family see AF_ aliases. + src: A UnsafePointer to a binary address. + dst: A UnsafePointer to a buffer to store the result. + size: The size of the buffer. + + Returns: + A UnsafePointer to the buffer containing the result. + """ + return external_call[ + "inet_ntop", + UnsafePointer[c_char], # FnName, RetType + c_int, + UnsafePointer[c_void], + UnsafePointer[c_char], + socklen_t, # Args + ](af, src, dst, size) + + +fn inet_pton( + af: c_int, src: UnsafePointer[c_char], dst: UnsafePointer[c_void] +) -> c_int: + """Libc POSIX `inet_pton` function + Reference: https://man7.org/linux/man-pages/man3/inet_ntop.3p.html + Fn signature: int inet_pton(int af, const char *restrict src, void *restrict dst). + + Args: af: Address Family see AF_ aliases. + src: A UnsafePointer to a string containing the address. + dst: A UnsafePointer to a buffer to store the result. + Returns: 1 on success, 0 if the input is not a valid address, -1 on error. + """ + return external_call[ + "inet_pton", + c_int, + c_int, + UnsafePointer[c_char], + UnsafePointer[c_void], + ](af, src, dst) + + +fn inet_addr(cp: UnsafePointer[c_char]) -> in_addr_t: + """Libc POSIX `inet_addr` function + Reference: https://man7.org/linux/man-pages/man3/inet_addr.3p.html + Fn signature: in_addr_t inet_addr(const char *cp). + + Args: cp: A UnsafePointer to a string containing the address. + Returns: The address in network byte order. + """ + return external_call["inet_addr", in_addr_t, UnsafePointer[c_char]](cp) + + +fn inet_ntoa(addr: in_addr) -> UnsafePointer[c_char]: + """Libc POSIX `inet_ntoa` function + Reference: https://man7.org/linux/man-pages/man3/inet_addr.3p.html + Fn signature: char *inet_ntoa(struct in_addr in). + + Args: in: A UnsafePointer to a string containing the address. + Returns: The address in network byte order. + """ + return external_call["inet_ntoa", UnsafePointer[c_char], in_addr](addr) + + +fn socket(domain: c_int, type: c_int, protocol: c_int) -> FD: + """Libc POSIX `socket` function + Reference: https://man7.org/linux/man-pages/man3/socket.3p.html + Fn signature: int socket(int domain, int type, int protocol). + + Args: domain: Address Family see AF_ aliases. + type: Socket Type see SOCK_ aliases. + protocol: The protocol to use. + Returns: A File Descriptor or -1 in case of failure. + """ + return external_call["socket", FD, c_int, c_int, c_int]( # FnName, RetType # Args + domain, type, protocol + ) + + +fn setsockopt( + socket: FD, + level: c_int, + option_name: c_int, + option_value: UnsafePointer[c_void], + option_len: socklen_t, +) -> c_int: + """Libc POSIX `setsockopt` function + Reference: https://man7.org/linux/man-pages/man3/setsockopt.3p.html + Fn signature: int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len). + + Args: socket: A File Descriptor. + level: The protocol level. + option_name: The option to set. + option_value: A UnsafePointer to the value to set. + option_len: The size of the value. + Returns: 0 on success, -1 on error. + """ + return external_call[ + "setsockopt", + c_int, # FnName, RetType + FD, + c_int, + c_int, + UnsafePointer[c_void], + socklen_t, # Args + ](socket, level, option_name, option_value, option_len) + + +fn fcntl(fd: FD, cmd: c_int, arg: c_int = 0) -> c_int: + """Libc POSIX `fcntl` function + Reference: https + Fn signature: int fcntl(int fd, int cmd, int arg). + + Args: fd: A File Descriptor. + cmd: The command to execute. + arg: The argument for the command. + Returns: The result of the command. + """ + return external_call["fcntl", c_int, FD, c_int, c_int](fd, cmd, arg) + + +fn getsockopt( + socket: FD, + level: c_int, + option_name: c_int, + option_value: UnsafePointer[c_void], + option_len: UnsafePointer[socklen_t], +) -> c_int: + """Libc POSIX `getsockopt` function. + + Reference: https://man7.org/linux + + Args: socket: A File Descriptor. + level: The protocol level. + option_name: The option to get. + option_value: A UnsafePointer to the value to get. + option_len: A UnsafePointer to the size of the value. + Returns: 0 on success, -1 on error. + """ + return external_call[ + "getsockopt", + c_int, # FnName, RetType + FD, + c_int, + c_int, + UnsafePointer[c_void], + UnsafePointer[socklen_t], # Args + ](socket, level, option_name, option_value, option_len) + + +fn getsockname( + socket: FD, + address: UnsafePointer[sockaddr], + address_len: UnsafePointer[socklen_t], +) -> c_int: + """Libc POSIX `getsockname` function + Reference: https://man7.org/linux/man-pages/man3/getsockname.3p.html + Fn signature: int getsockname(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len). + + Args: socket: A File Descriptor. + address: A UnsafePointer to a buffer to store the address of the peer. + address_len: A UnsafePointer to the size of the buffer. + Returns: 0 on success, -1 on error. + """ + return external_call[ + "getsockname", + c_int, # FnName, RetType + FD, + UnsafePointer[sockaddr], + UnsafePointer[socklen_t], # Args + ](socket, address, address_len) + + +fn getpeername( + sockfd: FD, + addr: UnsafePointer[sockaddr], + address_len: UnsafePointer[socklen_t], +) -> c_int: + """Libc POSIX `getpeername` function + Reference: https://man7.org/linux/man-pages/man2/getpeername.2.html + Fn signature: int getpeername(int socket, struct sockaddr *restrict addr, socklen_t *restrict address_len). + + Args: sockfd: A File Descriptor. + addr: A UnsafePointer to a buffer to store the address of the peer. + address_len: A UnsafePointer to the size of the buffer. + Returns: 0 on success, -1 on error. + """ + return external_call[ + "getpeername", + c_int, # FnName, RetType + FD, + UnsafePointer[sockaddr], + UnsafePointer[socklen_t], # Args + ](sockfd, addr, address_len) + + +fn bind(socket: FD, address: UnsafePointer[sockaddr], address_len: socklen_t) -> c_int: + """Libc POSIX `bind` function + Reference: https://man7.org/linux/man-pages/man3/bind.3p.html + Fn signature: int bind(int socket, const struct sockaddr *address, socklen_t address_len). + """ + return external_call["bind", c_int, FD, UnsafePointer[sockaddr], socklen_t]( + socket, address, address_len + ) + + +fn listen(socket: FD, backlog: c_int) -> c_int: + """Libc POSIX `listen` function + Reference: https://man7.org/linux/man-pages/man3/listen.3p.html + Fn signature: int listen(int socket, int backlog). + + Args: socket: A File Descriptor. + backlog: The maximum length of the queue of pending connections. + Returns: 0 on success, -1 on error. + """ + return external_call["listen", c_int, FD, c_int](socket, backlog) + + +fn accept( + socket: FD, + address: UnsafePointer[sockaddr], + address_len: UnsafePointer[socklen_t], +) -> FD: + """Libc POSIX `accept` function + Reference: https://man7.org/linux/man-pages/man3/accept.3p.html + Fn signature: int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len). + + Args: socket: A File Descriptor. + address: A UnsafePointer to a buffer to store the address of the peer. + address_len: A UnsafePointer to the size of the buffer. + Returns: A File Descriptor or -1 in case of failure. + """ + return external_call[ + "accept", + c_int, # FnName, RetType + FD, + UnsafePointer[sockaddr], + UnsafePointer[socklen_t], # Args + ](socket, address, address_len) + + +fn connect( + socket: FD, address: UnsafePointer[sockaddr], address_len: socklen_t +) -> c_int: + """Libc POSIX `connect` function + Reference: https://man7.org/linux/man-pages/man3/connect.3p.html + Fn signature: int connect(int socket, const struct sockaddr *address, socklen_t address_len). + + Args: socket: A File Descriptor. + address: A UnsafePointer to the address to connect to. + address_len: The size of the address. + Returns: 0 on success, -1 on error. + """ + return external_call["connect", FD](socket, address, address_len) + + +fn recv( + socket: FD, + buffer: UnsafePointer[UInt8], + length: c_size_t, + flags: c_int, +) -> c_ssize_t: + """Libc POSIX `recv` function + Reference: https://man7.org/linux/man-pages/man3/recv.3p.html + Fn signature: ssize_t recv(int socket, void *buffer, size_t length, int flags). + """ + return external_call[ + "recv", + c_ssize_t, # FnName, RetType + FD, + UnsafePointer[UInt8], + c_size_t, + c_int, # Args + ](socket, buffer, length, flags) + + +fn send( + socket: FD, buffer: UnsafePointer[c_void], length: c_size_t, flags: c_int +) -> c_ssize_t: + """Libc POSIX `send` function + Reference: https://man7.org/linux/man-pages/man3/send.3p.html + Fn signature: ssize_t send(int socket, const void *buffer, size_t length, int flags). + + Args: socket: A File Descriptor. + buffer: A UnsafePointer to the buffer to send. + length: The size of the buffer. + flags: Flags to control the behaviour of the function. + Returns: The number of bytes sent or -1 in case of failure. + """ + return external_call["send", c_ssize_t](socket, buffer, length, flags) + + +fn shutdown(socket: FD, how: c_int) -> c_int: + """Libc POSIX `shutdown` function + Reference: https://man7.org/linux/man-pages/man3/shutdown.3p.html + Fn signature: int shutdown(int socket, int how). + + Args: socket: A File Descriptor. + how: How to shutdown the socket. + Returns: 0 on success, -1 on error. + """ + return external_call["shutdown", FD, c_int, c_int]( # FnName, RetType # Args + socket, how + ) + + +fn getaddrinfo( + nodename: UnsafePointer[c_char], + servname: UnsafePointer[c_char], + hints: UnsafePointer[addrinfo], + res: UnsafePointer[UnsafePointer[addrinfo]], +) -> c_int: + """Libc POSIX `getaddrinfo` function + Reference: https://man7.org/linux/man-pages/man3/getaddrinfo.3p.html + Fn signature: int getaddrinfo(const char *restrict nodename, const char *restrict servname, const struct addrinfo *restrict hints, struct addrinfo **restrict res). + """ + return external_call[ + "getaddrinfo", + c_int, # FnName, RetType + UnsafePointer[c_char], + UnsafePointer[c_char], + UnsafePointer[addrinfo], # Args + UnsafePointer[UnsafePointer[addrinfo]], # Args + ](nodename, servname, hints, res) + + +fn gai_strerror(ecode: c_int) -> UnsafePointer[c_char]: + """Libc POSIX `gai_strerror` function + Reference: https://man7.org/linux/man-pages/man3/gai_strerror.3p.html + Fn signature: const char *gai_strerror(int ecode). + + Args: ecode: The error code. + Returns: A UnsafePointer to a string describing the error. + """ + return external_call[ + "gai_strerror", UnsafePointer[c_char], c_int # FnName, RetType # Args + ](ecode) + + +fn inet_pton(address_family: Int, address: String) -> Int: + var ip_buf_size = 4 + if address_family == AF_INET6: + ip_buf_size = 16 + + var ip_buf = UnsafePointer[c_void].alloc(ip_buf_size) + _ = inet_pton(address_family, address.unsafe_cstr_ptr(), ip_buf) + return int(ip_buf.bitcast[in_addr]()[].s_addr) + + +# --- ( File Related Syscalls & Structs )--------------------------------------- +alias O_NONBLOCK = 16384 +alias O_ACCMODE = 3 +alias O_CLOEXEC = 524288 + + +fn close(fildes: FD) -> c_int: + """Libc POSIX `close` function + Reference: https://man7.org/linux/man-pages/man3/close.3p.html + Fn signature: int close(int fildes). + + Args: + fildes: A File Descriptor to close. + + Returns: + Upon successful completion, 0 shall be returned; otherwise, -1 + shall be returned and errno set to indicate the error. + """ + return external_call["close", c_int, c_int](fildes) + + +fn open[*T: AnyType](path: UnsafePointer[c_char], oflag: c_int, *args: *T) -> c_int: + """Libc POSIX `open` function + Reference: https://man7.org/linux/man-pages/man3/open.3p.html + Fn signature: int open(const char *path, int oflag, ...). + + Args: + path: A UnsafePointer to a C string containing the path to open. + oflag: The flags to open the file with. + args: The optional arguments. + Returns: + A File Descriptor or -1 in case of failure + """ + return external_call["open", c_int](path, oflag, args) + + +fn printf[*T: AnyType](format: UnsafePointer[c_char], *args: *T) -> c_int: + """Libc POSIX `printf` function + Reference: https://man7.org/linux/man-pages/man3/fprintf.3p.html + Fn signature: int printf(const char *restrict format, ...). + + Args: format: A UnsafePointer to a C string containing the format. + args: The optional arguments. + Returns: The number of bytes written or -1 in case of failure. + """ + var loaded_pack = _LITRefPackHelper(args._value).get_loaded_kgen_pack() + + return __mlir_op.`pop.external_call`[ + func = "printf".value, + variadicType = __mlir_attr[ + `(`, + `!kgen.pointer,`, + `!kgen.pointer>`, + `) -> !pop.scalar`, + ], + _type=c_int, + ](format, loaded_pack) + + +fn read(fildes: FD, buf: UnsafePointer[c_void], nbyte: c_size_t) -> c_int: + """Libc POSIX `read` function + Reference: https://man7.org/linux/man-pages/man3/read.3p.html + Fn signature: sssize_t read(int fildes, void *buf, size_t nbyte). + + Args: fildes: A File Descriptor. + buf: A UnsafePointer to a buffer to store the read data. + nbyte: The number of bytes to read. + Returns: The number of bytes read or -1 in case of failure. + """ + return external_call["read", c_ssize_t, FD, UnsafePointer[c_void], c_size_t]( + fildes, buf, nbyte + ) + + +fn write(fildes: FD, buf: UnsafePointer[c_void], nbyte: c_size_t) -> c_int: + """Libc POSIX `write` function + Reference: https://man7.org/linux/man-pages/man3/write.3p.html + Fn signature: ssize_t write(int fildes, const void *buf, size_t nbyte). + + Args: fildes: A File Descriptor. + buf: A UnsafePointer to a buffer to write. + nbyte: The number of bytes to write. + Returns: The number of bytes written or -1 in case of failure. + """ + return external_call["write", c_ssize_t, FD, UnsafePointer[c_void], c_size_t]( + fildes, buf, nbyte + ) + + +struct timeval: + var tv_sec: Int64 + var tv_usec: Int64 + + fn __init__(inout self, seconds: Int64, microseconds: Int64): + self.tv_sec = seconds + self.tv_usec = microseconds + + +@value +struct fd_set: + var fds_bits: StaticTuple[Int64, 16] + + fn __init__(inout self): + self.fds_bits = StaticTuple[Int64, 16]() + for i in range(16): + self.fds_bits[i] = 0 + + fn set(inout self, fd: FD): + var word = int(fd // 64) + var bit = int(fd % 64) + self.fds_bits[word] |= 1 << bit + + fn clear(inout self, fd: FD): + var word = int(fd // 64) + var bit = int(fd % 64) + self.fds_bits[word] &= ~(1 << bit) + + fn is_set(self, fd: Int) -> Bool: + var word = fd // 64 + var bit = fd % 64 + var result = (self.fds_bits[word] & (1 << bit)) != 0 + return result + + fn clear_all(inout self): + for i in range(16): + self.fds_bits[i] = 0 + + fn print_bits(self): + for i in range(16): + print("Word", i, ":", bin(self.fds_bits[i])) + + +fn select( + nfds: c_int, + readfds: UnsafePointer[fd_set], + writefds: UnsafePointer[fd_set], + exceptfds: UnsafePointer[fd_set], + timeout: UnsafePointer[timeval], +) -> c_int: + """Libc POSIX `select` function + Reference: https://man7.org/linux + Fn signature: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout). + + Args: nfds: The highest-numbered file descriptor in any of the three sets, plus 1. + readfds: A UnsafePointer to the set of file descriptors to read from. + writefds: A UnsafePointer to the set of file descriptors to write to. + exceptfds: A UnsafePointer to the set of file descriptors to check for exceptions. + timeout: A UnsafePointer to a timeval struct to set a timeout. + Returns: The number of file descriptors in the sets or -1 in case of failure. + """ + return external_call[ + "select", + c_int, # FnName, RetType + c_int, + UnsafePointer[fd_set], + UnsafePointer[fd_set], + UnsafePointer[fd_set], + UnsafePointer[timeval], # Args + ](nfds, readfds, writefds, exceptfds, timeout) diff --git a/tests/test_libc.mojo b/tests/test_libc.mojo new file mode 100644 index 0000000..f066dbb --- /dev/null +++ b/tests/test_libc.mojo @@ -0,0 +1,161 @@ +# Note: Additional tests for functions that require complex setups or network access +# (like bind, listen, accept, connect, send, recv, select with sockets, etc.) are +# not included here due to their complexity and potential side effects. + +from memory import UnsafePointer +from testing import assert_equal, assert_not_equal, assert_raises +from pathlib import Path, _dir_of_current_file + +from libc import ( + AF_INET, + AI_PASSIVE, + FD_STDOUT, + INET_ADDRSTRLEN, + SOCK_DGRAM, + SOCK_STREAM, + addrinfo, + c_char, + c_int, + c_uint, + c_ushort, + c_void, + cftob, + close, + external_call, + gai_strerror, + getaddrinfo, + htonl, + htons, + in_addr, + inet_addr, + inet_ntoa, + inet_ntop, + inet_pton, + ntohl, + ntohs, + printf, + sockaddr, + socket, + strlen, + write, +) + + +fn test_getaddrinfo() raises: + var host = String("127.0.0.1") + var host_ptr = host.unsafe_cstr_ptr() + var my_addrinfo = addrinfo() + var servinfo = UnsafePointer[addrinfo]().alloc(1) + servinfo.init_pointee_move(my_addrinfo) + + var hints = addrinfo() + hints.ai_family = AF_INET + hints.ai_socktype = SOCK_STREAM + hints.ai_flags = AI_PASSIVE + + var error = getaddrinfo( + host_ptr, + UnsafePointer[c_char](), + UnsafePointer.address_of(hints), + UnsafePointer.address_of(servinfo), + ) + assert_equal(error, 0, "getaddrinfo failed") + + var addrinfo = servinfo[] + + var ai_addr = addrinfo.ai_addr + var null_ptr = UnsafePointer[sockaddr]() + assert_not_equal(ai_addr, null_ptr, "ai_addr is null") + + +fn test_strlen() raises: + var s = String("Hello, world!") + var ptr = s.unsafe_cstr_ptr() + var length = strlen(ptr) + assert_equal(length, len(s), "strlen returned incorrect length") + + +fn test_htonl_ntohl() raises: + var host_value: c_uint = 0x12345678 + var net_value = htonl(host_value) + var host_value_converted_back = ntohl(net_value) + assert_equal( + host_value_converted_back, host_value, "htonl/ntohl failed to convert correctly" + ) + + +fn test_cftob() raises: + assert_equal(cftob(1), True, "cftob failed for value 1") + assert_equal(cftob(0), False, "cftob failed for value 0") + assert_equal(cftob(-1), False, "cftob failed for value -1") + assert_equal(cftob(100), True, "cftob failed for value 100") + + +fn test_inet_pton() raises: + var ip_str = String("127.0.0.1") + var result = inet_pton(AF_INET, ip_str) + assert_equal(result, 16777343, "inet_pton failed to convert IP address") + + +fn test_htons_ntohs() raises: + var host_value: c_ushort = 0x1234 + var net_value = htons(host_value) + var host_value_converted_back = ntohs(net_value) + assert_equal( + host_value_converted_back, host_value, "htons/ntohs failed to convert correctly" + ) + + +fn test_inet_ntop_pton() raises: + var ip_str = String("127.0.0.1") + var ip_str_ptr = ip_str.unsafe_cstr_ptr() + var addr = UnsafePointer[c_void]().alloc(4) # IPv4 address is 4 bytes + var ret = inet_pton(AF_INET, ip_str_ptr, addr) + assert_equal(ret, 1, "inet_pton failed to convert IP address") + + var buffer = UnsafePointer[c_char]().alloc(INET_ADDRSTRLEN) + var result = inet_ntop(AF_INET, addr, buffer, INET_ADDRSTRLEN) + var converted_ip_str = String(buffer) + assert_equal( + converted_ip_str, ip_str, "inet_ntop failed to convert IP address back" + ) + + +fn test_inet_addr_ntoa() raises: + var ip_str = String("127.0.0.1") + var ip_str_ptr = ip_str.unsafe_cstr_ptr() + var addr = inet_addr(ip_str_ptr) + assert_not_equal(addr, -1, "inet_addr failed to convert IP address") + + var in_addr_struct = in_addr(1000) + in_addr_struct.s_addr = addr + + var addr_str_ptr = inet_ntoa(in_addr_struct) + var addr_str = String(addr_str_ptr) + assert_equal(addr_str, ip_str, "inet_ntoa failed to convert address back") + + +fn test_socket_close() raises: + var fd = socket(AF_INET, SOCK_STREAM, 0) + assert_not_equal(fd, -1, "socket failed to create socket") + var close_result = close(fd) + assert_equal(close_result, 0, "close failed to close socket") + + +fn test_printf() raises: + var format_str = String("Hello, %s!\n") + var format_ptr = format_str.unsafe_cstr_ptr() + var name = String("world") + var name_ptr = name.unsafe_cstr_ptr() + var result = printf(format_ptr, name_ptr) + assert_equal(result, len("Hello, world!\n"), "printf failed to print correctly") + + +# TODO: This function cannot be executed in tests because of this error: +# failed to legalize operation 'pop.external_call' that was explicitly marked illegal +# it works if you run it in any Mojo file, though. +# fn test_write() raises: +# var msg = String("Hello, world!\n") +# var msg_ptr = msg.unsafe_cstr_ptr() +# var bytes_written = write(FD_STDOUT, msg_ptr.bitcast[c_void](), len(msg)) +# assert_equal(bytes_written, len(msg), "write failed to write to stdout")