Skip to content

v0.1.3

Compare
Choose a tag to compare
@ncdhz ncdhz released this 09 Oct 14:58
· 3 commits to main since this release

修改

  1. 版本0.1.0@Inject 的参数可以直接指代类的初始化参数,这种做法限制了版本的迭代,对后期其它参数的引入造成很大的影响。所以在以后的版本中将取消这种做法,改成通过type参数指代。

    from no_config import Inject
    
    @Inject
    class User:
        def __init__(self, username, password):
            pass
    
    @Inject(type=dict(user=User))
    class App:
        def __init__(self, id, user):
            pass
    
    if __name__ == '__main__':
        app = App('app-id', dict(username='username', password='password'))
        print(app.id)
        print(app.user.username)
        print(app.user.password)
  2. Config.initfile_path参数设计时没有考虑到远程配置,此版本改变了一些参数细节,使其能支持更多种初始化方式,详细信息见初始化

  3. 配置文件嵌套可以很清晰的区分开发与生产环境,因此在Config.init中增加了config_path参数,用于指定嵌套配置文件的路径,详细信息见文件嵌套

增加

实际开发中请求接口通常会得到一个字典,此版本引入了参数config_inject可以直接初始化对象,这样能极大程度的减少了字典映射成类的繁琐过程。

from no_config import Inject

@Inject
class User:
    def __init__(self, username, password):
        pass

@Inject(type=dict(user=User))
class App:
    def __init__(self, id, user):
        pass

if __name__ == '__main__':

    config_inject = App(config_inject=dict(
        id='config-inject-app-id',
        user=dict(
            username='config-inject-username',
            password='config-inject-password'
        )
    ))
    print(config_inject.id)
    print(config_inject.user.username)
    print(config_inject.user.password)

为了防止config_inject与类原本参数重复,可以通过@Inject(config_inject='别名')的方式更改。配置注入别名

BUG

no_config 0.1.2@Configtype参数的优先等级较低,从而导致了配置初始化时,没有新建类,只是直接修改了原类中的属性,这与实际情况不符。这一情况在最新版本中已经进行修改。