mock_backend.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import numpy as np
  2. import scipy.fft
  3. import threading
  4. class _MockFunction:
  5. def __init__(self, return_value = None):
  6. self.number_calls = threading.local()
  7. self.return_value = return_value
  8. self.last_args = threading.local()
  9. def __call__(self, *args, **kwargs):
  10. if not hasattr(self.number_calls, 'c'):
  11. self.number_calls.c = 0
  12. self.number_calls.c += 1
  13. self.last_args.l = (args, kwargs)
  14. return self.return_value
  15. fft = _MockFunction(np.random.random(10))
  16. fft2 = _MockFunction(np.random.random(10))
  17. fftn = _MockFunction(np.random.random(10))
  18. ifft = _MockFunction(np.random.random(10))
  19. ifft2 = _MockFunction(np.random.random(10))
  20. ifftn = _MockFunction(np.random.random(10))
  21. rfft = _MockFunction(np.random.random(10))
  22. rfft2 = _MockFunction(np.random.random(10))
  23. rfftn = _MockFunction(np.random.random(10))
  24. irfft = _MockFunction(np.random.random(10))
  25. irfft2 = _MockFunction(np.random.random(10))
  26. irfftn = _MockFunction(np.random.random(10))
  27. hfft = _MockFunction(np.random.random(10))
  28. hfft2 = _MockFunction(np.random.random(10))
  29. hfftn = _MockFunction(np.random.random(10))
  30. ihfft = _MockFunction(np.random.random(10))
  31. ihfft2 = _MockFunction(np.random.random(10))
  32. ihfftn = _MockFunction(np.random.random(10))
  33. dct = _MockFunction(np.random.random(10))
  34. idct = _MockFunction(np.random.random(10))
  35. dctn = _MockFunction(np.random.random(10))
  36. idctn = _MockFunction(np.random.random(10))
  37. dst = _MockFunction(np.random.random(10))
  38. idst = _MockFunction(np.random.random(10))
  39. dstn = _MockFunction(np.random.random(10))
  40. idstn = _MockFunction(np.random.random(10))
  41. fht = _MockFunction(np.random.random(10))
  42. ifht = _MockFunction(np.random.random(10))
  43. __ua_domain__ = "numpy.scipy.fft"
  44. _implements = {
  45. scipy.fft.fft: fft,
  46. scipy.fft.fft2: fft2,
  47. scipy.fft.fftn: fftn,
  48. scipy.fft.ifft: ifft,
  49. scipy.fft.ifft2: ifft2,
  50. scipy.fft.ifftn: ifftn,
  51. scipy.fft.rfft: rfft,
  52. scipy.fft.rfft2: rfft2,
  53. scipy.fft.rfftn: rfftn,
  54. scipy.fft.irfft: irfft,
  55. scipy.fft.irfft2: irfft2,
  56. scipy.fft.irfftn: irfftn,
  57. scipy.fft.hfft: hfft,
  58. scipy.fft.hfft2: hfft2,
  59. scipy.fft.hfftn: hfftn,
  60. scipy.fft.ihfft: ihfft,
  61. scipy.fft.ihfft2: ihfft2,
  62. scipy.fft.ihfftn: ihfftn,
  63. scipy.fft.dct: dct,
  64. scipy.fft.idct: idct,
  65. scipy.fft.dctn: dctn,
  66. scipy.fft.idctn: idctn,
  67. scipy.fft.dst: dst,
  68. scipy.fft.idst: idst,
  69. scipy.fft.dstn: dstn,
  70. scipy.fft.idstn: idstn,
  71. scipy.fft.fht: fht,
  72. scipy.fft.ifht: ifht
  73. }
  74. def __ua_function__(method, args, kwargs):
  75. fn = _implements.get(method)
  76. return (fn(*args, **kwargs) if fn is not None
  77. else NotImplemented)