text:
from __future__ import print_function

import re
import sys
from datetime import datetime, timedelta
import pytest
import numpy as np

import pandas as pd
import pandas.compat as compat
from pandas.core.dtypes.common import (
    is_object_dtype, is_datetimetz,
    needs_i8_conversion)
import pandas.util.testing as tm
from pandas import (Series, Index, DatetimeIndex, TimedeltaIndex,
                    PeriodIndex, Timedelta, IntervalIndex, Interval,
                    CategoricalIndex, Timestamp)
from pandas.compat import StringIO, PYPY, long
from pandas.compat.numpy import np_array_datetime64_compat
from pandas.core.accessor import PandasDelegate
from pandas.core.base import PandasObject, NoNewAttributesMixin
from pandas.core.indexes.datetimelike import DatetimeIndexOpsMixin
from pandas._libs.tslib import iNaT

class CheckStringMixin(object):

    def test_string_methods_dont_fail(self):
        repr(self.container)
        str(self.container)
        bytes(self.container)
        if not compat.PY3:
            unicode(self.container)  # noqa

    def test_tricky_container(self):
        if not hasattr(self, 'unicode_container'):
            pytest.skip('Need unicode_container to test with this')
        repr(self.unicode_container)
        str(self.unicode_container)
        bytes(self.unicode_container)
        if not compat.PY3:
            unicode(self.unicode_container)  # noqa

class CheckImmutable(object):
    mutable_regex = re.compile('does not support mutable operations')

    def check_mutable_error(self, *args, **kwargs):
        # Pass whatever function you normally would to assert_raises_regex
        # (after the Exception kind).
        tm.assert_raises_regex(
            TypeError, self.mutable_regex, *args, **kwargs)

    def test_no_mutable_funcs(self):
        def setitem():
            self.container[0] = 5

        self.check_mutable_error(setitem)

        def setslice():
            self.container[1:2] = 3

        self.check_mutable_error(setslice)

        def delitem():
            del self.container[0]

        self.check_mutable_error(delitem)

        def delslice():
            del self.container[0:3]

        self.check_mutable_error(delslice)
        mutable_methods = getattr(self, "mutable_methods", [])

        for meth in mutable_methods:
            self.check_mutable_error(getattr(self.container, meth))

    def test_slicing_maintains_type(self):
        result = self.container[1:2]
        expected = self.lst[1:2]
        self.check_result(result, expected)

    def check_result(self, result, expected, klass=None):
        klass = klass or self.klass
        assert isinstance(result, klass)
        assert result == expected

class TestPandasDelegate(object):

    class Delegator(object):
        _properties = ['foo']
        _methods = ['bar']

        def _set_foo(self, value):
            self.foo = value

        def _get_foo(self):
            return self.foo

        foo = property(_get_foo, _set_foo, doc="foo property")

        def bar(self, *args, **kwargs):
            """ a test bar method """
            pass

    class Delegate(PandasDelegate, PandasObject):

        def __init__(self, obj):
            self.obj = obj

    def setup_method(self, method):
        pass

    def test_invalida_delgation(self):
        # these show that in order for the delegation to work
        # the _delegate_* methods need to be overriden to not raise a TypeError

        self.Delegate._add_delegate_accessors(
            delegate=self.Delegator,
            accessors=self.Delegator._properties,
            typ='property'
        )
        self.Delegate._add_delegate_accessors(
            delegate=self.Delegator,
            accessors=self.Delegator._methods,
            typ='method'
        )

        delegate = self.Delegate(self.Delegator())

        def f():
            delegate.foo

        pytest.raises(TypeError, f)

        def f():
            delegate.foo = 5

        pytest.raises(TypeError, f)

        def f():
            delegate.foo()

        pytest.raises(TypeError, f)

    @pytest.mark.skipif(PYPY, reason="not relevant for PyPy")
    def test_memory_usage(self):
        # Delegate does not implement memory_usage.
        # Check that we fall back to in-built `__sizeof__`
        # GH 12924
        delegate = self.Delegate(self.Delegator())
        sys.getsizeof(delegate)

class Ops(object):

    def _allow_na_ops(self, obj):
        """Whether to skip test cases including NaN"""
        if (isinstance(obj, Index) and
                (obj.is_boolean() or not obj._can_hold_na)):
            # don't test boolean / int64 index
            return False
        return True

    def setup_method(self, method):
        self.bool_index = tm.makeBoolIndex(10, name='a')
        self.int_index = tm.makeIntIndex(10, name='a')
        self.float_index = tm.makeFloatIndex(10, name='a')
        self.dt_index = tm.makeDateIndex(10, name='a')
        self.dt_tz_index = tm.makeDateIndex(10, name='a').tz_localize(
            tz='US/Eastern')
        self.period_index = tm.makePeriodIndex(10, name='a')
        self.string_index = tm.makeStringIndex(10, name='a')
        self.unicode_index = tm.makeUnicodeIndex(10, name='a')

        arr = np.random.randn(10)
        self.int_series = Series(arr, index=self.int_index, name='a')
        self.float_series = Series(arr, index=self.float_index, name='a')
        self.dt_series = Series(arr, index=self.dt_index, name='a')
        self.dt_tz_series = self.dt_tz_index.to_series(keep_tz=True)
        self.period_series = Series(arr, index=self.period_index, name='a')
        self.string_series = Series(arr, index=self.string_index, name='a')

        types = ['bool', 'int', 'float', 'dt', 'dt_tz', 'period', 'string',
                 'unicode']
        fmts = ["{0}_{1}".format(t, f)
                for t in types for f in ['index', 'series']]
        self.objs = [getattr(self, f)
                     for f in fmts if getattr(self, f, None) is not None]

    def check_ops_properties(self, props, filter=None, ignore_failures=False):
        for op in props:
            for o in self.is_valid_objs:

                # if a filter, skip if it doesn't match
                if filter is not None:
                    filt = o.index if isinstance(o, Series) else o
                    if not filter(filt):
                        continue

                try:
                    if isinstance(o, Series):
                        expected = Series(
                            getattr(o.index, op), index=o.index, name='a')
                    else:
                        expected = getattr(o, op)
                except (AttributeError):
                    if ignore_failures:
                        continue

                result = getattr(o, op)

                # these couuld be series, arrays or scalars
                if isinstance(result, Series) and isinstance(expected, Series):
                    tm.assert_series_equal(result, expected)
                elif isinstance(result, Index) and isinstance(expected, Index):
                    tm.assert_index_equal(result, expected)
                elif isinstance(result, np.ndarray) and isinstance(expected,
                                                                   np.ndarray):
                    tm.assert_numpy_array_equal(result, expected)
                else:
                    assert result == expected

            # freq raises AttributeError on an Int64Index because its not
            # defined we mostly care about Series here anyhow
            if not ignore_failures:
                for o in self.not_valid_objs:

                    # an object that is datetimelike will raise a TypeError,
                    # otherwise an AttributeError
                    if issubclass(type(o), DatetimeIndexOpsMixin):
                        pytest.raises(TypeError, lambda: getattr(o, op))
                    else:
                        pytest.raises(AttributeError,
                                      lambda: getattr(o, op))

    def test_binary_ops_docs(self):
        from pandas import DataFrame, Panel
        op_map = {'add': '+',
                  'sub': '-',
                  'mul': '*',
                  'mod': '%',
                  'pow': '**',
                  'truediv': '/',
                  'floordiv': '//'}
        for op_name in ['add', 'sub', 'mul', 'mod', 'pow', 'truediv',
                        'floordiv']:
            for klass in [Series, DataFrame, Panel]:
                operand1 = klass.__name__.lower()
                operand2 = 'other'
                op = op_map[op_name]
                expected_str = ' '.join([operand1, op, operand2])
                assert expected_str in getattr(klass, op_name).__doc__

                # reverse version of the binary ops
                expected_str = ' '.join([operand2, op, operand1])
                assert expected_str in getattr(klass, 'r' + op_name).__doc__

