def __init__(self, A, S) :
        r"""
        INPUT:
            - `A` -- A ring.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_ring import MonoidPowerSeriesRing_generic
            sage: mps = MonoidPowerSeriesRing_generic(QQ, NNMonoid(False))
            sage: mps = MonoidPowerSeriesRing_generic(ZZ, NNMonoid(False))
            sage: mps.base_ring()
            Integer Ring
            sage: (1 / 2) * mps.0
            Monoid power series in Ring of monoid power series over NN
        """
        Algebra.__init__(self, A)        
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)

        self.__monoid_gens = \
          [ self._element_class(self, dict([(s, A.one_element())]),
                                    self.monoid().filter_all() )
            for s in S.gens() ]
    
        from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_functor import MonoidPowerSeriesBaseRingInjection

        self._populate_coercion_lists_(
          coerce_list = [MonoidPowerSeriesBaseRingInjection(self.base_ring(), self)] + \
                        ([S] if isinstance(S, Parent) else []) )
    def __init__(self, A, S) :
        """
        INPUT:
            - `A` -- A module.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
        """       
        Module.__init__(self, MonoidPowerSeriesRing(A.base_ring(), S))
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)
        
        self.__coeff_gens = \
          [ self._element_class(self, dict([(S.zero_element(), a)]),
                                    self.monoid().filter_all() )
            for a in A.gens() ]
    def __init__(self, A, S) :
        r"""
        INPUT:
            - `A` -- A module.
            - `S` -- A monoid as implemented in :class:~`fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids.NNMonoid`.

        TESTS::
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_basicmonoids import *
            sage: from psage.modform.fourier_expansion_framework.monoidpowerseries.monoidpowerseries_module import MonoidPowerSeriesModule_generic
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(QQ,2), NNMonoid(False))
            sage: mps = MonoidPowerSeriesModule_generic(FreeModule(ZZ,2), NNMonoid(False))
            sage: mps.base_ring()
            Ring of monoid power series over NN
            sage: (1 / 2) * mps.0
            Monoid power series in Module of monoid power series over NN
        """
        Module.__init__(self, MonoidPowerSeriesRing(A.base_ring(), S))
        MonoidPowerSeriesAmbient_abstract.__init__(self, A, S)
        
        self.__coeff_gens = \
          [ self._element_class(self, dict([(S.zero_element(), a)]),
                                    self.monoid().filter_all() )
            for a in A.gens() ]