mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-15 21:00:47 +00:00
Summary: These return views in Python 3 which would not do anything in a lot of usages currently present in Caffe2. This diff simply removes (almost) all usages of these two in Caffe2 and sub projects in favor of comprehensions which are also easier to read/understand Reviewed By: akyrola Differential Revision: D5142049 fbshipit-source-id: e800631d2df7d0823fed698cae46c486038007dc
118 lines
3.3 KiB
Python
118 lines
3.3 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
from caffe2.python import core
|
|
from hypothesis import given
|
|
import caffe2.python.hypothesis_test_util as hu
|
|
import hypothesis.strategies as st
|
|
import numpy as np
|
|
|
|
|
|
def _string_lists(alphabet=None):
|
|
return st.lists(
|
|
elements=st.text(alphabet=alphabet, average_size=3),
|
|
min_size=0,
|
|
max_size=3)
|
|
|
|
|
|
class TestStringOps(hu.HypothesisTestCase):
|
|
@given(strings=_string_lists())
|
|
def test_string_prefix(self, strings):
|
|
length = 3
|
|
# although we are utf-8 encoding below to avoid python exceptions,
|
|
# StringPrefix op deals with byte-length prefixes, which may produce
|
|
# an invalid utf-8 string. The goal here is just to avoid python
|
|
# complaining about the unicode -> str conversion.
|
|
strings = np.array(
|
|
[a.encode('utf-8') for a in strings], dtype=np.object
|
|
)
|
|
|
|
def string_prefix_ref(strings):
|
|
return (
|
|
np.array([a[:length] for a in strings], dtype=object),
|
|
)
|
|
|
|
op = core.CreateOperator(
|
|
'StringPrefix',
|
|
['strings'],
|
|
['stripped'],
|
|
length=length)
|
|
self.assertReferenceChecks(
|
|
hu.cpu_do,
|
|
op,
|
|
[strings],
|
|
string_prefix_ref)
|
|
|
|
@given(strings=_string_lists())
|
|
def test_string_suffix(self, strings):
|
|
length = 3
|
|
strings = np.array(
|
|
[a.encode('utf-8') for a in strings], dtype=np.object
|
|
)
|
|
|
|
def string_suffix_ref(strings):
|
|
return (
|
|
np.array([a[-length:] for a in strings], dtype=object),
|
|
)
|
|
|
|
op = core.CreateOperator(
|
|
'StringSuffix',
|
|
['strings'],
|
|
['stripped'],
|
|
length=length)
|
|
self.assertReferenceChecks(
|
|
hu.cpu_do,
|
|
op,
|
|
[strings],
|
|
string_suffix_ref)
|
|
|
|
@given(strings=st.text(alphabet=['a', 'b'], average_size=3))
|
|
def test_string_starts_with(self, strings):
|
|
prefix = 'a'
|
|
strings = np.array(
|
|
[str(a) for a in strings], dtype=np.object
|
|
)
|
|
|
|
def string_starts_with_ref(strings):
|
|
return (
|
|
np.array([a.startswith(prefix) for a in strings], dtype=bool),
|
|
)
|
|
|
|
op = core.CreateOperator(
|
|
'StringStartsWith',
|
|
['strings'],
|
|
['bools'],
|
|
prefix=prefix)
|
|
self.assertReferenceChecks(
|
|
hu.cpu_do,
|
|
op,
|
|
[strings],
|
|
string_starts_with_ref)
|
|
|
|
@given(strings=st.text(alphabet=['a', 'b'], average_size=3))
|
|
def test_string_ends_with(self, strings):
|
|
suffix = 'a'
|
|
strings = np.array(
|
|
[str(a) for a in strings], dtype=np.object
|
|
)
|
|
|
|
def string_ends_with_ref(strings):
|
|
return (
|
|
np.array([a.endswith(suffix) for a in strings], dtype=bool),
|
|
)
|
|
|
|
op = core.CreateOperator(
|
|
'StringEndsWith',
|
|
['strings'],
|
|
['bools'],
|
|
suffix=suffix)
|
|
self.assertReferenceChecks(
|
|
hu.cpu_do,
|
|
op,
|
|
[strings],
|
|
string_ends_with_ref)
|
|
|
|
if __name__ == "__main__":
|
|
import unittest
|
|
unittest.main()
|