class TestIndexOps(Ops):

    def setup_method(self, method):
        super(TestIndexOps, self).setup_method(method)
        self.is_valid_objs = [o for o in self.objs if o._allow_index_ops]
        self.not_valid_objs = [o for o in self.objs if not o._allow_index_ops]

    def test_none_comparison(self):

        # bug brought up by #1079
        # changed from TypeError in 0.17.0
        for o in self.is_valid_objs:
            if isinstance(o, Series):

                o[0] = np.nan

                # noinspection PyComparisonWithNone
                result = o == None  # noqa
                assert not result.iat[0]
                assert not result.iat[1]

                # noinspection PyComparisonWithNone
                result = o != None  # noqa
                assert result.iat[0]
                assert result.iat[1]

                result = None == o  # noqa
                assert not result.iat[0]
                assert not result.iat[1]

                # this fails for numpy < 1.9
                # and oddly for *some* platforms
                # result = None != o  # noqa
                # assert result.iat[0]
                # assert result.iat[1]

                result = None > o
                assert not result.iat[0]
                assert not result.iat[1]

                result = o < None
                assert not result.iat[0]
                assert not result.iat[1]

    def test_ndarray_compat_properties(self):

        for o in self.objs:
            # Check that we work.
            for p in ['shape', 'dtype', 'flags', 'T',
                      'strides', 'itemsize', 'nbytes']:
                assert getattr(o, p, None) is not None

            assert hasattr(o, 'base')

            # If we have a datetime-like dtype then needs a view to work
            # but the user is responsible for that
            try:
                assert o.data is not None
            except ValueError:
                pass

            with pytest.raises(ValueError):
                o.item()  # len > 1

            assert o.ndim == 1
            assert o.size == len(o)

        assert Index([1]).item() == 1
        assert Series([1]).item() == 1

    def test_ops(self):
        for op in ['max', 'min']:
            for o in self.objs:
                result = getattr(o, op)()
                if not isinstance(o, PeriodIndex):
                    expected = getattr(o.values, op)()
                else:
                    expected = pd.Period(ordinal=getattr(o._values, op)(),
                                         freq=o.freq)
                try:
                    assert result == expected
                except TypeError:
                    # comparing tz-aware series with np.array results in
                    # TypeError
                    expected = expected.astype('M8[ns]').astype('int64')
                    assert result.value == expected

    def test_nanops(self):
        # GH 7261
        for op in ['max', 'min']:
            for klass in [Index, Series]:

                obj = klass([np.nan, 2.0])
                assert getattr(obj, op)() == 2.0

                obj = klass([np.nan])
                assert pd.isna(getattr(obj, op)())

                obj = klass([])
                assert pd.isna(getattr(obj, op)())

                obj = klass([pd.NaT, datetime(2011, 11, 1)])
                # check DatetimeIndex monotonic path
                assert getattr(obj, op)() == datetime(2011, 11, 1)

                obj = klass([pd.NaT, datetime(2011, 11, 1), pd.NaT])
                # check DatetimeIndex non-monotonic path
                assert getattr(obj, op)(), datetime(2011, 11, 1)

        # argmin/max
        obj = Index(np.arange(5, dtype='int64'))
        assert obj.argmin() == 0
        assert obj.argmax() == 4

        obj = Index([np.nan, 1, np.nan, 2])
        assert obj.argmin() == 1
        assert obj.argmax() == 3

        obj = Index([np.nan])
        assert obj.argmin() == -1
        assert obj.argmax() == -1

        obj = Index([pd.NaT, datetime(2011, 11, 1), datetime(2011, 11, 2),
                     pd.NaT])
        assert obj.argmin() == 1
        assert obj.argmax() == 2

        obj = Index([pd.NaT])
        assert obj.argmin() == -1
        assert obj.argmax() == -1

    def test_value_counts_unique_nunique(self):
        for orig in self.objs:
            o = orig.copy()
            klass = type(o)
            values = o._values

            if isinstance(values, Index):
                # reset name not to affect latter process
                values.name = None

            # create repeated values, 'n'th element is repeated by n+1 times
            # skip boolean, because it only has 2 values at most
            if isinstance(o, Index) and o.is_boolean():
                continue
            elif isinstance(o, Index):
                expected_index = Index(o[::-1])
                expected_index.name = None
                o = o.repeat(range(1, len(o) + 1))
                o.name = 'a'
            else:
                expected_index = Index(values[::-1])
                idx = o.index.repeat(range(1, len(o) + 1))
                rep = np.repeat(values, range(1, len(o) + 1))
                o = klass(rep, index=idx, name='a')

            # check values has the same dtype as the original
            assert o.dtype == orig.dtype

            expected_s = Series(range(10, 0, -1), index=expected_index,
                                dtype='int64', name='a')

            result = o.value_counts()
            tm.assert_series_equal(result, expected_s)
            assert result.index.name is None
            assert result.name == 'a'

            result = o.unique()
            if isinstance(o, Index):
                assert isinstance(result, o.__class__)
                tm.assert_index_equal(result, orig)
            elif is_datetimetz(o):
                # datetimetz Series returns array of Timestamp
                assert result[0] == orig[0]
                for r in result:
                    assert isinstance(r, Timestamp)
                tm.assert_numpy_array_equal(result,
                                            orig._values.asobject.values)
            else:
                tm.assert_numpy_array_equal(result, orig.values)

            assert o.nunique() == len(np.unique(o.values))

    def test_value_counts_unique_nunique_null(self):

        for null_obj in [np.nan, None]:
            for orig in self.objs:
                o = orig.copy()
                klass = type(o)
                values = o._values

                if not self._allow_na_ops(o):
                    continue

                # special assign to the numpy array
                if is_datetimetz(o):
                    if isinstance(o, DatetimeIndex):
                        v = o.asi8
                        v[0:2] = iNaT
                        values = o._shallow_copy(v)
                    else:
                        o = o.copy()
                        o[0:2] = iNaT
                        values = o._values

                elif needs_i8_conversion(o):
                    values[0:2] = iNaT
                    values = o._shallow_copy(values)
                else:
                    values[0:2] = null_obj
                # check values has the same dtype as the original

                assert values.dtype == o.dtype

                # create repeated values, 'n'th element is repeated by n+1
                # times
                if isinstance(o, (DatetimeIndex, PeriodIndex)):
                    expected_index = o.copy()
                    expected_index.name = None

                    # attach name to klass
                    o = klass(values.repeat(range(1, len(o) + 1)))
                    o.name = 'a'
                else:
                    if is_datetimetz(o):
                        expected_index = orig._values._shallow_copy(values)
                    else:
                        expected_index = Index(values)
                    expected_index.name = None
                    o = o.repeat(range(1, len(o) + 1))
                    o.name = 'a'

                # check values has the same dtype as the original
                assert o.dtype == orig.dtype
                # check values correctly have NaN
                nanloc = np.zeros(len(o), dtype=np.bool)
                nanloc[:3] = True
                if isinstance(o, Index):
                    tm.assert_numpy_array_equal(pd.isna(o), nanloc)
                else:
                    exp = Series(nanloc, o.index, name='a')
                    tm.assert_series_equal(pd.isna(o), exp)

                expected_s_na = Series(list(range(10, 2, -1)) + [3],
                                       index=expected_index[9:0:-1],
                                       dtype='int64', name='a')
                expected_s = Series(list(range(10, 2, -1)),
                                    index=expected_index[9:1:-1],
                                    dtype='int64', name='a')

                result_s_na = o.value_counts(dropna=False)
                tm.assert_series_equal(result_s_na, expected_s_na)
                assert result_s_na.index.name is None
                assert result_s_na.name == 'a'
                result_s = o.value_counts()
                tm.assert_series_equal(o.value_counts(), expected_s)
                assert result_s.index.name is None
                assert result_s.name == 'a'

                result = o.unique()
                if isinstance(o, Index):
                    tm.assert_index_equal(result,
                                          Index(values[1:], name='a'))
                elif is_datetimetz(o):
                    # unable to compare NaT / nan
                    tm.assert_numpy_array_equal(result[1:],
                                                values[2:].asobject.values)
                    assert result[0] is pd.NaT
                else:
                    tm.assert_numpy_array_equal(result[1:], values[2:])

                    assert pd.isna(result[0])
                    assert result.dtype == orig.dtype

                assert o.nunique() == 8
                assert o.nunique(dropna=False) == 9

    def test_value_counts_inferred(self):
        klasses = [Index, Series]
        for klass in klasses:
            s_values = ['a', 'b', 'b', 'b', 'b', 'c', 'd', 'd', 'a', 'a']
            s = klass(s_values)
            expected = Series([4, 3, 2, 1], index=['b', 'a', 'd', 'c'])
            tm.assert_series_equal(s.value_counts(), expected)

            if isinstance(s, Index):
                exp = Index(np.unique(np.array(s_values, dtype=np.object_)))
                tm.assert_index_equal(s.unique(), exp)
            else:
                exp = np.unique(np.array(s_values, dtype=np.object_))
                tm.assert_numpy_array_equal(s.unique(), exp)

            assert s.nunique() == 4
            # don't sort, have to sort after the fact as not sorting is
            # platform-dep
            hist = s.value_counts(sort=False).sort_values()
            expected = Series([3, 1, 4, 2], index=list('acbd')).sort_values()
            tm.assert_series_equal(hist, expected)

            # sort ascending
            hist = s.value_counts(ascending=True)
            expected = Series([1, 2, 3, 4], index=list('cdab'))
            tm.assert_series_equal(hist, expected)

            # relative histogram.
            hist = s.value_counts(normalize=True)
            expected = Series([.4, .3, .2, .1], index=['b', 'a', 'd', 'c'])
            tm.assert_series_equal(hist, expected)

    def test_value_counts_bins(self):
        klasses = [Index, Series]
        for klass in klasses:
            s_values = ['a', 'b', 'b', 'b', 'b', 'c', 'd', 'd', 'a', 'a']
            s = klass(s_values)

            # bins
            pytest.raises(TypeError, lambda bins: s.value_counts(bins=bins), 1)

            s1 = Series([1, 1, 2, 3])
            res1 = s1.value_counts(bins=1)
            exp1 = Series({Interval(0.997, 3.0): 4})
            tm.assert_series_equal(res1, exp1)
            res1n = s1.value_counts(bins=1, normalize=True)
            exp1n = Series({Interval(0.997, 3.0): 1.0})
            tm.assert_series_equal(res1n, exp1n)

            if isinstance(s1, Index):
                tm.assert_index_equal(s1.unique(), Index([1, 2, 3]))
            else:
                exp = np.array([1, 2, 3], dtype=np.int64)
                tm.assert_numpy_array_equal(s1.unique(), exp)

            assert s1.nunique() == 3

            # these return the same
            res4 = s1.value_counts(bins=4, dropna=True)
            intervals = IntervalIndex.from_breaks([0.997, 1.5, 2.0, 2.5, 3.0])
            exp4 = Series([2, 1, 1, 0], index=intervals.take([0, 3, 1, 2]))
            tm.assert_series_equal(res4, exp4)

            res4 = s1.value_counts(bins=4, dropna=False)
            intervals = IntervalIndex.from_breaks([0.997, 1.5, 2.0, 2.5, 3.0])
            exp4 = Series([2, 1, 1, 0], index=intervals.take([0, 3, 1, 2]))
            tm.assert_series_equal(res4, exp4)

            res4n = s1.value_counts(bins=4, normalize=True)
            exp4n = Series([0.5, 0.25, 0.25, 0],
                           index=intervals.take([0, 3, 1, 2]))
            tm.assert_series_equal(res4n, exp4n)

            # handle NA's properly
            s_values = ['a', 'b', 'b', 'b', np.nan, np.nan,
                        'd', 'd', 'a', 'a', 'b']
            s = klass(s_values)
            expected = Series([4, 3, 2], index=['b', 'a', 'd'])
            tm.assert_series_equal(s.value_counts(), expected)

            if isinstance(s, Index):
                exp = Index(['a', 'b', np.nan, 'd'])
                tm.assert_index_equal(s.unique(), exp)
            else:
                exp = np.array(['a', 'b', np.nan, 'd'], dtype=object)
                tm.assert_numpy_array_equal(s.unique(), exp)
            assert s.nunique() == 3

            s = klass({})
            expected = Series([], dtype=np.int64)
            tm.assert_series_equal(s.value_counts(), expected,
                                   check_index_type=False)
            # returned dtype differs depending on original
            if isinstance(s, Index):
                tm.assert_index_equal(s.unique(), Index([]), exact=False)
            else:
                tm.assert_numpy_array_equal(s.unique(), np.array([]),
                                            check_dtype=False)

            assert s.nunique() == 0

    def test_value_counts_datetime64(self):
        klasses = [Index, Series]
        for klass in klasses:
            # GH 3002, datetime64[ns]
            # don't test names though
            txt = "\n".join(['xxyyzz20100101PIE', 'xxyyzz20100101GUM',
                             'xxyyzz20100101EGG', 'xxyyww20090101EGG',
                             'foofoo20080909PIE', 'foofoo20080909GUM'])
            f = StringIO(txt)
            df = pd.read_fwf(f, widths=[6, 8, 3],
                             names=["person_id", "dt", "food"],
                             parse_dates=["dt"])

            s = klass(df['dt'].copy())
            s.name = None

            idx = pd.to_datetime(['2010-01-01 00:00:00Z',
                                  '2008-09-09 00:00:00Z',
                                  '2009-01-01 00:00:00X'])
            expected_s = Series([3, 2, 1], index=idx)
            tm.assert_series_equal(s.value_counts(), expected_s)

            expected = np_array_datetime64_compat(['2010-01-01 00:00:00Z',
                                                   '2009-01-01 00:00:00Z',
                                                   '2008-09-09 00:00:00Z'],
                                                  dtype='datetime64[ns]')
            if isinstance(s, Index):
                tm.assert_index_equal(s.unique(), DatetimeIndex(expected))
            else:
                tm.assert_numpy_array_equal(s.unique(), expected)

            assert s.nunique() == 3

            # with NaT
            s = df['dt'].copy()
            s = klass([v for v in s.values] + [pd.NaT])

            result = s.value_counts()
            assert result.index.dtype == 'datetime64[ns]'
            tm.assert_series_equal(result, expected_s)

            result = s.value_counts(dropna=False)
            expected_s[pd.NaT] = 1
            tm.assert_series_equal(result, expected_s)

            unique = s.unique()
            assert unique.dtype == 'datetime64[ns]'

            # numpy_array_equal cannot compare pd.NaT
            if isinstance(s, Index):
                exp_idx = DatetimeIndex(expected.tolist() + [pd.NaT])
                tm.assert_index_equal(unique, exp_idx)
            else:
                tm.assert_numpy_array_equal(unique[:3], expected)
                assert pd.isna(unique[3])

            assert s.nunique() == 3
            assert s.nunique(dropna=False) == 4

            # timedelta64[ns]
            td = df.dt - df.dt + timedelta(1)
            td = klass(td, name='dt')

            result = td.value_counts()
            expected_s = Series([6], index=[Timedelta('1day')], name='dt')
            tm.assert_series_equal(result, expected_s)

            expected = TimedeltaIndex(['1 days'], name='dt')
            if isinstance(td, Index):
                tm.assert_index_equal(td.unique(), expected)
            else:
                tm.assert_numpy_array_equal(td.unique(), expected.values)

            td2 = timedelta(1) + (df.dt - df.dt)
            td2 = klass(td2, name='dt')
            result2 = td2.value_counts()
            tm.assert_series_equal(result2, expected_s)

    def test_factorize(self):
        for orig in self.objs:
            o = orig.copy()

            if isinstance(o, Index) and o.is_boolean():
                exp_arr = np.array([0, 1] + [0] * 8, dtype=np.intp)
                exp_uniques = o
                exp_uniques = Index([False, True])
            else:
                exp_arr = np.array(range(len(o)), dtype=np.intp)
                exp_uniques = o
            labels, uniques = o.factorize()

            tm.assert_numpy_array_equal(labels, exp_arr)
            if isinstance(o, Series):
                tm.assert_index_equal(uniques, Index(orig),
                                      check_names=False)
            else:
                # factorize explicitly resets name
                tm.assert_index_equal(uniques, exp_uniques,
                                      check_names=False)

    def test_factorize_repeated(self):
        for orig in self.objs:
            o = orig.copy()

            # don't test boolean
            if isinstance(o, Index) and o.is_boolean():
                continue

            # sort by value, and create duplicates
            if isinstance(o, Series):
                o = o.sort_values()
                n = o.iloc[5:].append(o)
            else:
                indexer = o.argsort()
                o = o.take(indexer)
                n = o[5:].append(o)

            exp_arr = np.array([5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                               dtype=np.intp)
            labels, uniques = n.factorize(sort=True)

            tm.assert_numpy_array_equal(labels, exp_arr)
            if isinstance(o, Series):
                tm.assert_index_equal(uniques, Index(orig).sort_values(),
                                      check_names=False)
            else:
                tm.assert_index_equal(uniques, o, check_names=False)

            exp_arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4],
                               np.intp)
            labels, uniques = n.factorize(sort=False)
            tm.assert_numpy_array_equal(labels, exp_arr)

            if isinstance(o, Series):
                expected = Index(o.iloc[5:10].append(o.iloc[:5]))
                tm.assert_index_equal(uniques, expected, check_names=False)
            else:
                expected = o[5:10].append(o[:5])
                tm.assert_index_equal(uniques, expected, check_names=False)

    def test_duplicated_drop_duplicates_index(self):
        # GH 4060
        for original in self.objs:
            if isinstance(original, Index):

                # special case
                if original.is_boolean():
                    result = original.drop_duplicates()
                    expected = Index([False, True], name='a')
                    tm.assert_index_equal(result, expected)
                    continue

                # original doesn't have duplicates
                expected = np.array([False] * len(original), dtype=bool)
                duplicated = original.duplicated()
                tm.assert_numpy_array_equal(duplicated, expected)
                assert duplicated.dtype == bool
                result = original.drop_duplicates()
                tm.assert_index_equal(result, original)
                assert result is not original

                # has_duplicates
                assert not original.has_duplicates

                # create repeated values, 3rd and 5th values are duplicated
                idx = original[list(range(len(original))) + [5, 3]]
                expected = np.array([False] * len(original) + [True, True],
                                    dtype=bool)
                duplicated = idx.duplicated()
                tm.assert_numpy_array_equal(duplicated, expected)
                assert duplicated.dtype == bool
                tm.assert_index_equal(idx.drop_duplicates(), original)

                base = [False] * len(idx)
                base[3] = True
                base[5] = True
                expected = np.array(base)

                duplicated = idx.duplicated(keep='last')
                tm.assert_numpy_array_equal(duplicated, expected)
                assert duplicated.dtype == bool
                result = idx.drop_duplicates(keep='last')
                tm.assert_index_equal(result, idx[~expected])

                base = [False] * len(original) + [True, True]
                base[3] = True
                base[5] = True
                expected = np.array(base)

                duplicated = idx.duplicated(keep=False)
                tm.assert_numpy_array_equal(duplicated, expected)
                assert duplicated.dtype == bool
                result = idx.drop_duplicates(keep=False)
                tm.assert_index_equal(result, idx[~expected])

                with tm.assert_raises_regex(
                        TypeError, r"drop_duplicates\(\) got an unexpected "
                        "keyword argument"):
                    idx.drop_duplicates(inplace=True)

            else:
                expected = Series([False] * len(original),
                                  index=original.index, name='a')
                tm.assert_series_equal(original.duplicated(), expected)
                result = original.drop_duplicates()
                tm.assert_series_equal(result, original)
                assert result is not original

                idx = original.index[list(range(len(original))) + [5, 3]]
                values = original._values[list(range(len(original))) + [5, 3]]
                s = Series(values, index=idx, name='a')

                expected = Series([False] * len(original) + [True, True],
                                  index=idx, name='a')
                tm.assert_series_equal(s.duplicated(), expected)
                tm.assert_series_equal(s.drop_duplicates(), original)

                base = [False] * len(idx)
                base[3] = True
                base[5] = True
                expected = Series(base, index=idx, name='a')

                tm.assert_series_equal(s.duplicated(keep='last'), expected)
                tm.assert_series_equal(s.drop_duplicates(keep='last'),
                                       s[~np.array(base)])

                base = [False] * len(original) + [True, True]
                base[3] = True
                base[5] = True
                expected = Series(base, index=idx, name='a')

                tm.assert_series_equal(s.duplicated(keep=False), expected)
                tm.assert_series_equal(s.drop_duplicates(keep=False),
                                       s[~np.array(base)])

                s.drop_duplicates(inplace=True)
                tm.assert_series_equal(s, original)

    def test_drop_duplicates_series_vs_dataframe(self):
        # GH 14192
        df = pd.DataFrame({'a': [1, 1, 1, 'one', 'one'],
                           'b': [2, 2, np.nan, np.nan, np.nan],
                           'c': [3, 3, np.nan, np.nan, 'three'],
                           'd': [1, 2, 3, 4, 4],
                           'e': [datetime(2015, 1, 1), datetime(2015, 1, 1),
                                 datetime(2015, 2, 1), pd.NaT, pd.NaT]
                           })
        for column in df.columns:
            for keep in ['first', 'last', False]:
                dropped_frame = df[[column]].drop_duplicates(keep=keep)
                dropped_series = df[column].drop_duplicates(keep=keep)
                tm.assert_frame_equal(dropped_frame, dropped_series.to_frame())

    def test_fillna(self):
        # # GH 11343
        # though Index.fillna and Series.fillna has separate impl,
        # test here to confirm these works as the same

        for orig in self.objs:

            o = orig.copy()
            values = o.values

            # values will not be changed
            result = o.fillna(o.astype(object).values[0])
            if isinstance(o, Index):
                tm.assert_index_equal(o, result)
            else:
                tm.assert_series_equal(o, result)
            # check shallow_copied
            assert o is not result

        for null_obj in [np.nan, None]:
            for orig in self.objs:
                o = orig.copy()
                klass = type(o)

                if not self._allow_na_ops(o):
                    continue

                if needs_i8_conversion(o):

                    values = o.astype(object).values
                    fill_value = values[0]
                    values[0:2] = pd.NaT
                else:
                    values = o.values.copy()
                    fill_value = o.values[0]
                    values[0:2] = null_obj

                expected = [fill_value] * 2 + list(values[2:])

                expected = klass(expected)
                o = klass(values)

                # check values has the same dtype as the original
                assert o.dtype == orig.dtype

                result = o.fillna(fill_value)
                if isinstance(o, Index):
                    tm.assert_index_equal(result, expected)
                else:
                    tm.assert_series_equal(result, expected)
                # check shallow_copied
                assert o is not result

    @pytest.mark.skipif(PYPY, reason="not relevant for PyPy")
    def test_memory_usage(self):
        for o in self.objs:
            res = o.memory_usage()
            res_deep = o.memory_usage(deep=True)

            if (is_object_dtype(o) or (isinstance(o, Series) and
                                       is_object_dtype(o.index))):
                # if there are objects, only deep will pick them up
                assert res_deep > res
            else:
                assert res == res_deep

            if isinstance(o, Series):
                assert ((o.memory_usage(index=False) +
                         o.index.memory_usage()) ==
                        o.memory_usage(index=True))

            # sys.getsizeof will call the .memory_usage with
            # deep=True, and add on some GC overhead
            diff = res_deep - sys.getsizeof(o)
            assert abs(diff) < 100

    def test_searchsorted(self):
        # See gh-12238
        for o in self.objs:
            index = np.searchsorted(o, max(o))
            assert 0 <= index <= len(o)

            index = np.searchsorted(o, max(o), sorter=range(len(o)))
            assert 0 <= index <= len(o)

    def test_validate_bool_args(self):
        invalid_values = [1, "True", [1, 2, 3], 5.0]

        for value in invalid_values:
            with pytest.raises(ValueError):
                self.int_series.drop_duplicates(inplace=value)

