Comments (8)
It's important to remember that ASDF aims to be an interchange language beyond just for Python. Anything that we put into the spec that makes implementations in other languages more difficult is something we want to avoid.
By that standard, the criteria for inclusion of a compression algorithm in the spec needs to be:
- widely available (i.e. libraries available for all major programming languages)
- patent unencumbered
- has an implementation under a permissive license
bzip2 probably meets those criteria, though I could only find one Javascript implementation, where there are many for zlib (it's a much simpler algorithm).
lzma is less ideal. They don't explicitly claim that they are patent free, which can really matter for compression algorithms. If someone claims a patent on it, users could be obliged to pay royalties. It's also later to the Python game (only in the stdlib in 3.3 and later).
If these methods are not supported by the standard it would be useful to have user-defined filters to implement the compression.
The point of the standard is to ensure interoperability with other libraries and implementations, so I don't think we should knowingly veer from the standard in any implementation.
from asdf.
That sounds good. I was thinking about having user-defined compression filters that could be part of the standard like the registered compression filters in HDF5, apart from the supported zlib compression method. But I agree that zlib is a good choice of compression library.because of those requirements.
from asdf.
I think bzip2 is probably fine to add, though. There may be an argument to only support only that perhaps, in the interest of not creating too many ways to do things. It's not too late to take zlib
away, as we haven't made a release yet. @embray: Thoughts?
from asdf.
I don't have strong opinions about it, though I agree with the guidelines @mdboom laid out. Interestingly the talk of optional compression filters relates pretty well to my comments elsewhere today about output filters...
from asdf.
bzip2 compresses more effectively than zlib but it is also generally slower. I think that it would be nice that the user can choose the compression method but I understand the guidelines and don't have a strong preference about any of them.
from asdf.
I don't see too much of a problem with allowing one or the other (or possibly other schemes that could be added later so long as they meet the criteria).
from asdf.
I'm going to close this. We now have bzip2 support and I think lzma support is a little problematic for right now.
from asdf.
That is fine. It is good to have bzip2 support.
from asdf.
Related Issues (20)
- asdf odd handling of `namedtuple` that prevents implementing a `Converter`
- ASDF swallows warnings raised by converters HOT 6
- `load_schema` does not resolve local references
- asdf pytest plugin is incompatible with pytest 8.1.dev
- `add_history_entry` validates the entire tree
- Objects that implement `__asdf_traverse__` are expected to have a `_tag`
- Raise a warning type specific to software version mismatches when wrong version of packages is installed
- Add schema manifest providing package version to asdf metadata and check schema packages on read
- Update `setuptools_scm` `write_to`
- Retire the "stable" branch HOT 4
- Combine package and build workflows
- masked arrays do not roundtrip with all false masks
- `AsdfSpec` misses expected match
- deprecate `AsdfSpec` and `format_tag`
- Tracking `sunpy` 6.0 and ASDF 1.6.0 HOT 1
- Old (<2.14) versions of asdf do not fully support ASDF standard 1.6.0
- `AsdfFile` instances are not pickleable HOT 1
- Chunking support HOT 2
- Investigate enabling `validate_checksum` as default `True`
- Investigate returning `ndarray` when `lazy_load=False` HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asdf.