抽象基类,用于生成类似h5py的对象。

h5py-like的Python项目详细描述


h5py_类

在Python 3.7 +中的一些类似于H5Py的API的基类和助手函数。

用例

有一个库可以读取/写入块数字数组的连续区域, 想让它有点像h5py。

例如 zarrz5xarraypyn5

不支持

  • 空数据空间和标量数据空间
  • 逻辑标引< /LI>
  • 广播(标量除外)
  • 尺寸刻度

与h5py的区别

  • 访问模式被转换为枚举,尽管它们在很大程度上与str表单兼容
    • "x"优先于"w-"进行独占创建

用法

请参阅the tests package中的普通hdf5实现。

创建自己的DatasetGroupFileAttributeManager类, 实现他们的抽象方法。 因为^ {CD6}}s应该子类^ ^ {CD5}},这里的基类是一个MIXIN。 它应该出现在mro中的Group之前。

包含写操作的方法应该被赋予@mutation装饰符。 这将检查它们的mode属性,如果它是只读的,则会引发错误。

fromh5py_likeimportDatasetBase,GroupBase,AttributeManagerBase,FileMixin,mutationclassMyDataset(DatasetBase):# ... implement abstract methods@mutationdef__setitem__(self,idx,val):...classMyGroup(GroupBase):# ... implement abstract methodspassclassMyFile(FileMixin,MyGroup):# ... implement abstract methodspassclassMyAttributeManager(AttributeManagerBase):# ... implement abstract methodspass

助手

h5py_like.shape_utils包含各种帮助函数, 模拟NUMPY的灵活性。

测试

包括一套基本的类似于h5py的功能测试。 要使用它,您必须使用pytest,并定义一个fixture,该fixture将生成File实现的实例。 然后您只需要将提供的抽象测试类子类化:

conftest.py

importpytest@pytest.fixturedeffile_():yieldMyFile("my_name")

test_implementation.py

fromh5py_like.test_utilsimportFileTestBase,GroupTestBase,DatasetTestBase,ModeTestBase# concrete class names must start with TestclassTestFile(FileTestBase):passclassTestGroup(GroupTestBase):passclassTestDataset(DatasetTestBase):passclassTestMode(ModeTestBase):deffactory(self,mode):# Instantiate your File object in the given mode in a way which is repeatable within a method.returnMyFile(mode)

如果数据集实现支持分块和线程,请改用ThreadedDatasetTestBase基类。

提供的基类测试一些预期的功能,即使您没有在测试类中编写任何方法。 如果您愿意,可以添加更多的测试,或者覆盖那些您想要更改的测试,或者装饰任何您要跳过或xfail的测试。

GroupTestBase提供了一个group_name属性和一个self.group(parent)方法来创建该名称的组。

DatasetTestBase提供了dataset_nameshape、和dtype以及一个self.dataset(parent)方法来生成该数据集。

注释

如果您只想实现h5py类api的一部分,只需raise NotImplementedError()。 然后你的课程会明确说明他们做什么,不支持什么。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring安全编程授权   java Android库AAR取决于另一个库   Java/Groovy双精度语句问题   爪哇。查看安卓监视器图形时,release()不会减少我的内存   java无法在子类中使用EventFiringWebDriver对象   java第一个if语句始终为true,但第二个if语句不为true   java如何从作为字符串提供的XML源代码创建可绘制(或XmlResourceParser对象)?   多线程Java并发问题锁和同步方法   java Android Studio注册链接   java ArrayList of ArrayList of String   使用Shadow重新定位的包中的java Kotlin属性不起作用   java在接口org上找不到方法。阿帕奇。伊巴蒂斯。遗嘱执行人。陈述名为prepare的语句处理程序   如何在Java中放大2倍?   java当参数作为RequestBody和RequestParam发送时,sprig控制器无法识别发送的请求