Pymxs, the 3DsMax bindings of Maxscript to Python doesn't come with any stubs

Overview

PyMXS Stubs generator

What

Pymxs, the 3DsMax bindings of Maxscript to Python doesn't come with any stubs. This is an attempt at generating stubs automatically by inspecting running code.

Generate stubs

Run generate_pymax_pyi.py in 3DsMax to generate stubs. Tested with 3DsMax 2021 (Python3).

Use stubs

Copy the pymxs.pyi file to a path where you'd usually be able to call import pymxs from.

These Stubs come as they are: I make no promises that they work or cover all your needs.

Development

  • Open Directory in VSCode
  • Pick the 3Ds Max Python as your interpreter
  • Unzip latest MXSPyCom Release into /mxspycom
  • Run debug/start_debug.py in Max
  • Run Debug configuration Python: Remote Attach
  • Run task Execute Script in 3Ds Max on generate_pymax_pyi.py file

Current scope

  • Works in 3Ds Max 2021
  • Works with Python 3
  • Gets properties of most 3DsMax objects

Missing from current version (to do)

  • Signatures for max script calls (need to go into __new__ constructors of the objects)
  • Some properties get skipped as the object they belong to can't be generated without the correct signature
  • No #Struct object types
  • No properties for regular object types (like Array)
  • Not all properties have the right hint (alot will still say None because they need initialization)
  • Some Max Scene clean up before, after, during script exectuion (this creates a TON of objects in your Max Scene)
  • Check other performance optimizations like turn off viewport rendering as applicable
  • Checking if everything is correct, including order of the pyi
  • Captialization rules - right now names are read as is, but might be worth enforcing some lowercase or CamelCase rules
  • Less hacky code
  • Streamline debug/development process
  • Encoding definition of pyi file
  • Callable for properties/arguments that need it

Contributing

Please feel free to fork and push Pull Requests my way. Also issues are welcome - in that case please include as much detail as possible.

Thanks

Autodesk License

3Ds Max, the maxscript API, pymxs and all other items belong to Autodesk.

Owner
Frieder Erdmann
Lead Technical Artist at Ubisoft Massive
Frieder Erdmann
Flake8 extension for enforcing trailing commas in python

Flake8 Extension to enforce better comma placement. Usage If you are using flake8 it's as easy as: pip install flake8-commas Now you can avoid those a

Python Code Quality Authority 127 Sep 03, 2022
Tool to check the completeness of MANIFEST.in for Python packages

check-manifest Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with

Marius Gedminas 270 Dec 26, 2022
MonkeyType as a pytest plugin.

MonkeyType as a pytest plugin.

Marius van Niekerk 36 Nov 24, 2022
Design by contract for Python. Write bug-free code. Add a few decorators, get static analysis and tests for free.

A Python library for design by contract (DbC) and checking values, exceptions, and side-effects. In a nutshell, deal empowers you to write bug-free co

Life4 473 Dec 28, 2022
Enforce the same configuration across multiple projects

Nitpick Flake8 plugin to enforce the same tool configuration (flake8, isort, mypy, Pylint...) across multiple Python projects. Useful if you maintain

Augusto W. Andreoli 315 Dec 25, 2022
Static type checker for Python

Static type checker for Python Speed Pyright is a fast type checker meant for large Python source bases. It can run in a “watch” mode and performs fas

Microsoft 9.2k Jan 03, 2023
MyPy types for WSGI applications

WSGI Types for Python This is an attempt to bring some type safety to WSGI applications using Python's new typing features (TypedDicts, Protocols). It

Blake Williams 2 Aug 18, 2021
Python classes with types validation at runtime.

typedclasses Python classes with types validation at runtime. (Experimental & Under Development) Installation You can install this library using Pytho

Izhar Ahmad 8 Feb 06, 2022
Rust like Option and Result types in Python

Option Rust-like Option and Result types in Python, slotted and fully typed. An Option type represents an optional value, every Option is either Some

45 Dec 13, 2022
Flashcards - A flash card application with 2 optional command line arguments

Flashcards A flash card application with 2 optional command line arguments impor

Özgür Yildirim 2 Jul 15, 2022
Code audit tool for python.

Pylama Code audit tool for Python and JavaScript. Pylama wraps these tools: pycodestyle (formerly pep8) © 2012-2013, Florent Xicluna; pydocstyle (form

Kirill Klenov 967 Jan 07, 2023
An enhanced version of the Python typing library.

typingplus An enhanced version of the Python typing library that always uses the latest version of typing available, regardless of which version of Py

Contains 6 Mar 26, 2021
Flake8 plugin for managing type-checking imports & forward references

flake8-type-checking Lets you know which imports to put in type-checking blocks. For the imports you've already defined inside type-checking blocks, i

snok 67 Dec 16, 2022
Mypy stubs, i.e., type information, for numpy, pandas and matplotlib

Mypy type stubs for NumPy, pandas, and Matplotlib This is a PEP-561-compliant stub-only package which provides type information for matplotlib, numpy

Predictive Analytics Lab 194 Dec 19, 2022
Automated security testing using bandit and flake8.

flake8-bandit Automated security testing built right into your workflow! You already use flake8 to lint all your code for errors, ensure docstrings ar

Tyler Wince 96 Jan 01, 2023
A Python Parser

parso - A Python Parser Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions (in multiple Python

Dave Halter 520 Dec 26, 2022
Utilities for refactoring imports in python-like syntax.

aspy.refactor_imports Utilities for refactoring imports in python-like syntax. Installation pip install aspy.refactor_imports Examples aspy.refactor_i

Anthony Sottile 20 Nov 01, 2022
🦆 Better duck-typing with mypy-compatible extensions to Protocol

🦆 Quacks If it walks like a duck and it quacks like a duck, then it must be a duck Thanks to PEP544, Python now has protocols: a way to define duck t

Arie Bovenberg 9 Nov 14, 2022
Simple Python style checker in one Python file

pycodestyle (formerly called pep8) - Python style guide checker pycodestyle is a tool to check your Python code against some of the style conventions

Python Code Quality Authority 4.7k Jan 01, 2023
A plugin for flake8 integrating Mypy.

flake8-mypy NOTE: THIS PROJECT IS DEAD It was created in early 2017 when Mypy performance was often insufficient for in-editor linting. The Flake8 plu

Łukasz Langa 103 Jun 23, 2022