Commit Graph

260 Commits

Author SHA1 Message Date
William S Fulton 61f0bbe97d Python external_runtime example fixup
- Modify example to actually use the external runtime in example.cxx.
- Correct formatting of files.
- Add exception handling.
- Rename two main classes in example for better clarity.

This commit fixes the previous commit so that the example now correctly
tests the commmit prior to it.

Note that -builtin is not run as it does not work (seg faults - needs
investigation).

Issue #3067
2025-04-10 08:13:07 +01:00
Julien Schueller 0954292130 Add external runtime Python example using typemap
See issue #3067
2025-04-10 08:13:07 +01:00
William S Fulton 953e280f5e Update Python examples to Visual Studio 2019 project files 2024-10-19 15:45:21 +01:00
William S Fulton 4516ddb8c3 Change Python example to use SWIG_AppendOutput 2024-10-15 08:59:51 +01:00
Olly Betts 250be3883d Replace cd X && $(MAKE) with $(MAKE) -C X
We require GNU make anyway, and using -C reduces the verbosity of the
code a little and allows us to avoid an extra subshell in some cases.
2024-09-21 11:24:02 +12:00
Olly Betts f66a81fcb4 Fix extension of filename in comments in examples 2024-09-16 16:51:44 +12:00
matoro 16129d9804 Update examples to recommend compiling with -fPIC instead of -fpic
To reflect previous change to swig defaults.
2024-07-22 17:46:29 -04:00
William S Fulton 462fb665af Update python example for removed t_output_helper 2024-06-15 23:35:31 +01:00
Olly Betts e16ba0daff Revert "Add newly added libffi example to testing"
This reverts commit 8888798f95.
2024-03-28 10:23:18 +13:00
Olly Betts 33734ffe38 Fixes for _WIN32 2024-03-28 10:16:10 +13:00
Olly Betts d6ecf084eb Revert "Remove libffi example, it isn't portable"
This reverts commit 564979a4b5.
2024-03-28 10:15:32 +13:00
William S Fulton 79849cc70c Tidy up EXTRA_ build flags
Use new EXTRA_CPPFLAGS in Github CI
Harmonise use of:
  EXTRA_CPPFLAGS
  EXTRA_CFLAGS
  EXTRA_CXXFLAGS
  EXTRA_LDFLAGS
2024-03-24 18:12:21 +00:00
William S Fulton 5b710e3298 Py_DecRef Py_IncRef for examples and html docs 2024-03-24 18:12:21 +00:00
William S Fulton 564979a4b5 Remove libffi example, it isn't portable 2024-02-23 08:40:08 +00:00
William S Fulton 8888798f95 Add newly added libffi example to testing 2024-02-23 08:02:28 +00:00
Olly Betts 66e054a0a6 [python] Add runme.py for libffi example
Fixes #2805
2024-02-23 17:14:49 +13:00
William S Fulton 06f791c3ed Revert mistaken commit 2023-12-29 14:40:21 +00:00
William S Fulton af494ef437 Document -std= options
Closes #2591
2023-12-27 20:16:21 +00:00
William S Fulton f8c2dd67cd docstring example for stable abi
Remove -O (-fastproxy) from the docstrings example as -fastproxy
does not currently work with the stable abi
2023-12-19 21:17:41 +00:00
Olly Betts 3ce0174a0c Fix random doubled spaces in code 2023-11-17 09:49:36 +13:00
Olly Betts c916d81e8d Remove pointer.i from the SWIG library
It's been a dummy file which has done nothing except %echo a deprecation
message since 2002.  The replacement is cpointer.i.
2023-06-15 15:50:51 +12:00
Olly Betts ca58db87b6 Update lingering uses of %addmethods
This was renamed to %extend 21 years ago!

