Repository: pandas-dev/pandas

Issue:
DEPR: deprecate legacy offsets
http://pandas.pydata.org/pandas-docs/version/0.16.2/timeseries.html#legacy-aliases

discussed at bit in #7832 

Leave these common aliases.

| Legacy Time Rule | Offset Alias |
| --- | --- |
| min | T |
| ms | L |
| us | U |

Deprecate These

| Legacy Time Rule | Offset Alias |
| --- | --- |
| WEEKDAY | B |
| EOM | BM |
| W@MON | W-MON |
| W@TUE | W-TUE |
| W@WED | W-WED |
| W@THU | W-THU |
| W@FRI | W-FRI |
| W@SAT | W-SAT |
| W@SUN | W-SUN |
| Q@JAN | BQ-JAN |
| Q@FEB | BQ-FEB |
| Q@MAR | BQ-MAR |
| A@JAN | BA-JAN |
| A@FEB | BA-FEB |
| A@MAR | BA-MAR |
| A@APR | BA-APR |
| A@MAY | BA-MAY |
| A@JUN | BA-JUN |
| A@JUL | BA-JUL |
| A@AUG | BA-AUG |
| A@SEP | BA-SEP |
| A@OCT | BA-OCT |
| A@NOV | BA-NOV |
| A@DEC | BA-DEC |



Discussion:

Resolving patch:
diff --git a/pandas/tseries/frequencies.py b/pandas/tseries/frequencies.py
--- a/pandas/tseries/frequencies.py
+++ b/pandas/tseries/frequencies.py
@@ -2,6 +2,7 @@
 from pandas.compat import range, long, zip
 from pandas import compat
 import re
+import warnings
 
 import numpy as np
 
