While working on #25633 I stumbled over the below behaviour:
Here, the vector_space method behaves differently, depending on wether called from an object which is a vector space itself or a finite field.
sage: (GF(2)^2).vector_space()
Vector space of dimension 2 over Finite Field of size 2
sage: GF(2^2).vector_space()
/home/asante/werkstatt/sage/local/var/lib/sage/venv-python3.8/lib/python3.8/site-packages/sage/categories/fields.py:533: DeprecationWarning: The default value for map will be changing to True. To keep the current behavior, explicitly pass map=False.
See https://trac.sagemath.org/28481 for details.
return self.free_module(*args, **kwds)
Vector space of dimension 2 over Finite Field of size 2
sage: (GF(2)^2).vector_space(map=False)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-358adc326579> in <module>
----> 1 (GF(Integer(2))**Integer(2)).vector_space(map=False)
TypeError: vector_space() got an unexpected keyword argument 'map'
sage: GF(2^2).vector_space(map=False)
Vector space of dimension 2 over Finite Field of size 2
Is this on purpose? If so, what is a good way to determine if a function gets as input a vector or a field element?