mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 14:25:02 +00:00
Added official examples from github.com/modular/modular: - gpu-intro, gpu-functions, gpu-block-and-warp (GPU programming) - layout_tensor, layouts (tensor operations) - life (Conway's Game of Life) - operators (custom operators) - process (subprocess handling) - python-interop (Python integration) - testing (unit test patterns) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
55 lines
1.6 KiB
Mojo
55 lines
1.6 KiB
Mojo
# ===----------------------------------------------------------------------=== #
|
|
# Copyright (c) 2025, Modular Inc. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License v2.0 with LLVM Exceptions:
|
|
# https://llvm.org/LICENSE.txt
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# ===----------------------------------------------------------------------=== #
|
|
|
|
# DOC: mojo/docs/manual/python/mojo-from-python.mdx
|
|
|
|
from os import abort
|
|
|
|
from python import PythonObject
|
|
from python.bindings import PythonModuleBuilder
|
|
|
|
|
|
@fieldwise_init
|
|
struct Person(Movable, Representable):
|
|
var name: String
|
|
var age: Int
|
|
|
|
fn __repr__(self) -> String:
|
|
return String("Person(", self.name, ", ", self.age, ")")
|
|
|
|
@staticmethod
|
|
fn py_init(
|
|
out self: Person, args: PythonObject, kwargs: PythonObject
|
|
) raises:
|
|
# Validate argument count
|
|
if len(args) != 2:
|
|
raise Error("Person() takes exactly 2 arguments")
|
|
|
|
# Convert Python arguments to Mojo types
|
|
var name = String(py=args[0])
|
|
var age = Int(py=args[1])
|
|
|
|
self = Self(name, age)
|
|
|
|
|
|
@export
|
|
fn PyInit_person_module() -> PythonObject:
|
|
try:
|
|
var mb = PythonModuleBuilder("person_module")
|
|
|
|
_ = mb.add_type[Person]("Person").def_py_init[Person.py_init]()
|
|
|
|
return mb.finalize()
|
|
except e:
|
|
abort(String("error creating Python Mojo module:", e))
|