The remaining uses are either in docs for the reference example or in
xml examples (which can't actually be run because they the SWIG command
line syntax they try to use is wrong).
2023-05-29 11:40:53 +12:00
Olly Betts 631b41ae7b Use https for swig.org links 2022-10-06 13:16:39 +13:00
Olly Betts 3bf1da4298 Fix a few documentation typos 2022-09-29 18:17:32 +13:00
William S Fulton 842ae379aa GHA: Fix for pycodestyle check in examples
E275 missing whitespace after keyword
For pycodestyle 2.9.0 released on 30 July 2022.
2022-07-31 09:02:00 +01:00
Olly Betts 0b9d4eff09 Update everything for dropping Python 3.2 support 2022-07-19 13:20:07 +12:00
William S Fulton fd846be18b Remove some usage of strdup
To fix visual c++ warning:
  warning C4996: 'strdup': The POSIX name for this item is deprecated.
2022-05-07 07:09:44 +01:00
luz paz c8bec18554 Fix various typos
Found via `codespell -q 3 -L ans,anumber,ba,bae,chello,clos,cmo,coo,dout,fo,funktion,goin,inout,methid,nd,nin,nnumber,object,objekt,od,ois,packag,parm,parms,pres,statics,strack,struc,tempdate,te,thru,uint,upto,writen`
2022-04-11 07:59:36 +12:00
Olly Betts c7af8eabb3 Default to running tests with Python 3
Specify PY2=1 to use Python 2.

See #1779
Closes #2235
2022-03-17 18:55:10 +13:00
Olly Betts 936e9264e8 Adjust Python variables example for Python 2
Explicitly call str() as previously Python 2 seemed to end up calling
repr().
2022-03-15 18:11:34 +13:00
Olly Betts 250afd6dc3 List variables in variables example
Seems useful in itself, but also serves to check if
https://sourceforge.net/p/swig/bugs/976/ is still reproducible.
2022-03-15 11:06:20 +13:00
William S Fulton cf8788c411 Update Python tests to not use flatstaticmethod access
Use Python class staticmethod syntax to access C++ static member functions,
such as Klass.memberfunction, instead of Klass_memberfunction.
Examples and test-suite changes in preparation for issue #2137.
2022-01-14 22:48:11 +00:00
William S Fulton d15a3cb1d4 Fix testcase -Wstringop-truncation warning in gcc11 2021-11-12 19:00:20 +00:00
William S Fulton ec2b47ef2a Remove need for Python 2to3
All Python examples and tests have been written to be both Python 2 and Python 3
compatible, removing the need for 2to3 to run the examples or test-suite.

The 2to3 executable is not always available and even when available does not
always work, e.g. with pyenv. An alternative would be to use the lib2to3 Python
module instead, but this isn't available in some older versions of Python 3.