class TestTranspose(Ops):
    errmsg = "the 'axes' parameter is not supported"

    def test_transpose(self):
        for obj in self.objs:
            if isinstance(obj, Index):
                tm.assert_index_equal(obj.transpose(), obj)
            else:
                tm.assert_series_equal(obj.transpose(), obj)

    def test_transpose_non_default_axes(self):
        for obj in self.objs:
            tm.assert_raises_regex(ValueError, self.errmsg,
                                   obj.transpose, 1)
            tm.assert_raises_regex(ValueError, self.errmsg,
                                   obj.transpose, axes=1)

    def test_numpy_transpose(self):
        for obj in self.objs:
            if isinstance(obj, Index):
                tm.assert_index_equal(np.transpose(obj), obj)
            else:
                tm.assert_series_equal(np.transpose(obj), obj)

            tm.assert_raises_regex(ValueError, self.errmsg,
                                   np.transpose, obj, axes=1)

class TestNoNewAttributesMixin(object):

    def test_mixin(self):
        class T(NoNewAttributesMixin):
            pass

        t = T()
        assert not hasattr(t, "__frozen")

        t.a = "test"
        assert t.a == "test"

        t._freeze()
        assert "__frozen" in dir(t)
        assert getattr(t, "__frozen")

        def f():
            t.b = "test"

        pytest.raises(AttributeError, f)
        assert not hasattr(t, "b")