@@ -335,10 +336,8 @@ def get_period_alias(offset_str):
 _rule_aliases = {
     # Legacy rules that will continue to map to their original values
     # essentially for the rest of time
-
     'WEEKDAY': 'B',
     'EOM': 'BM',
-
     'W@MON': 'W-MON',
     'W@TUE': 'W-TUE',
     'W@WED': 'W-WED',
@@ -346,18 +345,9 @@ def get_period_alias(offset_str):
     'W@FRI': 'W-FRI',
     'W@SAT': 'W-SAT',
     'W@SUN': 'W-SUN',
-    'W': 'W-SUN',
-
     'Q@JAN': 'BQ-JAN',
     'Q@FEB': 'BQ-FEB',
     'Q@MAR': 'BQ-MAR',
-    'Q': 'Q-DEC',
-
-    'A': 'A-DEC',  # YearEnd(month=12),
-    'AS': 'AS-JAN',  # YearBegin(month=1),
-    'BA': 'BA-DEC',  # BYearEnd(month=12),
-    'BAS': 'BAS-JAN',  # BYearBegin(month=1),
-
     'A@JAN': 'BA-JAN',
     'A@FEB': 'BA-FEB',
     'A@MAR': 'BA-MAR',
@@ -370,8 +360,17 @@ def get_period_alias(offset_str):
     'A@OCT': 'BA-OCT',
     'A@NOV': 'BA-NOV',
     'A@DEC': 'BA-DEC',
+}
+
+_lite_rule_alias = {
+    'W': 'W-SUN',
+    'Q': 'Q-DEC',
+
+    'A': 'A-DEC',  # YearEnd(month=12),
+    'AS': 'AS-JAN',  # YearBegin(month=1),
+    'BA': 'BA-DEC',  # BYearEnd(month=12),
+    'BAS': 'BAS-JAN',  # BYearBegin(month=1),
 
-    # lite aliases
     'Min': 'T',
     'min': 'T',
     'ms': 'L',
@@ -386,6 +385,7 @@ def get_period_alias(offset_str):
 
 # Note that _rule_aliases is not 1:1 (d[BA]==d[A@DEC]), and so traversal
 # order matters when constructing an inverse. we pick one. #2331
+# Used in get_legacy_offset_name
 _legacy_reverse_map = dict((v, k) for k, v in
                            reversed(sorted(compat.iteritems(_rule_aliases))))
 
@@ -501,6 +501,9 @@ def get_base_alias(freqstr):
 _dont_uppercase = set(('MS', 'ms'))
 
 
+_LEGACY_FREQ_WARNING = 'Freq "{0}" is deprecated, use "{1}" as alternative.'
+
+
 def get_offset(name):
     """
     Return DateOffset object associated with rule name
@@ -513,12 +516,26 @@ def get_offset(name):
         name = name.upper()
 
         if name in _rule_aliases:
-            name = _rule_aliases[name]
+            new = _rule_aliases[name]
+            warnings.warn(_LEGACY_FREQ_WARNING.format(name, new),
+                          FutureWarning)
+            name = new
         elif name.lower() in _rule_aliases:
-            name = _rule_aliases[name.lower()]
+            new = _rule_aliases[name.lower()]
+            warnings.warn(_LEGACY_FREQ_WARNING.format(name, new),
+                          FutureWarning)
+            name = new
+
+        name = _lite_rule_alias.get(name, name)
+        name = _lite_rule_alias.get(name.lower(), name)
+
     else:
         if name in _rule_aliases:
-            name = _rule_aliases[name]
+            new = _rule_aliases[name]
+            warnings.warn(_LEGACY_FREQ_WARNING.format(name, new),
+                          FutureWarning)
+            name = new
+        name = _lite_rule_alias.get(name, name)
 
     if name not in _offset_map:
         try:
@@ -561,6 +578,9 @@ def get_legacy_offset_name(offset):
     """
     Return the pre pandas 0.8.0 name for the date offset
     """
+
+    # This only used in test_timeseries_legacy.py
+
     name = offset.name
     return _legacy_reverse_map.get(name, name)
 
@@ -754,10 +774,21 @@ def _period_alias_dictionary():
 
 def _period_str_to_code(freqstr):
     # hack
-    freqstr = _rule_aliases.get(freqstr, freqstr)
+    if freqstr in _rule_aliases:
+        new = _rule_aliases[freqstr]
+        warnings.warn(_LEGACY_FREQ_WARNING.format(freqstr, new),
+                      FutureWarning)
+        freqstr = new
+    freqstr = _lite_rule_alias.get(freqstr, freqstr)
 
     if freqstr not in _dont_uppercase:
-        freqstr = _rule_aliases.get(freqstr.lower(), freqstr)
+        lower = freqstr.lower()
+        if lower in _rule_aliases:
+            new = _rule_aliases[lower]
+            warnings.warn(_LEGACY_FREQ_WARNING.format(lower, new),
+                          FutureWarning)
+            freqstr = new
+        freqstr = _lite_rule_alias.get(lower, freqstr)
 
     try:
         if freqstr not in _dont_uppercase:
@@ -766,6 +797,8 @@ def _period_str_to_code(freqstr):
     except KeyError:
         try:
             alias = _period_alias_dict[freqstr]
+            warnings.warn(_LEGACY_FREQ_WARNING.format(freqstr, alias),
+                          FutureWarning)
         except KeyError:
             raise ValueError("Unknown freqstr: %s" % freqstr)
 
diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py
--- a/pandas/tseries/offsets.py
+++ b/pandas/tseries/offsets.py
@@ -2650,14 +2650,13 @@ def generate_range(start=None, end=None, periods=None,
 
 prefix_mapping['N'] = Nano
 
-
 def _make_offset(key):
     """Gets offset based on key. KeyError if prefix is bad, ValueError if
     suffix is bad. All handled by `get_offset` in tseries/frequencies. Not
     public."""
     if key is None:
         return None
-    split = key.replace('@', '-').split('-')
+    split = key.split('-')
     klass = prefix_mapping[split[0]]
     # handles case where there's no suffix (and will TypeError if too many '-')
     obj = klass._from_name(*split[1:])


Test patch:
diff --git a/pandas/tseries/tests/test_frequencies.py b/pandas/tseries/tests/test_frequencies.py
--- a/pandas/tseries/tests/test_frequencies.py
+++ b/pandas/tseries/tests/test_frequencies.py
@@ -529,9 +529,13 @@ def test_series(self):
         self.assertRaises(ValueError, lambda : frequencies.infer_freq(Series(['foo','bar'])))
 
         # cannot infer on PeriodIndex
-        for freq in [None, 'L', 'Y']:
+        for freq in [None, 'L']:
             s = Series(period_range('2013',periods=10,freq=freq))
             self.assertRaises(TypeError, lambda : frequencies.infer_freq(s))
+        for freq in ['Y']:
+            with tm.assert_produces_warning(FutureWarning):
+                s = Series(period_range('2013',periods=10,freq=freq))
+            self.assertRaises(TypeError, lambda : frequencies.infer_freq(s))
 
         # DateTimeIndex
         for freq in ['M', 'L', 'S']:
@@ -543,6 +547,19 @@ def test_series(self):
         inferred = frequencies.infer_freq(s)
         self.assertEqual(inferred,'D')
 
+    def test_legacy_offset_warnings(self):
+        for k, v in compat.iteritems(frequencies._rule_aliases):
+            with tm.assert_produces_warning(FutureWarning):
+                result = frequencies.get_offset(k)
+            exp = frequencies.get_offset(v)
+            self.assertEqual(result, exp)
+
+            with tm.assert_produces_warning(FutureWarning):
+                idx = date_range('2011-01-01', periods=5, freq=k)
+            exp = date_range('2011-01-01', periods=5, freq=v)
+            self.assert_index_equal(idx, exp)
+
+
 MONTHS = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP',
           'OCT', 'NOV', 'DEC']
 
diff --git a/pandas/tseries/tests/test_offsets.py b/pandas/tseries/tests/test_offsets.py
--- a/pandas/tseries/tests/test_offsets.py
+++ b/pandas/tseries/tests/test_offsets.py
@@ -3615,7 +3615,6 @@ def test_get_offset():
              ('Bm', BMonthEnd()), ('W-MON', Week(weekday=0)),
              ('W-TUE', Week(weekday=1)), ('W-WED', Week(weekday=2)),
              ('W-THU', Week(weekday=3)), ('W-FRI', Week(weekday=4)),
-             ('w@Sat', Week(weekday=5)),
              ("RE-N-DEC-MON", makeFY5253NearestEndMonth(weekday=0, startingMonth=12)),
              ("RE-L-DEC-TUE", makeFY5253LastOfMonth(weekday=1, startingMonth=12)),
              ("REQ-L-MAR-TUE-4", makeFY5253LastOfMonthQuarter(weekday=1, startingMonth=3, qtr_with_extra_week=4)),
@@ -3628,6 +3627,13 @@ def test_get_offset():
         assert offset == expected, ("Expected %r to yield %r (actual: %r)" %
                                     (name, expected, offset))
 
+def test_get_offset_legacy():
+    pairs = [('w@Sat', Week(weekday=5))]
+    for name, expected in pairs:
+        with tm.assert_produces_warning(FutureWarning):
+            offset = get_offset(name)
+        assert offset == expected, ("Expected %r to yield %r (actual: %r)" %
+                                    (name, expected, offset))
 
 class TestParseTimeString(tm.TestCase):
 
@@ -3663,11 +3669,18 @@ def test_get_standard_freq():
     assert fstr == get_standard_freq('w')
     assert fstr == get_standard_freq('1w')
     assert fstr == get_standard_freq(('W', 1))
-    assert fstr == get_standard_freq('WeEk')
+
+    with tm.assert_produces_warning(FutureWarning):
+        result = get_standard_freq('WeEk')
+    assert fstr == result
 
     fstr = get_standard_freq('5Q')
     assert fstr == get_standard_freq('5q')
-    assert fstr == get_standard_freq('5QuarTer')
+
+    with tm.assert_produces_warning(FutureWarning):
+        result = get_standard_freq('5QuarTer')
+    assert fstr == result
+
     assert fstr == get_standard_freq(('q', 5))
 
 
diff --git a/pandas/tseries/tests/test_period.py b/pandas/tseries/tests/test_period.py
--- a/pandas/tseries/tests/test_period.py
+++ b/pandas/tseries/tests/test_period.py
@@ -437,7 +437,7 @@ def test_properties_monthly(self):
 
     def test_properties_weekly(self):
         # Test properties on Periods with daily frequency.
-        w_date = Period(freq='WK', year=2007, month=1, day=7)
+        w_date = Period(freq='W', year=2007, month=1, day=7)
         #
         assert_equal(w_date.year, 2007)
         assert_equal(w_date.quarter, 1)
@@ -445,7 +445,22 @@ def test_properties_weekly(self):
         assert_equal(w_date.week, 1)
         assert_equal((w_date - 1).week, 52)
         assert_equal(w_date.days_in_month, 31)
-        assert_equal(Period(freq='WK', year=2012, month=2, day=1).days_in_month, 29)
+        assert_equal(Period(freq='W', year=2012, month=2, day=1).days_in_month, 29)
+
+    def test_properties_weekly_legacy(self):
+        # Test properties on Periods with daily frequency.
+        with tm.assert_produces_warning(FutureWarning):
+            w_date = Period(freq='WK', year=2007, month=1, day=7)
+        #
+        assert_equal(w_date.year, 2007)
+        assert_equal(w_date.quarter, 1)
+        assert_equal(w_date.month, 1)
+        assert_equal(w_date.week, 1)
+        assert_equal((w_date - 1).week, 52)
+        assert_equal(w_date.days_in_month, 31)
+        with tm.assert_produces_warning(FutureWarning):
+            exp = Period(freq='WK', year=2012, month=2, day=1)
+        assert_equal(exp.days_in_month, 29)
 
     def test_properties_daily(self):
         # Test properties on Periods with daily frequency.
@@ -613,8 +628,8 @@ def test_conv_annual(self):
         ival_A_to_Q_end = Period(freq='Q', year=2007, quarter=4)
         ival_A_to_M_start = Period(freq='M', year=2007, month=1)
         ival_A_to_M_end = Period(freq='M', year=2007, month=12)
-        ival_A_to_W_start = Period(freq='WK', year=2007, month=1, day=1)
-        ival_A_to_W_end = Period(freq='WK', year=2007, month=12, day=31)
+        ival_A_to_W_start = Period(freq='W', year=2007, month=1, day=1)
+        ival_A_to_W_end = Period(freq='W', year=2007, month=12, day=31)
         ival_A_to_B_start = Period(freq='B', year=2007, month=1, day=1)
         ival_A_to_B_end = Period(freq='B', year=2007, month=12, day=31)
         ival_A_to_D_start = Period(freq='D', year=2007, month=1, day=1)
@@ -643,8 +658,8 @@ def test_conv_annual(self):
         assert_equal(ival_A.asfreq('Q', 'e'), ival_A_to_Q_end)
         assert_equal(ival_A.asfreq('M', 's'), ival_A_to_M_start)
         assert_equal(ival_A.asfreq('M', 'E'), ival_A_to_M_end)
-        assert_equal(ival_A.asfreq('WK', 'S'), ival_A_to_W_start)
-        assert_equal(ival_A.asfreq('WK', 'E'), ival_A_to_W_end)
+        assert_equal(ival_A.asfreq('W', 'S'), ival_A_to_W_start)
+        assert_equal(ival_A.asfreq('W', 'E'), ival_A_to_W_end)
         assert_equal(ival_A.asfreq('B', 'S'), ival_A_to_B_start)
         assert_equal(ival_A.asfreq('B', 'E'), ival_A_to_B_end)
         assert_equal(ival_A.asfreq('D', 'S'), ival_A_to_D_start)
@@ -681,8 +696,8 @@ def test_conv_quarterly(self):
         ival_Q_to_A = Period(freq='A', year=2007)
         ival_Q_to_M_start = Period(freq='M', year=2007, month=1)
         ival_Q_to_M_end = Period(freq='M', year=2007, month=3)
-        ival_Q_to_W_start = Period(freq='WK', year=2007, month=1, day=1)
-        ival_Q_to_W_end = Period(freq='WK', year=2007, month=3, day=31)
+        ival_Q_to_W_start = Period(freq='W', year=2007, month=1, day=1)
+        ival_Q_to_W_end = Period(freq='W', year=2007, month=3, day=31)
         ival_Q_to_B_start = Period(freq='B', year=2007, month=1, day=1)
         ival_Q_to_B_end = Period(freq='B', year=2007, month=3, day=30)
         ival_Q_to_D_start = Period(freq='D', year=2007, month=1, day=1)
@@ -711,8 +726,8 @@ def test_conv_quarterly(self):
 
         assert_equal(ival_Q.asfreq('M', 'S'), ival_Q_to_M_start)
         assert_equal(ival_Q.asfreq('M', 'E'), ival_Q_to_M_end)
-        assert_equal(ival_Q.asfreq('WK', 'S'), ival_Q_to_W_start)
-        assert_equal(ival_Q.asfreq('WK', 'E'), ival_Q_to_W_end)
+        assert_equal(ival_Q.asfreq('W', 'S'), ival_Q_to_W_start)
+        assert_equal(ival_Q.asfreq('W', 'E'), ival_Q_to_W_end)
         assert_equal(ival_Q.asfreq('B', 'S'), ival_Q_to_B_start)
         assert_equal(ival_Q.asfreq('B', 'E'), ival_Q_to_B_end)
         assert_equal(ival_Q.asfreq('D', 'S'), ival_Q_to_D_start)
@@ -739,8 +754,8 @@ def test_conv_monthly(self):
         ival_M_end_of_quarter = Period(freq='M', year=2007, month=3)
         ival_M_to_A = Period(freq='A', year=2007)
         ival_M_to_Q = Period(freq='Q', year=2007, quarter=1)
-        ival_M_to_W_start = Period(freq='WK', year=2007, month=1, day=1)
-        ival_M_to_W_end = Period(freq='WK', year=2007, month=1, day=31)
+        ival_M_to_W_start = Period(freq='W', year=2007, month=1, day=1)
+        ival_M_to_W_end = Period(freq='W', year=2007, month=1, day=31)
         ival_M_to_B_start = Period(freq='B', year=2007, month=1, day=1)
         ival_M_to_B_end = Period(freq='B', year=2007, month=1, day=31)
         ival_M_to_D_start = Period(freq='D', year=2007, month=1, day=1)
@@ -763,8 +778,8 @@ def test_conv_monthly(self):
         assert_equal(ival_M.asfreq('Q'), ival_M_to_Q)
         assert_equal(ival_M_end_of_quarter.asfreq('Q'), ival_M_to_Q)
 
-        assert_equal(ival_M.asfreq('WK', 'S'), ival_M_to_W_start)
-        assert_equal(ival_M.asfreq('WK', 'E'), ival_M_to_W_end)
+        assert_equal(ival_M.asfreq('W', 'S'), ival_M_to_W_start)
+        assert_equal(ival_M.asfreq('W', 'E'), ival_M_to_W_end)
         assert_equal(ival_M.asfreq('B', 'S'), ival_M_to_B_start)
         assert_equal(ival_M.asfreq('B', 'E'), ival_M_to_B_end)
         assert_equal(ival_M.asfreq('D', 'S'), ival_M_to_D_start)
@@ -781,15 +796,15 @@ def test_conv_monthly(self):
     def test_conv_weekly(self):
         # frequency conversion tests: from Weekly Frequency
 
-        ival_W = Period(freq='WK', year=2007, month=1, day=1)
+        ival_W = Period(freq='W', year=2007, month=1, day=1)
 
-        ival_WSUN = Period(freq='WK', year=2007, month=1, day=7)
-        ival_WSAT = Period(freq='WK-SAT', year=2007, month=1, day=6)
-        ival_WFRI = Period(freq='WK-FRI', year=2007, month=1, day=5)
-        ival_WTHU = Period(freq='WK-THU', year=2007, month=1, day=4)
-        ival_WWED = Period(freq='WK-WED', year=2007, month=1, day=3)
-        ival_WTUE = Period(freq='WK-TUE', year=2007, month=1, day=2)
-        ival_WMON = Period(freq='WK-MON', year=2007, month=1, day=1)
+        ival_WSUN = Period(freq='W', year=2007, month=1, day=7)
+        ival_WSAT = Period(freq='W-SAT', year=2007, month=1, day=6)
+        ival_WFRI = Period(freq='W-FRI', year=2007, month=1, day=5)
+        ival_WTHU = Period(freq='W-THU', year=2007, month=1, day=4)
+        ival_WWED = Period(freq='W-WED', year=2007, month=1, day=3)
+        ival_WTUE = Period(freq='W-TUE', year=2007, month=1, day=2)
+        ival_WMON = Period(freq='W-MON', year=2007, month=1, day=1)
 
         ival_WSUN_to_D_start = Period(freq='D', year=2007, month=1, day=1)
         ival_WSUN_to_D_end = Period(freq='D', year=2007, month=1, day=7)
@@ -806,9 +821,9 @@ def test_conv_weekly(self):
         ival_WMON_to_D_start = Period(freq='D', year=2006, month=12, day=26)
         ival_WMON_to_D_end = Period(freq='D', year=2007, month=1, day=1)
 
-        ival_W_end_of_year = Period(freq='WK', year=2007, month=12, day=31)
-        ival_W_end_of_quarter = Period(freq='WK', year=2007, month=3, day=31)
-        ival_W_end_of_month = Period(freq='WK', year=2007, month=1, day=31)
+        ival_W_end_of_year = Period(freq='W', year=2007, month=12, day=31)
+        ival_W_end_of_quarter = Period(freq='W', year=2007, month=3, day=31)
+        ival_W_end_of_month = Period(freq='W', year=2007, month=1, day=31)
         ival_W_to_A = Period(freq='A', year=2007)
         ival_W_to_Q = Period(freq='Q', year=2007, quarter=1)
         ival_W_to_M = Period(freq='M', year=2007, month=1)
@@ -885,7 +900,128 @@ def test_conv_weekly(self):
         assert_equal(ival_W.asfreq('S', 'S'), ival_W_to_S_start)
         assert_equal(ival_W.asfreq('S', 'E'), ival_W_to_S_end)
 
-        assert_equal(ival_W.asfreq('WK'), ival_W)
+        assert_equal(ival_W.asfreq('W'), ival_W)
+
+    def test_conv_weekly_legacy(self):
+        # frequency conversion tests: from Weekly Frequency
+
+        with tm.assert_produces_warning(FutureWarning):
+            ival_W = Period(freq='WK', year=2007, month=1, day=1)
+
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WSUN = Period(freq='WK', year=2007, month=1, day=7)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WSAT = Period(freq='WK-SAT', year=2007, month=1, day=6)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WFRI = Period(freq='WK-FRI', year=2007, month=1, day=5)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WTHU = Period(freq='WK-THU', year=2007, month=1, day=4)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WWED = Period(freq='WK-WED', year=2007, month=1, day=3)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WTUE = Period(freq='WK-TUE', year=2007, month=1, day=2)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_WMON = Period(freq='WK-MON', year=2007, month=1, day=1)
+
+        ival_WSUN_to_D_start = Period(freq='D', year=2007, month=1, day=1)
+        ival_WSUN_to_D_end = Period(freq='D', year=2007, month=1, day=7)
+        ival_WSAT_to_D_start = Period(freq='D', year=2006, month=12, day=31)
+        ival_WSAT_to_D_end = Period(freq='D', year=2007, month=1, day=6)
+        ival_WFRI_to_D_start = Period(freq='D', year=2006, month=12, day=30)
+        ival_WFRI_to_D_end = Period(freq='D', year=2007, month=1, day=5)
+        ival_WTHU_to_D_start = Period(freq='D', year=2006, month=12, day=29)
+        ival_WTHU_to_D_end = Period(freq='D', year=2007, month=1, day=4)
+        ival_WWED_to_D_start = Period(freq='D', year=2006, month=12, day=28)
+        ival_WWED_to_D_end = Period(freq='D', year=2007, month=1, day=3)
+        ival_WTUE_to_D_start = Period(freq='D', year=2006, month=12, day=27)
+        ival_WTUE_to_D_end = Period(freq='D', year=2007, month=1, day=2)
+        ival_WMON_to_D_start = Period(freq='D', year=2006, month=12, day=26)
+        ival_WMON_to_D_end = Period(freq='D', year=2007, month=1, day=1)
+
+        with tm.assert_produces_warning(FutureWarning):
+            ival_W_end_of_year = Period(freq='WK', year=2007, month=12, day=31)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_W_end_of_quarter = Period(freq='WK', year=2007, month=3, day=31)
+        with tm.assert_produces_warning(FutureWarning):
+            ival_W_end_of_month = Period(freq='WK', year=2007, month=1, day=31)
+        ival_W_to_A = Period(freq='A', year=2007)
+        ival_W_to_Q = Period(freq='Q', year=2007, quarter=1)
+        ival_W_to_M = Period(freq='M', year=2007, month=1)
+
+        if Period(freq='D', year=2007, month=12, day=31).weekday == 6:
+            ival_W_to_A_end_of_year = Period(freq='A', year=2007)
+        else:
+            ival_W_to_A_end_of_year = Period(freq='A', year=2008)
+
+        if Period(freq='D', year=2007, month=3, day=31).weekday == 6:
+            ival_W_to_Q_end_of_quarter = Period(freq='Q', year=2007,
+                                                quarter=1)
+        else:
+            ival_W_to_Q_end_of_quarter = Period(freq='Q', year=2007,
+                                                quarter=2)
+
+        if Period(freq='D', year=2007, month=1, day=31).weekday == 6:
+            ival_W_to_M_end_of_month = Period(freq='M', year=2007, month=1)
+        else:
+            ival_W_to_M_end_of_month = Period(freq='M', year=2007, month=2)
+
+        ival_W_to_B_start = Period(freq='B', year=2007, month=1, day=1)
+        ival_W_to_B_end = Period(freq='B', year=2007, month=1, day=5)
+        ival_W_to_D_start = Period(freq='D', year=2007, month=1, day=1)
+        ival_W_to_D_end = Period(freq='D', year=2007, month=1, day=7)
+        ival_W_to_H_start = Period(freq='H', year=2007, month=1, day=1,
+                                   hour=0)
+        ival_W_to_H_end = Period(freq='H', year=2007, month=1, day=7,
+                                 hour=23)
+        ival_W_to_T_start = Period(freq='Min', year=2007, month=1, day=1,
+                                   hour=0, minute=0)
+        ival_W_to_T_end = Period(freq='Min', year=2007, month=1, day=7,
+                                 hour=23, minute=59)
+        ival_W_to_S_start = Period(freq='S', year=2007, month=1, day=1,
+                                   hour=0, minute=0, second=0)
+        ival_W_to_S_end = Period(freq='S', year=2007, month=1, day=7,
+                                 hour=23, minute=59, second=59)
+
+        assert_equal(ival_W.asfreq('A'), ival_W_to_A)
+        assert_equal(ival_W_end_of_year.asfreq('A'),
+                     ival_W_to_A_end_of_year)
+        assert_equal(ival_W.asfreq('Q'), ival_W_to_Q)
+        assert_equal(ival_W_end_of_quarter.asfreq('Q'),
+                     ival_W_to_Q_end_of_quarter)
+        assert_equal(ival_W.asfreq('M'), ival_W_to_M)
+        assert_equal(ival_W_end_of_month.asfreq('M'),
+                     ival_W_to_M_end_of_month)
+
+        assert_equal(ival_W.asfreq('B', 'S'), ival_W_to_B_start)
+        assert_equal(ival_W.asfreq('B', 'E'), ival_W_to_B_end)
+
+        assert_equal(ival_W.asfreq('D', 'S'), ival_W_to_D_start)
+        assert_equal(ival_W.asfreq('D', 'E'), ival_W_to_D_end)
+
+        assert_equal(ival_WSUN.asfreq('D', 'S'), ival_WSUN_to_D_start)
+        assert_equal(ival_WSUN.asfreq('D', 'E'), ival_WSUN_to_D_end)
+        assert_equal(ival_WSAT.asfreq('D', 'S'), ival_WSAT_to_D_start)
+        assert_equal(ival_WSAT.asfreq('D', 'E'), ival_WSAT_to_D_end)
+        assert_equal(ival_WFRI.asfreq('D', 'S'), ival_WFRI_to_D_start)
+        assert_equal(ival_WFRI.asfreq('D', 'E'), ival_WFRI_to_D_end)
+        assert_equal(ival_WTHU.asfreq('D', 'S'), ival_WTHU_to_D_start)
+        assert_equal(ival_WTHU.asfreq('D', 'E'), ival_WTHU_to_D_end)
+        assert_equal(ival_WWED.asfreq('D', 'S'), ival_WWED_to_D_start)
+        assert_equal(ival_WWED.asfreq('D', 'E'), ival_WWED_to_D_end)
+        assert_equal(ival_WTUE.asfreq('D', 'S'), ival_WTUE_to_D_start)
+        assert_equal(ival_WTUE.asfreq('D', 'E'), ival_WTUE_to_D_end)
+        assert_equal(ival_WMON.asfreq('D', 'S'), ival_WMON_to_D_start)
+        assert_equal(ival_WMON.asfreq('D', 'E'), ival_WMON_to_D_end)
+
+        assert_equal(ival_W.asfreq('H', 'S'), ival_W_to_H_start)
+        assert_equal(ival_W.asfreq('H', 'E'), ival_W_to_H_end)
+        assert_equal(ival_W.asfreq('Min', 'S'), ival_W_to_T_start)
+        assert_equal(ival_W.asfreq('Min', 'E'), ival_W_to_T_end)
+        assert_equal(ival_W.asfreq('S', 'S'), ival_W_to_S_start)
+        assert_equal(ival_W.asfreq('S', 'E'), ival_W_to_S_end)
+
+        with tm.assert_produces_warning(FutureWarning):
+            assert_equal(ival_W.asfreq('WK'), ival_W)
 
     def test_conv_business(self):
         # frequency conversion tests: from Business Frequency"
@@ -899,7 +1035,7 @@ def test_conv_business(self):
         ival_B_to_A = Period(freq='A', year=2007)
         ival_B_to_Q = Period(freq='Q', year=2007, quarter=1)
         ival_B_to_M = Period(freq='M', year=2007, month=1)
-        ival_B_to_W = Period(freq='WK', year=2007, month=1, day=7)
+        ival_B_to_W = Period(freq='W', year=2007, month=1, day=7)
         ival_B_to_D = Period(freq='D', year=2007, month=1, day=1)
         ival_B_to_H_start = Period(freq='H', year=2007, month=1, day=1,
                                    hour=0)
@@ -920,8 +1056,8 @@ def test_conv_business(self):
         assert_equal(ival_B_end_of_quarter.asfreq('Q'), ival_B_to_Q)
         assert_equal(ival_B.asfreq('M'), ival_B_to_M)
         assert_equal(ival_B_end_of_month.asfreq('M'), ival_B_to_M)
-        assert_equal(ival_B.asfreq('WK'), ival_B_to_W)
-        assert_equal(ival_B_end_of_week.asfreq('WK'), ival_B_to_W)
+        assert_equal(ival_B.asfreq('W'), ival_B_to_W)
+        assert_equal(ival_B_end_of_week.asfreq('W'), ival_B_to_W)
 
         assert_equal(ival_B.asfreq('D'), ival_B_to_D)
 
@@ -962,7 +1098,7 @@ def test_conv_daily(self):
         ival_D_to_QEDEC = Period(freq="Q-DEC", year=2007, quarter=1)
 
         ival_D_to_M = Period(freq='M', year=2007, month=1)
-        ival_D_to_W = Period(freq='WK', year=2007, month=1, day=7)
+        ival_D_to_W = Period(freq='W', year=2007, month=1, day=7)
 
         ival_D_to_H_start = Period(freq='H', year=2007, month=1, day=1,
                                    hour=0)
@@ -993,8 +1129,8 @@ def test_conv_daily(self):
         assert_equal(ival_D.asfreq("Q-DEC"), ival_D_to_QEDEC)
         assert_equal(ival_D.asfreq('M'), ival_D_to_M)
         assert_equal(ival_D_end_of_month.asfreq('M'), ival_D_to_M)
-        assert_equal(ival_D.asfreq('WK'), ival_D_to_W)
-        assert_equal(ival_D_end_of_week.asfreq('WK'), ival_D_to_W)
+        assert_equal(ival_D.asfreq('W'), ival_D_to_W)
+        assert_equal(ival_D_end_of_week.asfreq('W'), ival_D_to_W)
 
         assert_equal(ival_D_friday.asfreq('B'), ival_B_friday)
         assert_equal(ival_D_saturday.asfreq('B', 'S'), ival_B_friday)
@@ -1031,7 +1167,7 @@ def test_conv_hourly(self):
         ival_H_to_A = Period(freq='A', year=2007)
         ival_H_to_Q = Period(freq='Q', year=2007, quarter=1)
         ival_H_to_M = Period(freq='M', year=2007, month=1)
-        ival_H_to_W = Period(freq='WK', year=2007, month=1, day=7)
+        ival_H_to_W = Period(freq='W', year=2007, month=1, day=7)
         ival_H_to_D = Period(freq='D', year=2007, month=1, day=1)
         ival_H_to_B = Period(freq='B', year=2007, month=1, day=1)
 
@@ -1050,8 +1186,8 @@ def test_conv_hourly(self):
         assert_equal(ival_H_end_of_quarter.asfreq('Q'), ival_H_to_Q)
         assert_equal(ival_H.asfreq('M'), ival_H_to_M)
         assert_equal(ival_H_end_of_month.asfreq('M'), ival_H_to_M)
-        assert_equal(ival_H.asfreq('WK'), ival_H_to_W)
-        assert_equal(ival_H_end_of_week.asfreq('WK'), ival_H_to_W)
+        assert_equal(ival_H.asfreq('W'), ival_H_to_W)
+        assert_equal(ival_H_end_of_week.asfreq('W'), ival_H_to_W)
         assert_equal(ival_H.asfreq('D'), ival_H_to_D)
         assert_equal(ival_H_end_of_day.asfreq('D'), ival_H_to_D)
         assert_equal(ival_H.asfreq('B'), ival_H_to_B)
@@ -1087,7 +1223,7 @@ def test_conv_minutely(self):
         ival_T_to_A = Period(freq='A', year=2007)
         ival_T_to_Q = Period(freq='Q', year=2007, quarter=1)
         ival_T_to_M = Period(freq='M', year=2007, month=1)
-        ival_T_to_W = Period(freq='WK', year=2007, month=1, day=7)
+        ival_T_to_W = Period(freq='W', year=2007, month=1, day=7)
         ival_T_to_D = Period(freq='D', year=2007, month=1, day=1)
         ival_T_to_B = Period(freq='B', year=2007, month=1, day=1)
         ival_T_to_H = Period(freq='H', year=2007, month=1, day=1, hour=0)
@@ -1103,8 +1239,8 @@ def test_conv_minutely(self):
         assert_equal(ival_T_end_of_quarter.asfreq('Q'), ival_T_to_Q)
         assert_equal(ival_T.asfreq('M'), ival_T_to_M)
         assert_equal(ival_T_end_of_month.asfreq('M'), ival_T_to_M)
-        assert_equal(ival_T.asfreq('WK'), ival_T_to_W)
-        assert_equal(ival_T_end_of_week.asfreq('WK'), ival_T_to_W)
+        assert_equal(ival_T.asfreq('W'), ival_T_to_W)
+        assert_equal(ival_T_end_of_week.asfreq('W'), ival_T_to_W)
         assert_equal(ival_T.asfreq('D'), ival_T_to_D)
         assert_equal(ival_T_end_of_day.asfreq('D'), ival_T_to_D)
         assert_equal(ival_T.asfreq('B'), ival_T_to_B)
@@ -1142,7 +1278,7 @@ def test_conv_secondly(self):
         ival_S_to_A = Period(freq='A', year=2007)
         ival_S_to_Q = Period(freq='Q', year=2007, quarter=1)
         ival_S_to_M = Period(freq='M', year=2007, month=1)
-        ival_S_to_W = Period(freq='WK', year=2007, month=1, day=7)
+        ival_S_to_W = Period(freq='W', year=2007, month=1, day=7)
         ival_S_to_D = Period(freq='D', year=2007, month=1, day=1)
         ival_S_to_B = Period(freq='B', year=2007, month=1, day=1)
         ival_S_to_H = Period(freq='H', year=2007, month=1, day=1,
@@ -1156,8 +1292,8 @@ def test_conv_secondly(self):
         assert_equal(ival_S_end_of_quarter.asfreq('Q'), ival_S_to_Q)
         assert_equal(ival_S.asfreq('M'), ival_S_to_M)
         assert_equal(ival_S_end_of_month.asfreq('M'), ival_S_to_M)
-        assert_equal(ival_S.asfreq('WK'), ival_S_to_W)
-        assert_equal(ival_S_end_of_week.asfreq('WK'), ival_S_to_W)
+        assert_equal(ival_S.asfreq('W'), ival_S_to_W)
+        assert_equal(ival_S_end_of_week.asfreq('W'), ival_S_to_W)
         assert_equal(ival_S.asfreq('D'), ival_S_to_D)
         assert_equal(ival_S_end_of_day.asfreq('D'), ival_S_to_D)
         assert_equal(ival_S.asfreq('B'), ival_S_to_B)
@@ -2171,12 +2307,17 @@ def test_to_period_annualish(self):
             self.assertEqual(prng.freq, 'A-DEC')
 
     def test_to_period_monthish(self):
-        offsets = ['MS', 'EOM', 'BM']
+        offsets = ['MS', 'BM']
         for off in offsets:
             rng = date_range('01-Jan-2012', periods=8, freq=off)
             prng = rng.to_period()
             self.assertEqual(prng.freq, 'M')
 
+        with tm.assert_produces_warning(FutureWarning):
+            rng = date_range('01-Jan-2012', periods=8, freq='EOM')
+        prng = rng.to_period()
+        self.assertEqual(prng.freq, 'M')
+
     def test_no_multiples(self):
         self.assertRaises(ValueError, period_range, '1989Q3', periods=10,
                           freq='2Q')
diff --git a/pandas/tseries/tests/test_plotting.py b/pandas/tseries/tests/test_plotting.py
--- a/pandas/tseries/tests/test_plotting.py
+++ b/pandas/tseries/tests/test_plotting.py
@@ -22,7 +22,7 @@
 @tm.mplskip
 class TestTSPlot(tm.TestCase):
     def setUp(self):
-        freq = ['S', 'T', 'H', 'D', 'W', 'M', 'Q', 'Y']
+        freq = ['S', 'T', 'H', 'D', 'W', 'M', 'Q', 'A']
         idx = [period_range('12/31/1999', freq=x, periods=100) for x in freq]
         self.period_ser = [Series(np.random.randn(len(x)), x) for x in idx]
         self.period_df = [DataFrame(np.random.randn(len(x), 3), index=x,