f8bf258602
* wip
* removed stuff
* removed another change
* implemented minimum amouth of ifdefs to make pypy3 hello world to compile
* implemented minimum amount of ifdefs to make pypy3 hello world to compile
* hacking on build.rs
* compiler is happy!
* few todos remain
* extracted build logic to seperate module
* added pypy test
* finally fixed pypy structs
* removed some todos
* test should now be machine independent
* fixed all pypy3 symbols
* added pypy feature
* removed `is_pypy`
* added pypy2 declerations also
* fix for cpython2
* improved libpypy detection
* added all pypy2 macros
* fixed errneous type
* more fixes
* fix python2 string macros
* modsupport symbol
* fix
* fixed and added many symbols
* fixes
* remove dup
* remove mac-specific config
* fix all name mangling macros
* unite imports
* missing symbol
* fix pybool
* implemented another missing symbol
* it works
* fix merge conflict
* uncomment non default features
* cargo.toml
* Cargo fmt
* small merge fixes
* use newer build version
* whoops
* fix build script
* more build hacks
* some random hiccups
* small fixes
* it builds!
* it builds and runs
* revert everything in FFI2
* revert changes to ffi2
* check python3 for pypy
* tiny fix
* revert ffi2 for real
* revert weird formatting changes
* bring back missing feature
* tiny error
* fix py3.7 issue
* add pypy3.5 6.0 to travis
* remove dbg!
* another tiny fix
* removed some useless annotations, and fixed inlines annotations
* removed `pretty_assertions`
* removed pypy feature from cargo.toml
* fix for Py_CompileStringFlags
* tox runs word_count!
* __dict__ changes are not supported for PyPy
* fix 3.7 and copy comment
* fix test script 😳
* transfer ownership of strings to cpython when possible
* remove cstr! macro
* added missing nuls
* as_bytes() -> b’’ string
* symbol removed by mistake
* properly shim pypy date time API, some tests are passing!
* extension_module tests now not crashing! (some still skipped)
* maybe travis has new pypy version?
* small error on windows (build script)
* fix conditional compilation
* try to make tests run on travis..
* invert condition
* added pytest-faulthandler to facilitate debugging
* correctly name dir
* use full paths
* say —yes to conda
* fix
* syntax error
* change PATH
* fixed a terrible bug with PyTypeObjects in PyPy
* fix PyTypeObject defs
* re-enabled tests!
* all tests are passing!
* make the fix ad-hoc for now
* removed build module
* revert changes that cause an additional GC bug
* prevented buggy test from failing pypy
* removed unused comment
* don’t run coverage on pypy
* removed some erroneous symbols from function calls which are actually macros
* restore py37 pyunicode missing def
* use only `link_name` in PyPy specific declarations
* only setup PyPy when testing against PyPy
* annotation that was eaten during merge
* remove change to comment by mistake + unnecessary changes to cargo.toml
* xfail dates test only on pypy
* changed comment to be a little more helpful
* cleaned up some warnings
* Update src/ffi3/ceval.rs
Co-Authored-By: omerbenamram <omerbenamram@gmail.com>
* @konstin PR notes
* rustfmt
* some documentation
* if configured via env var only, default to cpython
* remove extra unsafe
* refer users to guide for pypy
* Update guide/src/pypy.md
Co-Authored-By: omerbenamram <omerbenamram@gmail.com>
* Update guide/src/pypy.md
Co-Authored-By: omerbenamram <omerbenamram@gmail.com>
* @konstin applied patch
* check that pypy at least build
* search explicitly for libpypy
* added note about some known unsupported features
* use ld_version
* export PYTHON_SYS_EXECUTABLE to `cargo build` test
* inverted if
* always link pypy dynamically
* remove unused imports
* Apply @kngwyu’s suggestion
* fix tox configuration
* try conda virtualenv
* try to simply not install python at all inside pypy environment
* setup pypy before using “python"
* use system_site_packages
* revert change to .travis
* moved cpyext datetime documentation to module level, and revised it.
* Update src/ffi/datetime.rs
Co-Authored-By: omerbenamram <omerbenamram@gmail.com>
* rustfmt
* Update src/ffi/datetime.rs
Co-Authored-By: omerbenamram <omerbenamram@gmail.com>
* kept only notes that are relevant to users.
* invert if
* use bash and not sh
75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
import sys
|
|
import platform
|
|
|
|
from setuptools import setup
|
|
from setuptools.command.test import test as TestCommand
|
|
from setuptools_rust import RustExtension
|
|
|
|
|
|
class PyTest(TestCommand):
|
|
user_options = []
|
|
|
|
def run(self):
|
|
self.run_command("test_rust")
|
|
|
|
import subprocess
|
|
|
|
errno = subprocess.call(["pytest", "tests"])
|
|
raise SystemExit(errno)
|
|
|
|
|
|
def get_py_version_cfgs():
|
|
# For now each Cfg Py_3_X flag is interpreted as "at least 3.X"
|
|
version = sys.version_info[0:2]
|
|
py3_min = 5
|
|
out_cfg = []
|
|
for minor in range(py3_min, version[1] + 1):
|
|
out_cfg.append("--cfg=Py_3_%d" % minor)
|
|
|
|
if platform.python_implementation() == "PyPy":
|
|
out_cfg.append("--cfg=PyPy")
|
|
|
|
return out_cfg
|
|
|
|
|
|
install_requires = []
|
|
tests_require = install_requires + ["pytest", "pytest-benchmark"]
|
|
|
|
setup(
|
|
name="rustapi-module",
|
|
version="0.1.0",
|
|
classifiers=[
|
|
"License :: OSI Approved :: MIT License",
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Rust",
|
|
"Operating System :: POSIX",
|
|
"Operating System :: MacOS :: MacOS X",
|
|
],
|
|
packages=["rustapi_module"],
|
|
rust_extensions=[
|
|
RustExtension(
|
|
"rustapi_module.othermod", "Cargo.toml", rustc_flags=get_py_version_cfgs()
|
|
),
|
|
RustExtension(
|
|
"rustapi_module.datetime", "Cargo.toml", rustc_flags=get_py_version_cfgs()
|
|
),
|
|
RustExtension(
|
|
"rustapi_module.subclassing",
|
|
"Cargo.toml",
|
|
rustc_flags=get_py_version_cfgs(),
|
|
),
|
|
RustExtension(
|
|
"rustapi_module.test_dict",
|
|
"Cargo.toml",
|
|
rustc_flags=get_py_version_cfgs(),
|
|
),
|
|
],
|
|
install_requires=install_requires,
|
|
tests_require=tests_require,
|
|
include_package_data=True,
|
|
zip_safe=False,
|
|
cmdclass=dict(test=PyTest),
|
|
)
|