class TestToIterable(object):
    # test that we convert an iterable to python types

    dtypes = [
        ('int8', (int, long)),
        ('int16', (int, long)),
        ('int32', (int, long)),
        ('int64', (int, long)),
        ('uint8', (int, long)),
        ('uint16', (int, long)),
        ('uint32', (int, long)),
        ('uint64', (int, long)),
        ('float16', float),
        ('float32', float),
        ('float64', float),
        ('datetime64[ns]', Timestamp),
        ('datetime64[ns, US/Eastern]', Timestamp),
        ('timedelta64[ns]', Timedelta)]

    @pytest.mark.parametrize(
        'dtype, rdtype', dtypes)
    @pytest.mark.parametrize(
        'method',
        [
            lambda x: x.tolist(),
            lambda x: list(x),
            lambda x: list(x.__iter__()),
        ], ids=['tolist', 'list', 'iter'])
    @pytest.mark.parametrize('typ', [Series, Index])
    def test_iterable(self, typ, method, dtype, rdtype):
        # gh-10904
        # gh-13258
        # coerce iteration to underlying python / pandas types
        s = typ([1], dtype=dtype)
        result = method(s)[0]
        assert isinstance(result, rdtype)

    @pytest.mark.parametrize(
        'dtype, rdtype, obj',
        [
            ('object', object, 'a'),
            ('object', (int, long), 1),
            ('category', object, 'a'),
            ('category', (int, long), 1)])
    @pytest.mark.parametrize(
        'method',
        [
            lambda x: x.tolist(),
            lambda x: list(x),
            lambda x: list(x.__iter__()),
        ], ids=['tolist', 'list', 'iter'])
    @pytest.mark.parametrize('typ', [Series, Index])
    def test_iterable_object_and_category(self, typ, method,
                                          dtype, rdtype, obj):
        # gh-10904
        # gh-13258
        # coerce iteration to underlying python / pandas types
        s = typ([obj], dtype=dtype)
        result = method(s)[0]
        assert isinstance(result, rdtype)

    @pytest.mark.parametrize(
        'dtype, rdtype', dtypes)
    def test_iterable_items(self, dtype, rdtype):
        # gh-13258
        # test items / iteritems yields the correct boxed scalars
        # this only applies to series
        s = Series([1], dtype=dtype)
        _, result = list(s.items())[0]
        assert isinstance(result, rdtype)

        _, result = list(s.iteritems())[0]
        assert isinstance(result, rdtype)

    @pytest.mark.parametrize(
        'dtype, rdtype',
        dtypes + [
            ('object', (int, long)),
            ('category', (int, long))])
    @pytest.mark.parametrize('typ', [Series, Index])
    def test_iterable_map(self, typ, dtype, rdtype):
        # gh-13236
        # coerce iteration to underlying python / pandas types
        s = typ([1], dtype=dtype)
        result = s.map(type)[0]
        if not isinstance(rdtype, tuple):
            rdtype = tuple([rdtype])
        assert result in rdtype

    @pytest.mark.parametrize(
        'method',
        [
            lambda x: x.tolist(),
            lambda x: list(x),
            lambda x: list(x.__iter__()),
        ], ids=['tolist', 'list', 'iter'])
    def test_categorial_datetimelike(self, method):
        i = CategoricalIndex([Timestamp('1999-12-31'),
                              Timestamp('2000-12-31')])

        result = method(i)[0]
        assert isinstance(result, Timestamp)

    def test_iter_box(self):
        vals = [Timestamp('2011-01-01'), Timestamp('2011-01-02')]
        s = Series(vals)
        assert s.dtype == 'datetime64[ns]'
        for res, exp in zip(s, vals):
            assert isinstance(res, Timestamp)
            assert res.tz is None
            assert res == exp

        vals = [Timestamp('2011-01-01', tz='US/Eastern'),
                Timestamp('2011-01-02', tz='US/Eastern')]
        s = Series(vals)

        assert s.dtype == 'datetime64[ns, US/Eastern]'
        for res, exp in zip(s, vals):
            assert isinstance(res, Timestamp)
            assert res.tz == exp.tz
            assert res == exp

        # timedelta
        vals = [Timedelta('1 days'), Timedelta('2 days')]
        s = Series(vals)
        assert s.dtype == 'timedelta64[ns]'
        for res, exp in zip(s, vals):
            assert isinstance(res, Timedelta)
            assert res == exp

        # period (object dtype, not boxed)
        vals = [pd.Period('2011-01-01', freq='M'),
                pd.Period('2011-01-02', freq='M')]
        s = Series(vals)
        assert s.dtype == 'object'
        for res, exp in zip(s, vals):
            assert isinstance(res, pd.Period)
            assert res.freq == 'M'
            assert res == exp


