BUG: resample.agg with read-only data
State: closed

- [x] closes #31710
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry


Labels:
name: Bug
name: Resample
description: resample method

Comments:
thanks @jbrockmendel 
Just a heads up I think this introduced some new build warnings. I've had a separate PR to clean those up and error going forward so can fall back to that if required, but if you have time to look in the interim would be appreciated as well

Here is what I see

```sh
pandas/_libs/groupby.c:37458:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:38233:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:39008:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:39781:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:40563:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:41999:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:42820:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:43641:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:44460:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:45288:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/hashtable.c:63216:20: warning: unused function '__pyx_memview_get_object' [-Wunused-function]
  static PyObject *__pyx_memview_get_object(const char *itemp) {
                   ^
pandas/_libs/hashtable.c:63221:12: warning: unused function '__pyx_memview_set_object' [-Wunused-function]
static int __pyx_memview_set_object(const char *itemp, PyObject *obj) {
           ^
pandas/_libs/groupby.c:55168:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:55970:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:56772:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:57568:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:58985:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:59784:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:60583:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
pandas/_libs/groupby.c:61376:30: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
  __pyx_t_3 = ((!((__pyx_t_2 == __pyx_t_1) != 0)) != 0);
                   ~~~~~~~~~ ^  ~~~~~~~~~
```
@WillAyd where does this sit on the annoyance-problem scale?  i.e. is waiting for cython 0.30 a viable option?