I had this problem on Ubuntu Bionic on Travis:

  checking Examples/python/callback
  pyenv: 2to3-3.8: command not found
  The `2to3-3.8' command exists in these Python versions:
    3.8
    3.8.1

Reference issues:
  https://github.com/pypa/virtualenv/issues/1399
  https://travis-ci.community/t/2to3-command-not-found-in-venv-in-bionic/4495
2020-08-15 18:04:58 +01:00
William S Fulton 89bee6a7fa Modify examples to be both Python 2 and 3 compatible
For removing dependency on 2to3
2020-08-15 16:46:01 +01:00
William S Fulton f383095851 Alphabetise testing of examples 2020-08-13 20:07:10 +01:00
Dmitry D. Chernov f88ba7c182 Examples: Unify string quoting in the Python sources 2019-07-14 14:12:23 +10:00
William S Fulton f3357f1f57 Remove use of std::bind2nd which is removed in C++17 2019-06-27 07:40:49 +01:00
William S Fulton 03323f5c8b The Python module import logic has changed to stop obfuscating real ImportError problems.
Only one import of the low-level C/C++ module from the pure Python module is
attempted now. Previously a second import of the low-level C/C++ module was attempted
after an ImportError occurred and was done to support 'split modules'. A 'split module' is
a configuration where the pure Python module is a module within a Python package and the
low-level C/C++ module is a global Python module. Now a 'split module' configuration is
no longer supported by default. This configuration can be supported with a simple
customization, such as:

  %module(package="mypackage", moduleimport="import $module") foo

or if using -builtin:

  %module(package="mypackage", moduleimport="from $module import *") foo

instead of

  %module(package="mypackage") foo

See the updated Python chapter titled "Location of modules" in the documentation.

Closes #848 #1343
2018-12-16 16:41:39 +00:00
William S Fulton 51dadaeacd Add example to test the Python module being renamed to __init__.py
This examples tests the SWIG generated module being placed into a directory and
then renamed __init__.py to convert the module into a package. This ability
stopped working in swig-3.0.9. However, only Python 2.7 or 3.3 and later work. If
Python 3.2 support is needed, use moduleimport in %module to customise the import
code.

Issue #1282
2018-12-08 22:31:26 +00:00
William S Fulton 84dcb9bfff Revert "Temporarily remove Python import_packages testcase"
This reverts commit 8d6f3010ea.
2018-12-06 06:55:24 +00:00
William S Fulton ff93f2e26e Skip Python subprocess calls in import_packages testcase on Windows
Getting these kind of errors on Appveyor which uses mingw/cygwin to run
a Python interpreter:

Native windows Python 3.6 running under cygwin and mingw Python 3.7 running under mingw:
  Fatal Python error: _Py_HashRandomization_Init: failed to get random
  numbers to initialize Python

Cygwin Python 2.7 running under cygwin:
  0 [main] python2.7 496 child_info_fork::abort: address space needed by '_foo.dll' (0x6D0000)
  is already occupied
2018-12-06 06:50:57 +00:00
William S Fulton 8d6f3010ea Temporarily remove Python import_packages testcase
The subprocess.check_call seems broken on Windows, needs investigation.
2018-12-04 22:35:47 +00:00
William S Fulton 604ae7186b Fix for running 'python -m' when using swig -builtin
Same as e05b5ea for -builtin.

Also added runtime tests to check 'python -m'.
2018-12-04 19:12:13 +00:00
William S Fulton 9e83d5d5d9 Fix nstest.py test
Use subprocess.check_call as os.system won't stop the test in case of
errors.
2018-12-04 06:49:55 +00:00
William S Fulton 6030f59741 Fix operator Python example for -builtin
Output was incorrect for -builtin as custom __str__ was not being
called.
2018-11-28 08:18:28 +00:00
Olly Betts 728b8955bd Drop support for Python classic classes
There were only needed to support Python < 2.2, and we now require at
least Python 2.6.

 Conflicts:
	.travis.yml
	Examples/test-suite/python/autodoc_runme.py
	Source/Modules/python.cxx

This is a cherry-pick and merge from patch in #1261
2018-10-12 07:10:47 +01:00
William S Fulton 33921666a1 Merge branch 'vadz-doxygen'
This is the Doxygen work begun in Google Summer of Code projects 2008
and 2012 and subsequently improved by numerous contributors.

* vadz-doxygen: (314 commits)
  Add changes entry for Doxygen support
  Add some missing doctype tyemaps
  Doxygen warnings cleanup
  Move doxygen warning numbers
  Add Python doxygen example
  Doxygen example
  Add Doxygen to include paths
  Doxygen source rename
  More merge fixes from doxygen branches
  Correct python example headers
  Correct source code headers
  Another merge fix from doxygen branches
  Java enums output format fixes
  Add omitted doxygen_parsing_enums testcase
  PEP8 conformance for comment verifier module
  Clean up merge problem
  Doxygen html tweaks
  Update html chapter numbering for added Doxygen chapter
  Fixes to makechap.py to detect ill-formed headers
  html fixes for Doxygen
  Add missing CPlusPlus17.html file
  Format files to unix format
  Doxygen testcase tweak to match that in the html docs
  Doxygen html documentation updates and corrections
  Remove doxygen Examples subdirectory
  Beautify doxygen source code
  Code formatting fixes in doxygen code
  Remove unused doxygen code
  new_node refactor
  Various merge fixes in doxygen branches
  Unused variable warning fix
  Fix wrongly resetting indent after formulae in Doxygen comments
  Add support for doxygen:alias feature
  Get rid of meaningless return type of DoxygenParser methods
  Return enum, not untyped int, when classifying Doxygen commands
  Get rid of unnecessary "typedef enum" in C++ code
  Use slash, not backslash, in "C/C++" in the documentation
  Replace literal "<" with "&lt;" in HTML documentation
  Fix broken link to java.sun.com in Doxygen documentation
  Fix using com.sun.tools.javadoc package under macOS
  Fix error reporting for special characters in Doxygen parsing code
  Switch Python Doxygen unit tests to use inspect.getdoc()
  Use correct separator in Java class path under Windows.
  Remove executable permission from appveyor.yml.
  Use JAVA_HOME value in configure to detect Java.
  Display JAVA_HOME value in "make java_version".
  Fix harmless MSVC warning in DoxygenTranslator code.
  Reset "_last" for all but first enum elements.
  Don't duplicate Javadoc from global enum Doxygen comments twice.
  Move Doxygen comments concatenation from the parser to the lexer.
  Fix shift/reduce conflicts in Doxygen pre/post comment parsing.
  Rewrote part of the grammar dealing with Doxygen comments for enums.
  No changes, just remove spurious white space only differences.
  Move Doxygen comment mangling from the parser to the lexer.
  Merge "-builtin" autodoc bugs workarounds from master into test.
  Quote JAVA_HOME variable value in Java test suite makefile.
  Remove unused C_COMMENT_STRING terminal from the grammar.
  Fix missing returns in the Doxygen test suite code.
  Fix trimming whitespace from Doxygen comments.
  Remove code not doing anything from PyDocConverter.
  Remove unused <sstream> header.
  Remove unreferenced struct declaration.
  Remove unused Swig_warn() function.
  Remove any whitespace before ignored Doxygen commands.
  Remove trailing space from one of Doxygen tests.
  Fix autodoc strings generated in Python builtin case and the test.
  Fix Doxygen unit test in Python "-builtin" case.
  Use class docstrings in "-builtin" Python case.
  Don't indent Doxygen doc strings in generated Python code.
  Add a possibility to flexibly ignore custom Doxygen tags.
  Stop completely ignoring many Doxygen comments.
  Fix structural Doxygen comment recognition in the parser.
  No changes, just make checking for Doxygen structural tags more sane.
  Use "//", not "#", for comments in SWIG input.
  Allow upper case letters and digits in Doxygen words.
  Pass the node the Doxygen comment is attached to to DoxygenParser.
  Get rid of findCommand() which duplicaed commandBelongs().
  Recognize unknown Doxygen tags correctly.
  No real changes, just pass original command to commandBelongs().
  Describe Doxygen-specific %features in a single place.
  Give warnings for unknown Doxygen commands in Doxygen parser.
  Document the return type when translating Doxygen @return to Python.
  Fix translated Doxygen comments for overloaded functions in Python.
  Also merge Doxygen comments for overloaded constructors in Python.
  Allow using enum elements as default values for Python functions.
  Don't always use "*args" for all Python wrapper functions.
  No real changes, just make PYTHON::check_kwargs() const.
  Refactor: move makeParameterName() to common Language base class.
  Remove long line wrapping from Python parameter list generation code.
  Simplify and make more efficient building Python docstrings.
  Translate Doxygen code blocks to Sphinx code blocks.
  Add a simple test of multiple parameters to Doxygen test suite.
  Make Python parameters types hyperlinks in the doc strings.
  Make Language::classLookup() and enumLookup() static.
  Fix arguments of @param, @return etc translations to Python.
  Remove unused method from PyDocConverter.
  No real changes, just remove an unnecessary variable.
  Preserve relative indentation when parsing Doxygen comments.
  Use Sphinx-friendly formatting for overloaded functions documentation.
  Add poor man trailing white space detection to Doxygen Python tests.
  ...
2018-06-07 08:13:10 +01:00
William S Fulton 89a25055d9 Add Python doxygen example 2018-05-31 20:48:02 +01:00
luz.paz 60dfa31a67 Misc. typos
found via `codespell` and `grep`
2018-05-17 10:04:23 -04:00