# -*- coding: utf-8 -*-

from abc import ABCMeta, abstractmethod

class BasisBase(object):
    name = None
    ndims = -1

    def __init__(self, dims, cfg):
        self._dims = dims
        self._cfg = cfg
        self._order = cfg.getint('mesh-elements', 'order')

        if self.ndims != len(dims):
            raise ValueError('Invalid dimension symbols')

    @property
    def dims(self):
        return self._dims

    @abstractmethod
    def gen_upts(self):
        pass

    @abstractmethod
    def gen_fpts(self):
        pass

    @abstractmethod
    def gen_spts(self):
        pass

    @abstractmethod
    def get_nfpts_for_face(self, face):
        pass

    @abstractmethod
    def get_fpts_for_face(self, face, rtag):
        pass

@@ -84,16 +84,45 @@
 bject):%0A
+    __metaclass__ = ABCMeta%0A%0A
     name
@@ -476,17 +476,17 @@
   def ge
-n
+t
 _upts(se
@@ -534,17 +534,17 @@
   def ge
-n
+t
 _fpts(se
@@ -592,17 +592,17 @@
   def ge
-n
+t
 _spts(se
@@ -657,36 +657,21 @@
 et_nfpts
-_for_face(self, face
+(self
 ):%0A     

Fix a bug in bases.