Skip to content

Commit 94f8d13

Browse files
Merge pull request #127 from DataONEorg/feature-118-citation-package
Feature-118: Citation Package Part 1
2 parents 8b1e194 + 8d9d654 commit 94f8d13

File tree

6 files changed

+54
-66
lines changed

6 files changed

+54
-66
lines changed

CONTRIBUTING.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# Contributing to HashStore
22

3-
:tada: First off, thanks for contributing! :tada:
3+
**🎉 First off, thanks for contributing! 🎉**
44

5-
- [Types of contributions](#types-of-contributions)
6-
- [Pull Requests](#pull-requests)
7-
- [Development Workflow](#development-workflow)
8-
- [Release process](#release-process)
9-
- [Testing](#testing)
10-
- [Code style](#code-style)
11-
- [Contributor license agreement](#contributor-license-agreement)
5+
- [Types of Contributions](#types-of-contributions)
6+
- [🌳 Pull Requests](#pull-requests)
7+
- [🔀 Development Workflow](#development-workflow)
8+
- [🚀 Release Process](#release-process)
9+
- [🔬 Testing](#testing)
10+
- [🎨 Code Style](#code-style)
11+
- [📄 Contributor License Agreement](#contributor-license-agreement)
1212

13-
## Types of contributions
13+
## Types of Contributions
1414

1515
We welcome all types of contributions, including bug fixes, feature enhancements,
1616
bug reports, documentation, graphics, and many others. You might consider contributing by:
@@ -29,7 +29,7 @@ made to increase the value of HashStore to the community. We strive to
2929
incorporate code, documentation, and other useful contributions quickly and
3030
efficiently while maintaining a high-quality software product.
3131

32-
## Pull Requests
32+
## 🌳 Pull Requests
3333
We use the pull-request model for contributions. See [GitHub's help on pull-requests](https://help.github.com/articles/about-pull-requests/).
3434

3535
In short:
@@ -43,7 +43,7 @@ In short:
4343
- our team may request changes before we will approve the Pull Request, or we will make them for you
4444
- once the code is reviewed, our team will merge in your changes to `develop` for the next planned release
4545

46-
## Development Workflow
46+
## 🔀 Development Workflow
4747

4848
Development is managed through the git repository at https://github.com/DataONEorg/hashstore. The repository is organized into several branches, each with a specific purpose.
4949

@@ -104,7 +104,7 @@ gitGraph
104104
merge develop id: "11" tag: "v1.1.0"
105105
```
106106

107-
## Release process
107+
## 🚀 Release Process
108108

109109
1. Our release process starts with integration testing in a `develop` branch. Once all
110110
changes that are desired in a release are merged into the `develop` branch, we run
@@ -115,7 +115,7 @@ reflect the new release and the `develop` branch can be fast-forwarded to sync w
115115
start work on the next release.
116116
3. Releases can be downloaded from the [GitHub releases page](https://github.com/DataONEorg/hashstore/releases).
117117

118-
## Testing
118+
## 🔬 Testing
119119

120120
**Unit and integration tests**. HashStore has a full suite of `pytest` tests in the `tests` subdirectory.
121121
Any new code developed should include a robust set of tests for each public
@@ -127,15 +127,15 @@ or merging to `develop`.
127127
Tests are automatically run via GitHub Actions. Check the root `README.md` file
128128
for this GitHub Actions status badge and make sure it says "Passing":
129129

130-
## Code style
130+
## 🎨 Code Style
131131

132132
Code should be written to professional standards to enable clean, well-documented,
133133
readable, and maintainable software. While there has been significant variability
134134
in the coding styles applied historically, new contributions should strive for
135135
clean code formatting. We generally follow PEP8 guidelines for Python code formatting,
136136
typically enforced through the `black` code formatting package.
137137

138-
## Contributor license agreement
138+
## 📄 Contributor License Agreement
139139

140140
In order to clarify the intellectual property license
141141
granted with Contributions from any person or entity, you agree to

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## HashStore: hash-based object storage for DataONE data packages
22

3-
- **Author**: Dou Mok, Matthew Brooke, Jing Tao, Matthew B. Jones
3+
- **Author**: Dou Mok, Matthew Brooke, Jing Tao, Jeanette Clarke, Ian Nesbitt, Matthew B. Jones
44
- **License**: [Apache 2](http://opensource.org/licenses/Apache-2.0)
55
- [Package source code on GitHub](https://github.com/DataONEorg/hashstore)
66
- [**Submit Bugs and feature requests**](https://github.com/DataONEorg/hashstore/issues)

poetry.lock

Lines changed: 3 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,35 @@
11
[tool.poetry]
22
name = "hashstore"
3-
version = "1.1.0"
4-
description = "HashStore, a hash-based object store for data packages."
3+
version = "1.0.0"
4+
description = "HashStore, an object storage system using content identifiers."
55
authors = ["Dou Mok <[email protected]>", "Matt Jones <[email protected]>"]
66
readme = "README.md"
7+
keywords = ["filesystem", "object storage", "hashstore", "storage"]
8+
classifiers = [
9+
"Development Status :: 4 - Beta",
10+
"Intended Audience :: Developers",
11+
"Intended Audience :: Science/Research",
12+
"License :: OSI Approved :: Apache Software License",
13+
"Natural Language :: English",
14+
"Operating System :: OS Independent",
15+
"Programming Language :: Python :: 3",
16+
"Programming Language :: Python :: 3.9",
17+
"Programming Language :: Python :: 3.10",
18+
"Programming Language :: Python :: 3.11",
19+
"Programming Language :: Python :: 3.12",
20+
"Topic :: System :: Filesystems"
21+
]
722

823
[tool.poetry.dependencies]
9-
python = "^3.9"
10-
pathlib = "^1.0.1"
11-
pyyaml = "^6.0"
24+
python = ">=3.9"
25+
pathlib = ">=1.0.1"
26+
pyyaml = ">=6.0"
1227

1328
[tool.poetry.group.dev.dependencies]
14-
pytest = "^7.2.0"
15-
black = "^22.10.0"
16-
pylint = "^2.17.4"
17-
pg8000 = "^1.29.8"
29+
pytest = ">=7.2.0"
30+
black = ">=22.10.0"
31+
pylint = ">=2.17.4"
32+
pg8000 = ">=1.29.8"
1833

1934
[tool.poetry.scripts]
2035
hashstore = "hashstore.hashstoreclient:main"

src/hashstore/__init__.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
"""HashStore is a hash-based object store for data packages. It uses
2-
cryptographic hash functions to name files consistently.
3-
HashStore creates a directory where objects and metadata are
4-
stored using a hash value as the name.
1+
"""HashStore is an object storage file system that provides persistent file-based
2+
storage using content identifiers/hashes to de-duplicate data.
53
64
HashStore is mainly focused on storing DataONE data package contents
75
on a shared file system for simple and fast access by data management
86
processes that function across a cluster environment. Some properties:
97
108
- Data objects are immutable and never change
11-
- Data objects are named using the SHA-256, base64-encoded hash of their contents
9+
- Data objects are named using the base64-encoded hash of their contents
1210
(thus, a content-identifier)
13-
- Metadata objects are stored with the formatId, a null character and its contents
14-
- Metadata objects are named using the SHA-256 + formatId, base64-encoded hash of
15-
their persistent identifier (PID)
11+
- Metadata documents for a given identifier are stored in a directory structure
12+
based on the base64-encoded hash of the identifier
13+
- Metadata objects are named using the base64-encoded hash of the given identifier
14+
+ its respective format_id/namespace
15+
- The relationships between data objects and metadata are managed with a reference
16+
system.
1617
"""
1718

1819
from hashstore.hashstore import HashStore, HashStoreFactory, ObjectMetadata

0 commit comments

Comments
 (0)