text:
Lohan says rehab `sobering'
PUBLISHED: October 9, 2007 at 12:00 am | UPDATED: September 1, 2017 at 9:31 am
Recovering actress Lindsay Lohan is making plans for life after rehab.
The 21-year-old actress reportedly checked out of the Cirque Lodge, a drug and alcohol treatment center in Utah, on Friday. She had entered treatment in August after reaching a plea deal on misdemeanor drunk driving and cocaine charges following two arrests.
"It was a sobering experience," Lohan says in an interview with OK! magazine. "It was humbling. It made me look at myself, and all of the people, places and things in my life in a different way. I was in there for substance abuse, after all."
Staying sober – and out of Los Angeles – is Lohan's main priority. She said she's staying in Utah until it's time to shoot "Dare to Love Me," and then will return there "so I can stay focused."
When asked whether she's worried about a relapse, Lohan says: "Of course I am! If I wasn't I'd be living in denial. Temptation is always there but now I'll avoid it the right way."
Lohan – who recently reunited with her father, Michael Lohan, after a 3-year estrangement – tells In Touch Weekly that her parents' divorce triggered her behavior.
Lohan was arrested in May after crashing her Mercedes-Benz into a tree in Beverly Hills She was arrested again in July after the mother of Lohan's former personal assistant called 911 to report that her car was being chased by a sport utility vehicle. The chase ended in Santa Monica, where police arrested Lohan.
In both cases, Lohan was found in possession of small amounts of cocaine.
Her plea deal called for her to enter treatment, spend a day in jail and perform community service.
Booking set
A judge has ordered Britney Spears to be booked at a Los Angeles police station in her hit-and-run case.
Los Angeles Superior Court Commissioner Rebecca Omens said the 25-year-old pop star must be fingerprinted and photographed before Oct. 25, when she is required to appear in court. Spears was charged last month with hit and run and driving without a valid license after she allegedly smashed her car into another in a parking lot in August.
The charges stem from an Aug. 6 parking-lot crash during which paparazzi filmed Spears steering her car into another vehicle as she tried to turn into a spot in a Studio City parking lot. After assessing the damage to her own car, she was shown on paparazzi video walking away.
Plea entered
An attorney for Kiefer Sutherland entered a plea of no contest Tuesday on the actor's behalf to a charge of driving with a blood-alcohol level above the legal limit.
Attorney Blair Berk entered the plea on behalf of Sutherland, who was not present. The charge of driving with a blood-alcohol level of .08 percent or higher stemmed from a traffic stop in Los Angeles last month.
Sentencing is set for Dec. 21.
Sutherland, star of Fox's "24," could face up to one year in jail.
As pretty does
The accolades keep coming for America Ferrera.
The Emmy-winning star of "Ugly Betty" is now the Hispanic Woman of the Year, the Hollywood Reporter and Billboard announced Thursday.
The publications honored Ferrera and the 25 most powerful Hispanic women in film, television and music Tuesday at an inaugural Hispanic Women in Entertainment breakfast at the Hollywood Roosevelt Hotel.
Ferrera has won a Golden Globe, Emmy and Screen Actors Guild award for her portrayal of Betty Suarez on the ABC show.
Birthday tower
Yoko Ono urged the world to give peace a chance with the unveiling Tuesday of the Imagine Peace Tower on Videy island in Iceland on what would have been husband John Lennon's 67th birthday.
The former Beatle was shot dead outside their New York apartment building Dec. 8, 1980, by deranged fan Mark David Chapman.
Ono was to be joined at the ceremony by the couple's son, Sean Lennon; Beatles drummer Ringo Starr; and bandmate George Harrison's widow, Olivia. Paul McCartney also was invited.
The tower is a stories-tall beam of light that will radiate from a wishing well bearing the words "imagine peace" in 24 languages. The plan is for the tower to be lit each year between Oct. 9 and Dec. 8.
Ono said she chose Iceland, the world's northernmost nation, because it is a very eco-friendly country that relies on geothermal energy.
Actor Peter Coyote, 65 … Singer John Prine, 61 … Actor-dancer Ben Vereen, 61 … Actress Jessica Harper, 58 … Singer-guitarist Midge Ure, 54 … Country singer Tanya Tucker, 49 … Actress Julia Sweeney ("Saturday Night Live"), 48 … Actor Bradley Whitford ("The West Wing"), 48 … Drummer Mike Malinin of the Goo Goo Dolls, 40 … Actress Wendi McLendon-Covey ("Reno 911!"), 38 … Actor Mario Lopez ("The Other Half," "Saved By The Bell"), 34 … Actress Jodi Lyn O'Keefe ("She's All That," "Nash Bridges") is 29. Singer Mya, 28.
– Edited by Rosalind Silver

redpajama_set_name: RedPajamaCommonCrawl


Description: Many women don't need foundation everywhere. OneBase™ allows you to cover areas around the eyes, nose and mouth to conceal imperfections. It then blends out perfectly to natural skin. Cargo's OneBase combines superior coverage and precision application in the ease of a sleek tube and wand combination. It is the perfect product for those who do not want full-face foundation coverage – designed for natural coverage in key facial areas. Nourishing ingredients and conditioning properties provide moisture to the skin. Fragrance free and excellent for delicate, sensitive skin with essential essences that condition the skin and will not clog the pores. Features: Nourishing ingredients and conditioning properties provide moisture to the skinFragrance -free and excellent for delicate, sensitive skin Sold in a sleek, malleable metal tube with a touch wand that is both easy and practical ALL SKIN TYPESKey Ingredients: Vitamin E helps the skin to fight the damaging effects of the environment and helps to moisturize the skin and repair minor damage found on the surface of the skinChamomile Extract is a natural essential essence that is ideal for dry and sensitive skin types. Its naturally soothing and relaxing properties make it an exceptional ingredient for skin care productsAvocado Extract is rich in natural vitamins that help to nourish the skinShade Range: Application: Using enclosed touch wand, dab OneBase to key areas of the face blend out with finger tipsUse under the eyes and on eyelids to brighten the eye area and prime the lids for shadowIf desired, OneBase can be used alone as a foundation replacement for key facial areas, or under liquid foundation for full-face coverageIngredients: Water (Aqua), Cyclomethicone, Propylene Glycol, Talc, Triethanolamine, Polyglyceryl-3 Diisostearate, Dimethicone Copolyol, Sodium Chloride, Methylparaben, Methicone, Propylparaben, Tribehenin, Tocopheryl Acetate, Anthemis Nobilis Flower Extract, Aloe Barbadensis Extract, Persea Gratissima (Avocado) Oil, Retinyl Palmitate, Glycosaminoglycans, Sodium Chondroitin Sulfate. May Contain (+/-): Titanium Dioxide (CI 77891), Iron Oxides (CI 77491, CI 77492, CI 77499), Carmine (CI 75470), Chromium Oxide Green (CI 77288), Manganese Violet (CI 77742), Ultramarines (CI 77007).


This foldable bucket hat comes with a polyester pouch. The surrounding multiple-sewed brim helps to shade the wearer in hot sunshine. This is a classic advertising product for travelling, summer events, parade, team building, sports fundraisers and fishing trips. Give your promotional campaign an extra boost when you add your custom imprint on our water resistant hat!


For a detailed look at the calendar, please click here.
Is any preparation needed for the online courses? Are there any prerequisites?
For the summer term, generally there are no prerequisites and no preparation is needed, except enthusiasm, the desire to learn and the commitment to the schedule of the online courses. Exceptions are Intro to Latin 2 (completion of Latin 1) and Algebra 2 readiness (completion of Algebra 1).
Attend the St. Max Study Skills Seminars offered via Kolbe during the early part of the school year. See calendar for dates and times.
Watch 5 short study skills webcasts prior to the orientation week. Information on viewing these webcasts will be given to you after you apply for enrollment.
New 2017-18 – complete student orientation training.
Which Kolbe homeschool courses do you offer through the Online Academy?
Kolbe Academy offers almost all of Kolbe's grades 6-12 homeschool courses. The only courses that are currently NOT offered from these levels are Anatomy & Physiology, Astronomy, Italian I and II, German I and II, Third Form Latin, Fourth Form Latin, Harcourt Science 6, Land of Our Lady History series (Catholic Textbook Project offered), and Sacon Math (Sadlier/Foerster Math offered).
Are there any online courses offered that are not offered in Kolbe's homeschool curriculum?
Yes, there are just a few.
English 9-11 do not correspond exactly to the Kolbe home school course plans.
Can 7th and 8th grade students take high school courses for high school credit?
Eighth graders can receive credit for any Online high school courses. This is true for only the Online Academy. Eighth graders may not receive credit for a Kolbe high school homeschool courses except in the areas of math, science, and foreign language.
Seventh graders enrolling in high school level courses do not receive credit on a Kolbe high school transcript.
Please note: We highly recommend that students continue their pursuit of the subject areas from which their 8th grade high school credit subject came at a higher level even if their diploma requirements are complete. Most colleges and universities will not allow courses completed in 8th grade to count toward their admission requirements.
What is the cost of a single online courses?
Please click here for tuition rates for Summer term.
School Year tuition rates can be found here.
Do you offer full tuition for student's enrolled in 6 or more online courses?
We do not have a full tuition enrollment price for students enrolled in online courses. However, for each online course enrollment, a significant discount on Kolbe Academy full tuition enrollment is given.
How do I enroll my student for online courses?
All students who would like to take online courses must first will out an application for enrollment. Once approved, the enrollment form will be emailed to the parent to complete course enrollment. The application for enrollment will be available on March 4th. Enrollment in courses will be opened to returning families on a first come, first serve basis beginning March 6th. New families will be allowed to complete their child's enrollment in Online Courses beginning March 18th.
Will the online course follow the Kolbe Home School homeschool course plan?
Generally, yes. However, the instructor has the flexibility to modify the course plan as necessary. All instructors have a Kolbe Academy mentor that approves and oversees any major changes to the Kolbe course plans.
Kolbe online instructors can and should adapt the course plan to their particular class in order to ensure that students grasp the material to the fullest extent possible. While Kolbe's homeschool course plans are not provided outright to Online Academy students, instructors are encouraged to share the portions of the course plan with their students via the Schoology course page.
How do I get in touch with an online instructor?
Once the student is enrolled in the course, a welcome packet with information will be emailed to the student and parent email addresses. The name of the instructor and the instructor's email address is included in the packet. Email is the primary avenue to communicate with the instructor. Phone communication should not be expected except in a rare instance.
Beginning in the 2015-16 School year, instructors are required to hold at least one weekly office hour for studentsto pop-in for additional help or questions.
Who assigns grades for the class?
The instructor grades the assignments, which are tracked and submitted electronically through Schoology.
How do I see the grades for my child's online courses?
Teachers are required to maintain and their gradebooks on a reasonable timeframe. Parents should login at least every other week to monitor student progress in each course. Unofficial transcripts are sent out by Kolbe Academy at the end of each semester after teacher's have submitted final grades. Mid-semester progress reports are sent to students who are receiving failing grades.
Whom do I contact with questions and concerns about my child's performance in the online course?
First, always start with the online instructor. The instructor's email address is included in the student welcome packet. If the online instructor cannot offer help in regards to the student's performance or an issue can not be resolved, families should contact the Dean of Students for the Online Academy.
How are the online courses taught?
The live portion is taught through Adobe Connect, an online meeting space. The login information and link to the Adobe Connect meeting space for the class is included in the welcome packet email. Live classes meet 1-2x per week, depending on the subject.
Additional interaction between the teachers and students may occur throughout the week via email and the class Schoology page. Students are expected to check the Schoology page for their class for updates daily.
In Adobe Connect, there is a public chat area that is enabled before class begins where students interact. Some teachers will use this chat area throughout class to faciliate discussion. Private messaging is disabled in Adobe Connect to help students stay focused during their live classes. Additionally, students will be expected to interact with the teacher and other students using their microphone audio enabled by using a headset.
Outside of class, the Schoology site allows students to interact using messaging. Parents may request this messaging function by turned off for their child if it becomes a distraction. Kolbe has administrative permissions to view and log all student messaging done through Schoology. Messaging is a privilege and not a right. Kolbe can turn it off for any student caught abusing the system.
The Schoology site also has several methods for communication between students and teachers. Teachers may or may not use this functionality (such as forums or discussion boards), but many teachers do use it as a way to engage with students throughout the week.
All of the classes are recorded. The student is expected to view the class to catch up on the assignments. Keep in mind that part of the grade comes from participation. The more the student misses, the more the participation grade is impacted. The instructor is not required to allow students to make up participation grades from missed classes, but may choose to do so if the student alerts them of an absence before class begins. Make sure to communicate with your instructor when situations arise that do not allow a student to attend class.
Students who miss more than 3 live classes per semester are at risk for being made an "inactive" student in the class. Inactive students are no longer allowed to attend live class or submit assignments to the teacher for grading.
Can a class be viewed later?
Yes, all classes are recorded and can be viewed later. Often, students will find it beneficial to review a class recording at a later time as a study aid. However, classes are not meant to be done at the student's own pace but at the pace set by the instructor. Missing class will impact the participation grade. It is important that the time commitment for the live online class is set aside in the child's schedule. Below is Kolbe's attendance policy.
Kolbe Academy realizes that there are times when a student has a legitimate reason for missing school (illness, family circumstances, etc). However, students who are absent an excessive number of days should not expect continuous compensation from their teachers concerning out-of-class help, and certainly put their grade, and overall learning, in jeopardy.
All teachers are required to include a 7-8% attendance grade in their grading scheme. The method in which a student obtains the attendance grade within the live class may vary from teacher to teacher, but overall will be an objective measure of the student attending and being engaged in live class.
If a student misses class, FOR ANY REASON (sickness, traveling, funeral, wedding, internet outage, or stubbed toe), they may make up the attendance grade by watching the recorded class and writing a two paragraph summary on the missed class. To receive the full attendance grade for the missed class, the summary must be turned in within 7 days from the missed class. The teacher is not required to remind the student of this deadline.
In cases of extended absence due to a difficult illness or accident, the Dean of Students should be contacted by the parent to arrange accommodations. Teachers are not allowed to make arrangements for such extenuating circumstances.
Kolbe seeks to place solid Catholic teachers into our Online Academy. We have teachers who have graduates from all over the US from different 4 year institutions, with a high population of teachers from strong Catholic institutions such as Franciscan University, University of Dallas, Holy Apostles College and St. Thomas Aquinas College. Over half of our teachers have masters degrees, and a few have PhDs or are currently working on PhDs. All of our teachers are dedicated to the ministry of teaching, and with each year of online teaching experience, have become well versed in the nuances of bringing Classical Education to the online format.
Online Instructors are not meant to give homeschool, diploma or transcript advice. Questions pertaining to these topics should be directed to the advising staff at Kolbe Academy. Likewise, the advising staff at Kolbe Academy does not know all of the inner workings and assignments given by instructors. Questions pertaining to grading and assignments should always be directed to the online instructor.
To read more about our instructors and their backgrounds, click here.
What is the parent's role in the online courses?
Always know the login and password information of your child including their Schoology account, Adobe Connect account, and their personal email.
Make sure updated email addresses and phone numbers of both the parent and student are on file with Kolbe.
Read all Kolbe Academy communication that is emailed out on a periodic basis.
One parent in each family will receive a login to Schoology which will be associated with their child(ren)'s Schoology account. During Orientation Week and the first four weeks of class, you MUST login to your parent Schoology account to check on assignment status, grades, and student communication.
During the remainder of the year, you MUST login to your parent Schoology account at least every other week.
Exams should be proctored by a parent or guardian. Be sure to adhere to exam and testing guidelines as outlined by each individual instructor. Proctoring is defined as a parent or guardian (college age sibling is ok) physically checking in on the student while an exam is being taken to help deter the student from the temptations of academic dishonesty. The proctor should be in the same household of the student and be aware of all honesty statements that the student and/or proctor must sign at the beginning or end of the exam. The proctor should be aware of whether an exam is open book if any outside resources are allowed by the teacher. While proctor is not required to sit next to or be in the same room as the student during the entirety of the exam, periodic physical check-ins while the student is taking the exam are required.
Level of Overall Involvement: As with any homeschool or traditional school course, parents are expected to have a level of involvement that is appropriate for their child. Students who have never taken an online class before should be monitored closely by a parent to insure that deadlines are being met and technology is not hindering the student. Once mastery of the online environment and flow of the class has been achieved, parents can feel confident in letting an independent learner take the reins. Other students, who may require constant help with time management and focus, should have a parent involved as needed to achieve maximum success in the course.
Grading & Teaching: While parents are not expected to grade or teach material from the online course, reinforcement of concepts or additional emphasis and discussion may be important for many students to succeed in the online course environment.
Are the online classes moderated?
Yes. There is a technical moderator on call during class to ensure that the class runs smoothly. Students should contact techmoderator(at)kolbe.org if technical issues occur during class OR if a teacher (or another adult) does not show up into the Adobe Connect room.
Kolbe's Technical Administrator can assist with finding out your computer's connection speed and technical requirements for the online environment. Issues with Adobe Connect, Schoology, or any other technical issue can be directed to techsuppor(at)kolbe.org. The link to the technical help form is here and a number of places on the home page for Kolbe Academy.
Include your first name, last name, and username in your email.
Describe the problem you are having and what you have done so far to troubleshoot.
Include the exact URL where the problem is occurring (i.e. kolbe.adobeconnect.com or www.kolbe.org).
Take screen shots of the problem to show exactly what you are seeing. That will help our tech support team recreate the issue.
Remember not to be tempted to write things out of anger or frustration. We know that tech problems are frustrating, but they are part of learning online. We will help you as soon as possible!
Will my child be able to interact with other students in his/her class?
Students are encouraged to login to their classroom up to 10 minutes early to do a microphone check with a technical moderator or teacher. Once the mic check is complete, students present in the room are able to chat with one another using the chatbox technology in Adobe Connect. The chatbox is typically hidden or cleared once the teacher officially begins class.
Students will interact in an academic way throughout the live class session during discussion and other class activities.
Students will find several opportunities to interact using Schoology, the LMS that Kolbe uses for course landing pages, submitting assignments, and student grades. Teachers will often use the forum feature in Schoology to hold class discussions outside of the live class events.
To keep a safe and quality environment for students, please read or adhere to the following.
Private messaging between students is not enabled on Adobe Connect or Schoology to help students stay focused during their precious live classroom time but especially to diminish the temptation for academic dishonesty.
While private messaging is not turned on in Schoology, groups are formed based on graduating class so that students can interact with one another in a public discussion format.
Students who abuse discussion privledges on Schoology will be denied access to the Schoology groups they are part of.
Parents may request at any time that their child's membership to a Schoology group be revoked if it has become a distraction to the student.
Parents should always know how to obtain login information to student Schoology, Adobe Connect, email, and other social media accounts.
Parents should caution their children not to share personal information, such as their address, with other students.
Students who are interested in corresponding with one another may ask a parent to contact the Dean of Students & Families to put students in touch with one another via email.


text:
Home » Blog » Current Affairs »Current Affairs Quiz
Important Current Affairs Quiz 3rd September 2019
Testbook | Updated: Sep 3, 2019 17:49 IST
Many of you have been practicing a lot for your upcoming exams. Thus, to give you a head start we thought of helping you by bringing out daily current affairs quiz on Banking, Insurance and various other exams, that will help you boost up your preparation a lot more. Moreover, this quiz contains expected questions which match the Exam Pattern of most of the Government Job Exams and Banking Exams. Make sure to attempt this Important Current Affairs Quiz 3rd September 2019 and check your preparation level.
Important Current Affairs Quiz – 2nd September 2019
Along with this Current Affairs Quiz 3rd September 2019, also check out this week's important Current Affairs in English and Hindi of 3rd September 2019. Also, take yesterday's Current Affairs Quiz and check to see if you can attempt 20 questions correctly!
Important Current Affairs Quiz 3rd September
Que. 1
On 2 September 2019, India beat ________ by 257 runs in the ICC World Test Championship.
India beat West Indies by 257 runs at Sabina Park in Kingston, Jamaica on 2 September 2019 to complete a 2-0 whitewash over the hosts.
The victory gives Virat Kohli and Co. their first series win in the ICC World Test Championship, thus taking them to the top of the table with 120 points.
The win was 28th in Tests for Virat Kohli, which made him the most successful Indian captain.
Attempt these questions in our app. Download now
Dr Harsh Vardhan addressed the 72nd Session of the WHO Regional Committee for South-East Asia on 2 September 2019 in ________.
Dr Harsh Vardhan, Union Minister of Health and Family Welfare addressed the 72nd Session of the WHO Regional Committee for South-East Asia on 2 September 2019 in New Delhi.
He was elected as Chair of the 72nd Session of the WHO Regional Committee for South-East Asia.
This is the second time that India is hosting the Regional Committee meeting; the previous one was also hosted in New Delhi.
The combined Index of Eight Core Industries stood at ________ in July 2019.
The Eight Core Industries comprise 40.27 per cent of the weight of items included in the Index of Industrial Production (IIP).
The combined Index of Eight Core Industries stood at 131.9 in July, 2019, which was 2.1 per cent higher as compared to the index of July, 2018.
Its cumulative growth during April to July, 2019-20 was 3.0 per cent.
Read the following statements carefully:
1.Army is preparing to receive and train the first batch of women soldiers.
2.The training of the selected 100 is likely to start in Dec 2019 in New Delhi.
3.Duration of the training will be for 61 weeks just as male soldiers.
Which of the above statements is/are correct?
Only 1 and 2
All are correct
Army is preparing to receive and train the first batch of women soldiers.
The training of the selected 100 is likely to start in Dec 2019 in Bengaluru.
Duration of the training will be for 61 weeks just as male soldiers.
Every year, a batch of 100 will be inducted till there will be 1700 cadre strength.
Where will the Joint Naval Annual Quality Conclave (JNAQC) be hosted in September 2019?
The Joint Naval Annual Quality Conclave (JNAQC) will be hosted by the Naval Quality Assurance Establishments under the aegis of Director General Quality Assurance (DGQA), Ministry of Defence in Visakhapatnam on September 5, 2019.
Its theme would be 'Transformation of QA Paradigm: Opportunities and Challenges'.
Vice Admiral Atul Kumar Jain will be the Chief Guest for the annual event.
PM Narendra Modi will be conferred with the Bill & Melinda Gates Foundation, for the PM's ambitious pet project, ________.
Ayushman Bharat-National Health Protection Mission
Solar Charkha Mission
Transformation of Aspirational Districts Programme
National Nutrition Mission (POSHAN Abhiyan)
PM Narendra Modi will be conferred with the Bill & Melinda Gates Foundation, for the PM's ambitious pet project, Swachh Bharat Abhiyan.
Swachh Bharat Abhiyan was one of the first few ambitious projects that PM Modi launched in his first term in 2014.
The project was launched as an ode to Mahatma Gandhi on his birth anniversary on October 2, 2014.
Where did Khadi and Village Industries Commission (KVIC) launch first-ever 'Terracotta Grinder'?
Khadi and Village Industries Commission (KVIC) launched first-ever 'Terracotta Grinder' at Sewapuri in Varanasi.
This machine can be used to grind wasted and broken pottery items for re-use in pottery-making.
It will make grinding of wasted pottery items faster than the traditional mortar and pestle.
It will also lessen the cost of production.
Where did the fourth South Asian Speakers' Summit kick off in September 2019?
The fourth South Asian Speakers' Summit kicked off in the Maldives capital on 1 September 2019 with the secretary general of the Inter-Parliamentary Union and senior lawmakers from Afghanistan, Bangladesh, Bhutan, India, Pakistan and Sri Lanka.
The 2-day meeting focused on achieving the Sustainable Development Goals.
The annual summit was organised jointly by IPU and the Maldives parliament.
In September 2019, who became the fastest Indian wicket-keeper to claim 50 dismissals in Test cricket?
K. L. Rahul
Rishabh Pant became the fastest Indian wicket-keeper to claim 50 dismissals in Test cricket, surpassing MS Dhoni.
He claimed his 50th victim in his 11th Test while Dhoni had taken 15 Tests to touch the milestone.
Pant took an easy catch to dismiss West Indies' Kraigg Brathwaite off an Ishant Sharma delivery in the second innings of the hosts in the second Test.
Que. 10
Apurvi Chandela, partnered with ________ to win mixed 10m air pistol gold in the ISSF World Cup 2019.
Sanjeev Rajput
Ronjan Sodhi
World number one in women's 10M Air Rifle, Apurvi Chandela, partnered with Deepak Kumar to win mixed 10m air pistol gold in the ISSF World Cup.
Anjum Moudgil and Divyansh Singh Panwar won a bronze medal.
India now has a total of four gold, one silver and two bronze for a total of seven medals in the Rio World Cup.
In September 2019, Virat Kohli has became the most successful Test captain of the nation with ________ wins in 48 matches.
Leading India in the 257-run win over West Indies in the second Test of the series, India captain Virat Kohli became the most successful Test captain of the nation on the same ground he had made his Test debut in 2011.
Virat Kohli now has the most Test wins as India captain (28 wins in 48 matches), who is followed by MS Dhoni (27 wins in 60 matches), Sourav Ganguly (21 wins in 49 matches).
Which of the following railway stations in Pakistan's Punjab province will be named after Guru Nanak Dev?
Havelian railway station
Nankana Sahib railway station
Kohat Tehsil railway station
Peshawar Cantonment railway station
Haripur railway station
The Nankana Sahib railway station in Pakistan's Punjab province will be named after Guru Nanak Dev, the founder of Sikhism.
It will be one of the best stations in Pakistan and will play a vital role in promoting religious tourism in the country.
A new train, namely Baba Guru Nanak train, would also be started from Lahore to Nankana soon.
Recently, OYO Hotels & Homes has acquired ________, a Copenhagen-based data science company for an undisclosed amount.
Sigma Data Systems
Empirical Path
Danamica
Tiger Analytics
OYO Hotels & Homes has acquired Danamica, a Copenhagen-based data science company for an undisclosed amount.
This acquisition is in line with OYO's continued commitment to its global vacation rentals business through strategic investments in technology products, processes and people.
In August 2019, OYO had announced €300 million investment in the vacation homes business in Europe.
Nepal's Attorney General Agni Prasad Kharel and Ambassador of India to Nepal Manjeev Singh Puri jointly inaugurated a school building constucted with India's assistance in ________ District in September 2019.
Nepal's Attorney General Agni Prasad Kharel and Ambassador of India to Nepal Manjeev Singh Puri jointly inaugurated a school building constucted with India's assistance in Jhapa District on 2 September 2019.
The new building of Shree Schoolchaun Higher Secondary School has been built with Government of India's grant of 35.70 million Nepali Rupees.
1.A government constituted Committee has recommended for putting in place a comprehensive legal framework for consumer protection keeping in mind the rise of Fintech and digital services.
2.The Steering Committee on Fintech related issues submitted its report to Finance Minister Nirmala Sitharaman in New Delhi on 2 September 2019.
3.It recommended the adoption of regulation technology.
A government constituted Committee has recommended for putting in place a comprehensive legal framework for consumer protection keeping in mind the rise of Fintech and digital services.
The Steering Committee on Fintech related issues submitted its report to Finance Minister Nirmala Sitharaman in New Delhi on 2 September 2019.
It recommended the adoption of regulation technology.
In which city, a police academy of international standards will be set up very soon for training cops which will be the first of its kind of institute in Uttar Pradesh?
A police academy of international standards will be set up very soon in Lucknow for training cops which will be the first of its kind of institute in the state.
State Police Headquarter's 'Signature' building in Lucknow was inaugurated on 2 September 2019.
It was running from a camp office established as make-shift arrangement in 1937.
Who became the first Indian woman to get a medal in World Skills event in 2019?
Ambika Kapoor
Khyati Bhatnagar
Shweta Ratanpura
Anukriti Mishra
Archana Kashyap
Shweta Ratanpura became the first Indian woman to get a medal in the World Skills event.
The event was held in Russia and was attended by 63 countries.
India ended on number 13 with 1 gold, 1 silver and 2 bronze medals.
Apart from Shweta's bronze in graphic designing, Indian won silver in web technologies, another bronze in jewellery and gold in water technology.
In 2019, India finished at the top of the ISSF World Cup Rifle/Pistol Championship in Rio De Janeiro with ________ gold medals.
India finished at the top of the ISSF World Cup Rifle/Pistol Championship in Rio De Janeiro with 5 gold, 2 silver and 2 bronze medals.
Manu Bhaker and Saurabh Choudhary won gold in the summit clash of 10-Metre Air Pistol mixed team event.
India has now finished as the leading nation in the event in 2019 with 16 gold, 4 silver and 2 bronze medals.
ICMR-National Institute of Nutrition (NIN) is going to implement the effectiveness of diet and lifestyle intervention with respect to lifestyle diseases like Hypertension and diabetes. Who is the director o NIN?
Dr R Hemalatha
Dr Ajay Garg
Dr Arun Solanki
Dr Rajesh Mishra
Dr Neeraj Saxena
The Indian Council of Medical Research(ICMR)-National Institute of Nutrition (NIN) is going to implement the effectiveness of diet and lifestyle intervention with respect to lifestyle diseases like Hypertension and diabetes.
This will be done through information, education and communication through Anganwadi Workers on the occasion of the National Nutrition Week.
NIN Director : Dr R Hemalatha
Recently, 8 US-made Apache AH-64E attack helicopters were inducted into the Indian Air Force. The IAF had signed a contract with the US and Boeing Ltd in Sept. 2015 for purchase of ________ Apache helicopters.
8 US-made Apache AH-64E attack helicopters were inducted into the Indian Air Force on 3 September 2019.
The addition of the Apache fleet will significantly enhance the IAF's combat capabilities.
The AH-64E Apache is one of the world's most advanced multi-role combat helicopters.
The IAF had signed a contract with the US and Boeing Ltd in Sept. 2015 for purchase of 22 Apache helicopters.
Important Current Affairs 3rd September 2019 in Hindi with PDF
Important Current Affairs 3rd September 2019 with PDF
Chandigarh NTT Eligibility Criteria 2019 – Check Age Limit & Educational Qualifications Here!
POSHAN Abhiyaan – Know The Scheme In Detail!
Chandigarh NTT Recruitment Notification 2019 – Direct Link To Apply!
UPSSSC Excise Constable PET Exam Date – Check Official Notice! 24 hours ago
Patna High Court To Fill 1469 vacancies For Various Posts – Check Details! 1 day ago


2017 is Scotland's Year of History, Heritage & Archaeology, but what does that actually mean for incentive groups who are travelling to, or considering Scotland for a sales incentive trip?
Well, we've asked some of the team for their thoughts on their favourite historic / heritage experience for incentive groups.
Not our usual blog style, but thanks to Jury's Inn for this fantastic comic strip!
An amazing tale of time travel across two Scottish cities.
Bill Thomson, Ambassador for Hello Scotland, explains the purpose and emotional connection behind his new corporate incentive & team building concept, 'Taking the Hill'.
The penultimate part of our blog series shows Bill, in full highlander costume and character, describing the 'Taking the Hill' concept and the real benefit it can have for a corporate group.
Not only is the concept fun, exciting and entertaining, but as you'll hear from participants in tomorrow video blog, it really does bring teams closer together, uniting them towards a common purpose, which lasts long after the group have travelled to Scotland.
Behind the scenes at a corporate event part 8: The battle!
John from Adrenalin Compagniet (Hello Scotland's client) is at the Battle scene! Watch the video where he tells us about the background of the incentive, the choice of location and introduces 'The General - McGregor McGroen'.
You'll also get your first glimpse of the participants crazy creative battle costumes as they prepare for their Highland Clan Games Challenge.
Will they win the battle and claim victory over their enemy? Find out what happened after the battle tomorrow!
Behind the scenes part 6: Battle preparation video!
Deep in underground Edinburgh, Bill & Claire are with the group of 230 ladies as they prepare for the battle of the 'Taking of the Hill'. Listen to the electrifying build up to an event this group have been waiting for and planning for 2 years...!
Edinburgh Festival Fringe - Love it. Hate it. Corporate incentive it.
It's the time of year when Edinburgh welcomes thousands of performers and visitors to the city for the world largest arts festival. Love it or hate it, the Edinburgh Festival Fringe is a hot topic for visitors and locals alike. Here's out pet hates, things we love about this year's festival, our tips for getting organised to visiting in 2011 and on why you should make it part of an excitingcorporate incentive package for your team.


text:
Directed by: Adam Walters
Written by: Adam Walters
Stiltsville Sisters
Older sister Ines (Anna Carvalho) decides to call up her sister Marine (Alix Richard) for a trip to Stiltville, a grouping of historical houses on the waters of Miami. These buildings on stilts serve as a back drop for a story of love, loss and re-connection. Ines and Marine are not from the area, and Ines figures since she's always wanted to see the sights, this would be a good time to reach out to her younger sister.
From the mind and eye of Adam Walters, this is a story of family, although not the ideal version. Marine is Ines step sister and it's implied that she was never treated right. As a result, Ines has estranged herself. There are no hints at anything other than Ines not being wanted, and this isn't a story of any kind of physical abuse I can see. But the estrangement has changed the relationship of the 2 sisters. Distanced them and it seems to me they were, at one time, close.
The other big plot point I noticed was the timing and reason for the trip. Ines has recently been involved in a relationship breakdown. It's for this reason she wants to travel and see things. Such as Stiltsville and the sea. Her personality has changed as well, as noted by Marine; and the film focuses on the potential healing of the 2 sisters, but not of the overall family. This is a relationship drama. Nothing more.
Being a micro budget film, Adam Walters has picked a beautiful location and used it the best way he could. The result is a visually pretty title that uses it's backgrounds as eye candy. It works because you won't find yourself looking down at your phone when you watch. This is a good thing because although Anna and Alix present some good performances, there's really not a lot going on.
The family problems and relationship issues are never fully realized. More like conversations in passing. I know this is 'supposed' to be an adventure/drama, but I never fully connected with either of the stars. No more than I would connect with a stranger sitting next to me on a bus, talking with their friend. The fault is not with the ladies and their acting, it's with a script that never seems to fully lift off. The actions, words and expressions are all visible. The attempt at depth is noticeable. It was just never fully achieved to me.
Stiltville Sisters was an average venture with plenty of above average scenery and some decent acting. This title was very easy to spend 15 minutes with, but may leave you wishing for more when it's all over. Usually, that's a good thing.


text:
Home Editor's Pick Govt clueless on investment and economy, says Daim
Govt clueless on investment and economy, says Daim
PETALING JAYA,Feb 17: The government is being seen by investors as one that is clueless and with no plans for the economy, unlike neighbouring nations, says former finance minister Daim Zainuddin.
He said the figures on investment seemed to indicate that investors were not confident that the government knew what it was doing.
"The government does not seem to have a plan. It is as simple as that. No investor will enter a country where they feel incompetence is so glaring.
"If we want to regain our status as a good investment destination, the leaders need to be better and, at the moment, investors do not see that happening. Don't forget investors have choices. And they vote with their feet," he told FMT in an email interview.
Daim, who was head of the Council of Eminent Persons set up by Dr Mahathir Mohamad in 2018, was asked to comment on the drastic drop in foreign direct investments (FDI) last year.
The United Nations Conference on Trade and Development (Unctad) said that while the pandemic had sent the inflows of FDI in the region plummeting, the rate of decline in Malaysia was larger compared to Indonesia, Vietnam and Singapore.
Daim said that even before the outbreak of the Covid-19 pandemic, these neighbouring countries had registered far higher inflows of FDI.
"This goes to show that Malaysia's competitiveness in the investment landscape has fallen behind our regional competitors, who are fast climbing up the ladder of FDI destinations.
"We used to be the destination of choice in this region. If the present economic leaders don't buck up, I foresee us sliding down even further," he said.
Daim said while Malaysia's policy was to focus on quality FDI in terms of capital intensity and high-technology industries, it must continue to enhance the domestic investment climate in all aspects.
Among them are competitive investment incentives, easing business-regulator pain points; competitive regulatory cost; policy clarity and consistency in compliance; and better coordination among the federal, state and local authorities.
He said it was also vital to address the deficit in skilled workers and tackle under-employment, increase technological absorption, and ease investors' concerns about political stability.
"The recent declaration of a national emergency did not help. To mitigate the negativity surrounding the declaration, the government has to act in a transparent manner so as not to further undermine investors' sentiment and confidence.
"It should be lifted when it has fulfilled its stated purpose and must not be prolonged. I hope that the new special independent emergency committee will not be a paper tiger," he said.
Daim said a compelling future growth narrative for Malaysia, with a clear focus, strategy and investment-friendly policies were needed, along with proper execution of these policies.
This, in turn, can help transform and lift the economy. "We need an economic and business system that is open, dynamic, and fosters entrepreneurism. One that is also fair, sustainable and where everyone feels valued."
He reminded the government that while Malaysia has enjoyed robust growth and progress in previous decades, "what got us here may not get us there".
With technology evolving rapidly, Covid-19 accelerating the arrival of future trends and fierce competition globally and regionally, it is harder, he said.
"As such, everyone must embrace a positive mindset towards innovation and change to accelerate future growth and progress."
Daim suggested that the government take several specific steps to overcome the lethargic FDI inflow. Among them are:
Accelerate Domestic Direct Investment (DDI) as both DDI and FDI are equally important and can have complementary effects if the regulators devise high value creation.
DDI-FDI linkages, especially with domestic SMEs, the backbone of Malaysia's industrial base.
Expedite regulatory reforms.
Plug major weaknesses in addressing the shortage of skill sets and tackle underemployment.
Devolve resources with strong political will in constructing and implementing credible economic and industrial development plans.
"More importantly, clear policies and communication are key to safeguarding investors' confidence. Given that multiple authorities and agencies are involved in economic development, someone must take charge.
"There is a need for effective inter-agency coordination as well as clear messages on domestic policies and procedures as well as the country's long-term economic plan," Daim said.
He said this would provide clarity and certainty to the market, and instil public confidence in Malaysia's macroeconomics and capital market.
Previous articleECERDC outlines initiatves to spur economic recovery in Terengganu
Next articleDigital economy council to facilitate coordination among ministries, agencies – Mustapa
High feed cost causing increased chicken price is beyond govt control
New fake news law allows police to take 'immediate' action, says...


text:
Share this Story: Ottawa wants to know how much sexual violence occurs in federal prisons, two years after incendiary report
Ottawa wants to know how much sexual violence occurs in federal prisons, two years after incendiary report
'We think that is a significant problem, and that (Correctional Service Canada) has not addressed and actually avoided to address'
Christopher Nardi
In response to a 2020 report warning of sexual violence in federal prisons, the Trudeau government promised a study would be conducted quickly and an interim report would be completed by spring 2021. Only now are steps being made toward a study. Photo by Ernest Doroszuk/Postmedia/File
OTTAWA — The federal government has no idea how many inmates are victims of sexual violence in prison and now wants to hire researchers to find out, two years after its own prison watchdog concluded that it's a pervasive problem.
"The current prevalence of sexual coercion and violence in federal correctional institutions is unknown," Public Safety Canada admits candidly as part of a new request for proposal (RFP ) launched on Tuesday.
Ottawa wants to know how much sexual violence occurs in federal prisons, two years after incendiary report Back to video
Its mission is to find a contractor that can explore the prevalence of sexual crimes amongst federal inmates, grasp the "nature and extent" of the problem for both racialized and at-risk offenders — namely Indigenous individuals, women and members of the LGBTQ+ community — and then suggest solutions to better prevent and intervene.
"In Canada, there has only been one nationally representative survey examining sexual coercion and violence against inmates in prisons… in 1995 and only included male inmates," Public Safety Canada notes in tender documents.
"This study is now outdated and did not cover the prevalence of different types of sexual victimization by other inmates and/or staff and did not examine different groups who have been found to experience higher rates of sexual coercion and violence while incarcerated (e.g., women, LGBTQ2)."
Prison watchdog raises concerns of 'culture of impunity'
Few inmates using flawed needle exchange program
The documents explain that the research is in response to an incendiary 2020 report by Correctional Investigator Dr. Ivan Zinger, whose office acts as a federal prison ombudsman. The report recommended that Ottawa act quickly to address the significant shortcomings in leadership, knowledge, and measures to prevent sexual violence in federal prisons.
"We think that is a significant problem, and that (Correctional Service Canada) has not addressed and actually avoided to address" the issue, Zinger said in an interview this week.
In his 2020 report, Zinger's office found that "sexual violence is a pervasive but underreported problem in federal prisons." Victims rarely report incidents out of fear of retaliation, and criminal charges are laid in only a fraction of assaults reported to police.
The prison watchdog also criticized CSC for a "lack of leadership" on the file. "As one inmate representative put it, 'The culture of silence is deafening in here'," reads his report.
At the time, the Trudeau government promised that a study would be conducted quickly and an interim report would be completed by spring 2021.
One year past that deadline, the government wants researchers to document the prevalence of three specific types of sexual victimization: sexual coercion (sexual assault using tactics such as intimidation or psychological pressure), sexual violence (assault using physical force or on someone incapacitated) and sexual harassment.
"Questions should make the distinction between the type of perpetrator (inmate vs. staff), a tactic used (e.g., physical force vs. verbal pressure/coercion), and sexual act (e.g., intentional sexual touching vs. vaginal or anal penetration). It is also important that the status of the sexual victimization incident in the institution was assessed (e.g., not reported/allegation/investigation)," reads the request for proposals.
Correctional Investigator of Canada, Dr. Ivan Zinger in February 2020. He says the federal government's slow response to his report from that year on sexual violence in prisons is "a little bit disappointing." Photo by Adrian Wyld/The Canadian Press/File
The study will focus not only on incarcerated individuals, but also those on community supervision orders, such as day parole, full parole or statutory release. As of October 2021, the department estimates that represents just over 8,800 people, the vast majority of them men.
Correctional Services Canada referred all questions to Public Safety Canada, who did not respond to repeated emails by deadline.
But Public Safety's new RFP notes that the contract is expected to end by March 2024, meaning the work may take up to three years to complete.
"I find that certainly not timely, and not proportionate to the very troubling findings that my report highlighted back in June 2020," Zinger said.
"This is for me about basic human rights, and if you can prevent people from being harmed, that should be your priority. So, a little bit disappointing there for sure, but I'm glad that they're moving," he added.
Another disappointment for the correctional investigator is that his office was not consulted by CSC or Public Safety Canada before they drafted research methodology and launched their public tender.
That, despite his 2020 report being the first in decades to highlight the severity of the issue. In fact, Zinger said he only found out about the project when National Post contacted him for comment.
"What we did was very innovative. They should have consulted with us even on the solicitation document, because we have built expertise and obviously they're relying on our findings, conclusions, observations and recommendations," Zinger said.
"It's unfortunate that they seem to always fail to properly consult as they move these things forward."
• Email: cnardi@postmedia.com | Twitter: ChrisGNardi
COVID live updates: Quebec won't relax restrictions until hospital situation 'under control,' Dubé says
'Profound sadness' as Quebec singer-songwriter Karim Ouellet dies
What the Puck: Time for Canadiens to clear air surrounding Carey Price