| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
1. fail tests related to DLL load failure as they were previously untested.
2. fix have_compiler to return false on old compilers
3. xfail some tests that were not working on old Python versions.
|
| |
| |
| |
| | |
because svn is not used anymore
|
| |
| |
| |
| |
| |
| |
| |
| | |
and use gmtime in order to be independent of timezone
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Up until now, f2py throw an error when arrays were declared which had
dimension of length 0. This, however, is a perfectly legal case, and in
fact occurs frequently in the context of linear algrebra. This bug was
discovered, for example, in an interface that does matrix
tridiagonalization. If the matrix is 1x1, the super- and subdiagonal are
of length 0.
Note that negative dimensions continue to produce errors although
Fortran also allows this (it always allocates to size max(0, n)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In f2py/src/fortranobject.c, the function `check_and_fix_dimensions` does
pretty much what it says on the tin:
/*
This function fills in blanks (that are -1\'s) in dims list using
the dimensions from arr. It also checks that non-blank dims will
match with the corresponding values in arr dimensions.
*/
There are several error conditions detected by the function. In the code
before this change, when the function detected such an error, it would
print a message to stderr and return 1.
In this change, when an error is detected in `check_and_fix_dimensions`,
an exception is set.
This new feature of `check_and_fix_dimensions` is used in three places
in the function `array_from_pyobj()`.
In each case, there was an old comment of the form:
/* XXX: set exception */
In this change, the exception is now set in `check_and_fix_dimensions()`,
so those comments have been removed.
For some error conditions, the new code changes the exception that is
raised. For example, here's a scipy test before this change:
```
In [5]: from scipy.linalg import _fblas as fblas
In [6]: a = np.array([[1., 0.], [0., -2.], [2., 3.]])
In [7]: b = np.array([[0., 1.], [1., 0.], [0, 1.]])
In [8]: fblas.dsyr2k(a=a, b=b, alpha=1.0, c=np.zeros((15, 8)))
0-th dimension must be fixed to 3 but got 15
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-8-bc4d51f8d016> in <module>()
----> 1 f(a=a, b=b, alpha=1.0, c=np.zeros((15, 8)))
error: failed in converting 2nd keyword `c' of _fblas.dsyr2k to C/Fortran array
```
After this change, we get:
```
In [2]: from scipy.linalg import _fblas as fblas
In [3]: a = np.array([[1., 0.], [0., -2.], [2., 3.]])
In [4]: b = np.array([[0., 1.], [1., 0.], [0, 1.]])
In [5]: fblas.dsyr2k(a=a, b=b, alpha=1.0, c=np.zeros((15, 8)))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-bc4d51f8d016> in <module>()
----> 1 f(a=a, b=b, alpha=1.0, c=np.zeros((15, 8)))
ValueError: 0-th dimension must be fixed to 3 but got 15
```
The spurious print has been changed to the exception message, but some
potentially useful information in the old exception message has been
lost.
|
|
|
|
|
|
|
|
| |
This allows pytest to run with duplicate test file names. Note that
`python <path-to-test-file>` no longer works with this change, nor will
a simple `pytest numpy`, because numpy is imported from the numpy
repository. However, `python runtests.py` and `>>> numpy.test()` are
still available.
|
|\
| |
| | |
MAINT: Use new-style classes on 2.7
|
| |
| |
| |
| | |
Deliberately avoids tests, to prevent introducing a failure on old-style classes later.
|
|\ \
| |/
|/| |
Remove unittest dependencies
|
| | |
|
|/
|
|
|
| |
Using \t here is just cryptic.
Done using a very basic find and replace.
|
| |
|
|\
| |
| | |
ENH: Rearrange testing module to isolate nose dependency.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The aim here is to separate out the nose dependent files prior to adding
pytest support. This could be done by adding new files to the general
numpy/testing directory, but I felt that it was to have the relevant
files separated out as it makes it easier to completely remove nose
dependencies when needed.
Many places were accessing submodules in numpy/testing directly, and in
some cases incorrectly. That presented a backwards compatibility
problem. The solution adapted here is to have "dummy" files whose
contents will depend on whether of not pytest is active. That way the
module looks the same as before from the outside.
In the case of numpy itself, direct accesses have been fixed. Having
proper `__all__` lists in the submodules helped in that.
|
|/
|
|
|
|
|
| |
When building the __doc__ string for Fortran objects, the ')'
character, closing the dimensions list, is written 1 position
beyond the allowed buffer size, instead of the current pointer in
the buffer.
|
|
|
|
|
|
|
| |
* make exception raising 2/3 compatible
* remove unnecesary else statement after while loop without break clause
* ensure file is always enclosed even in the event of an exception
* ensure list comprehension variable does not override enclosing loop variable
|
| |
|
|
|
|
|
|
|
| |
A missing call to rmbadname1 in analyzecommon caused a look up of
common block variables with a name in the badnames list to fail
and the fall back of defaultimplicitrules to be used.
See ticket 9228.
|
|
|
|
| |
Bare except is very rarely the right thing
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Since we only need to support python 2, we can remove any case where we just
pass a single string literal and use the b prefix instead.
What we can't do is transform asbytes("tests %d" % num), because %-formatting
fails on bytes in python 3.x < 3.5.
|
| |
|
|
|
|
|
|
| |
Fix Fortran kind detection for PPC64el.
See: gh-3424.
|
|
|
|
| |
per request from @charris
|
|
|
|
|
|
|
| |
This augments the test in constant_compound.f90 by
using constants without a compound kind spec to
illustrate the case that led to the
reporting of issue #8493
|
|
|
|
|
| |
This is a test code provided as a patch by @zerothi checking
the compound constant parsing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fixes #8493
In the reported problem snippet the attempt to infer the type of
parameter (wasize=maxiterates*2)
leads to a lookup of maxiterates in the logic of get_parameters
which finds and correctly assigns to 'v' the value string '50000'
However, then in the logic proceds to attempt to split off any
underscore-appended precision spec from v_ which yields ['50000']
because there is no underscore.
Finally line
v = ''.join(v_[:-1]).lower().replace(v_[-1].lower(), '')
if not quarded by the newly introduced lengthtest sets v to empty
because [:-1] of a list with one element yields an empty list.
Subsequently the type inference by running eval on an empty string
fails with the error message quoted.
The introduced length check appears to correct this problem.
|
|
|
|
|
|
|
| |
In Python 3.6 a number of escape sequences that were previously accepted
-- for instance "\(" that was translated to "\\(" -- are deprecated. To
retain the previous behavior either raw strings must be used or the
backslash must be properly escaped itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fortran sources with parameters having kind-specifiers
where not correctly intercepted in the crackfortran.py
source.
The reason was a restrictive check for only integer specifiers
which did not split real's into the correct number.
Furthermore, several tests has been added which tests the different
kind specifiers and their use in codes, also all of them together.
Signed-off-by: Nick Papior <nickpapior@gmail.com>
|
|
|
|
| |
f2py.compile (issue #7683)
|
|
|
|
| |
It was committed mistakenly in #7134. `callfortran` is used a lot really.
|
| |
|
| |
|
|\
| |
| | |
MAINT: Simplify some tests using temppath context manager.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This replaces code of the pattern
```
fd, name = tempfile.mkstemp(...)
os.close(fd)
try:
do stuff with name
finally:
os.remove(name)
```
with
```
with temppath() as name:
do stuff with name
```
A few more complicated cases are also handled. The remains some
particularly gnarly code the could probably be refactored to use
temppath, but that is a more demanding project.
|
|/ |
|
| |
|
|
|
|
| |
Closes gh-6863.
|
|
|
|
|
| |
Add '.. versionadded:: 1.11.0' to the new `extension` parameter
in f2py.compile and document it in the 1.11.0 release notes.
|
|
|
|
|
| |
1. Verbose parameter was ignored earlier.
2. Allowed .f90 extensions for tempfiles
|
|
|
|
|
| |
Some newer *.py files are missing the `from __future__` boilerplate
that helps assure Python2 and Python3 compatibility.
|