nepher 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. nepher/__init__.py +36 -0
  2. nepher/api/__init__.py +6 -0
  3. nepher/api/client.py +384 -0
  4. nepher/api/endpoints.py +97 -0
  5. nepher/auth.py +150 -0
  6. nepher/cli/__init__.py +2 -0
  7. nepher/cli/commands/__init__.py +6 -0
  8. nepher/cli/commands/auth.py +37 -0
  9. nepher/cli/commands/cache.py +85 -0
  10. nepher/cli/commands/config.py +77 -0
  11. nepher/cli/commands/download.py +72 -0
  12. nepher/cli/commands/list.py +75 -0
  13. nepher/cli/commands/upload.py +69 -0
  14. nepher/cli/commands/view.py +310 -0
  15. nepher/cli/main.py +30 -0
  16. nepher/cli/utils.py +28 -0
  17. nepher/config.py +202 -0
  18. nepher/core.py +67 -0
  19. nepher/env_cfgs/__init__.py +7 -0
  20. nepher/env_cfgs/base.py +32 -0
  21. nepher/env_cfgs/manipulation/__init__.py +4 -0
  22. nepher/env_cfgs/navigation/__init__.py +45 -0
  23. nepher/env_cfgs/navigation/abstract_nav_cfg.py +159 -0
  24. nepher/env_cfgs/navigation/preset_nav_cfg.py +590 -0
  25. nepher/env_cfgs/navigation/usd_nav_cfg.py +644 -0
  26. nepher/env_cfgs/registry.py +31 -0
  27. nepher/loader/__init__.py +9 -0
  28. nepher/loader/base.py +27 -0
  29. nepher/loader/category_loaders/__init__.py +2 -0
  30. nepher/loader/preset_loader.py +80 -0
  31. nepher/loader/registry.py +63 -0
  32. nepher/loader/usd_loader.py +49 -0
  33. nepher/storage/__init__.py +8 -0
  34. nepher/storage/bundle.py +78 -0
  35. nepher/storage/cache.py +145 -0
  36. nepher/storage/manifest.py +80 -0
  37. nepher/utils/__init__.py +12 -0
  38. nepher/utils/fast_spawn_sampler.py +334 -0
  39. nepher/utils/free_zone_finder.py +239 -0
  40. nepher-0.1.0.dist-info/METADATA +235 -0
  41. nepher-0.1.0.dist-info/RECORD +45 -0
  42. nepher-0.1.0.dist-info/WHEEL +5 -0
  43. nepher-0.1.0.dist-info/entry_points.txt +2 -0
  44. nepher-0.1.0.dist-info/licenses/LICENSE +97 -0
  45. nepher-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,235 @@
1
+ Metadata-Version: 2.4
2
+ Name: nepher
3
+ Version: 0.1.0
4
+ Summary: Universal Isaac Lab Environments Platform
5
+ Author: Nepher Contributors
6
+ License: BUSL-1.1
7
+ Project-URL: Homepage, https://github.com/nepher-ai/envhub
8
+ Project-URL: Documentation, https://github.com/nepher-ai/envhub#readme
9
+ Project-URL: Repository, https://github.com/nepher-ai/envhub
10
+ Project-URL: Issues, https://github.com/nepher-ai/envhub/issues
11
+ Keywords: isaac-lab,robotics,environments,simulation
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: requests>=2.28.0
26
+ Requires-Dist: pyyaml>=6.0
27
+ Requires-Dist: tomli>=2.0.0
28
+ Requires-Dist: tomli-w>=1.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: click>=8.0.0
31
+ Requires-Dist: rich>=13.0.0
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=7.0; extra == "dev"
34
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
35
+ Requires-Dist: black>=23.0; extra == "dev"
36
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
37
+ Requires-Dist: mypy>=1.0; extra == "dev"
38
+ Provides-Extra: keyring
39
+ Requires-Dist: keyring>=23.0; extra == "keyring"
40
+ Provides-Extra: isaaclab
41
+ Requires-Dist: isaaclab; extra == "isaaclab"
42
+ Dynamic: license-file
43
+
44
+ # Nepher: Universal Isaac Lab Environments Platform
45
+
46
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
47
+ [![License](https://img.shields.io/badge/license-BUSL--1.1-blue.svg)](LICENSE)
48
+
49
+ **Nepher** is a unified, category-agnostic Python package for managing Isaac Lab environments across all categories (navigation, manipulation, humanoid, locomotion, etc.). It provides a professional command-line interface and Python API for discovering, downloading, uploading, and managing environment bundles for Isaac Lab/Isaac Sim.
50
+
51
+ ## Why EnvHub is Needed
52
+
53
+ Isaac Lab researchers and developers frequently need to work with diverse simulation environments across multiple categories (navigation, manipulation, humanoid, etc.). Managing these environments manually leads to several challenges:
54
+
55
+ - **Fragmented Environment Management**: Without a centralized platform, environments are scattered across repositories, making discovery and sharing difficult
56
+ - **Inconsistent Structure**: Different environment formats and structures make integration into research workflows cumbersome
57
+ - **Limited Discoverability**: Researchers struggle to find and evaluate suitable environments for their tasks
58
+ - **Version Control Issues**: Managing environment versions, dependencies, and updates becomes complex at scale
59
+ - **Repetitive Setup**: Setting up environments requires manual downloads, configuration, and path management
60
+
61
+ EnvHub addresses these challenges by providing a unified platform for environment discovery, management, and integration with Isaac Lab. It standardizes environment structures, enables easy sharing and collaboration, and simplifies the workflow from environment discovery to integration in research code.
62
+
63
+ ## What is an Environment?
64
+
65
+ An **Environment** (or **env**) is a bundle containing one or more simulation scenes organized under a common theme or purpose. Each environment has:
66
+
67
+ - **Unique Identifier**: An environment ID that uniquely identifies the bundle
68
+ - **Category**: The type of environment (navigation, manipulation, humanoid, locomotion, etc.)
69
+ - **Type**: Either `usd` (USD-based scenes) or `preset` (programmatically generated scenes)
70
+ - **Metadata**: Description, version, author, and other metadata
71
+ - **Scenes**: A collection of related scenes that share the same environment context
72
+
73
+ Environments serve as containers that group related simulation scenes together, making it easier to organize, discover, and manage simulation assets.
74
+
75
+ ## What is a Scene?
76
+
77
+ A **Scene** represents a single, specific simulation configuration within an environment. Each scene defines:
78
+
79
+ - **Scene Identifier**: A unique name within the environment
80
+ - **Type-Specific Configuration**:
81
+ - For USD scenes: A USD file path plus optional occupancy maps and metadata
82
+ - For preset scenes: A Python configuration file that generates the scene programmatically
83
+ - **Scene-Specific Settings**: Spawn areas, exclusion zones, waypoints, and other scene-specific parameters
84
+
85
+ Scenes are the actual simulation configurations that get loaded into Isaac Lab for training or evaluation. A single environment can contain multiple scenes, allowing researchers to work with variations of similar environments.
86
+
87
+ ## Installation
88
+
89
+ ### From PyPI
90
+
91
+ ```bash
92
+ pip install nepher
93
+ ```
94
+
95
+ ### From Source
96
+
97
+ Clone the repository and install in editable mode:
98
+
99
+ ```bash
100
+ git clone https://github.com/nepher-ai/envhub.git
101
+ cd envhub
102
+ pip install -e .
103
+ ```
104
+
105
+ #### Optional Dependencies
106
+
107
+ Install with optional extras as needed:
108
+
109
+ ```bash
110
+ # Development tools (pytest, black, ruff, mypy)
111
+ pip install -e ".[dev]"
112
+
113
+ # Keyring support for secure credential storage
114
+ pip install -e ".[keyring]"
115
+
116
+ # Isaac Lab integration
117
+ pip install -e ".[isaaclab]"
118
+
119
+ # All optional dependencies
120
+ pip install -e ".[dev,keyring,isaaclab]"
121
+ ```
122
+
123
+ ## Environment and Scene Definitions
124
+
125
+ ### Environment Structure
126
+
127
+ Environments are defined using a `manifest.yaml` file that describes the environment bundle:
128
+
129
+ **Example: USD Environment**
130
+ ```yaml
131
+ id: digital-twin-warehouse-v1
132
+ type: usd
133
+ version: 1.0.0
134
+ description: Digital twin of a small warehouse environment for navigation training
135
+ category: navigation
136
+
137
+ scenes:
138
+ - scene_id: small_warehouse
139
+ description: Small warehouse digital twin with realistic layout and obstacles
140
+ usd: small_warehouse_digital_twin.usd
141
+ omap_image: digital_twin_omap/map.png
142
+ omap_meta: digital_twin_omap/map.yaml
143
+ ```
144
+
145
+ **Example: Preset Environment**
146
+ ```yaml
147
+ id: indoor-environments-v1
148
+ type: preset
149
+ version: 1.0.0
150
+ description: Indoor navigation environments including hospital corridors and warehouse
151
+ category: navigation
152
+
153
+ preset_scenes:
154
+ - scene_id: hospital
155
+ description: Hospital corridor environment for indoor navigation
156
+ preset: hospital_preset.py
157
+ - scene_id: warehouse
158
+ description: Warehouse with shelves and bounding walls
159
+ preset: warehouse_preset.py
160
+ ```
161
+
162
+ ### Usage Example
163
+
164
+ Here's how to load and use environments and scenes in your Isaac Lab code:
165
+
166
+ ```python
167
+ from nepher import load_env, load_scene
168
+
169
+ # Load an environment
170
+ env = load_env("indoor-environments-v1", category="navigation")
171
+
172
+ # List all scenes in the environment
173
+ print("Available scenes:", [s.name for s in env.get_all_scenes()])
174
+ # Output: Available scenes: ['hospital', 'warehouse']
175
+
176
+ # Load a specific scene configuration
177
+ scene_cfg = load_scene(env, scene="hospital", category="navigation")
178
+
179
+ # Use the scene configuration in Isaac Lab
180
+ from isaaclab.envs import ManagerBasedRLEnv
181
+ # ... configure your environment with scene_cfg
182
+ ```
183
+
184
+ **USD Scene in Isaac Sim**
185
+ ![USD Scene Example](assets/usd_example.png)
186
+
187
+ **Preset Scene in Isaac Sim**
188
+ ![Preset Scene Example](assets/preset_example.png)
189
+
190
+ ## Quick Start
191
+
192
+ ```bash
193
+ # Authenticate with your API key
194
+ nepher login <api_key>
195
+
196
+ # Check current authentication status
197
+ nepher whoami
198
+
199
+ # Logout and clear credentials
200
+ nepher logout
201
+
202
+ # List available environments
203
+ nepher list --category navigation
204
+
205
+ # List evaluation benchmarks (evaluators only - for tournaments)
206
+ nepher list --eval-benchmarks
207
+
208
+ # Download an environment
209
+ nepher download <env_id> --category navigation
210
+
211
+ # List cached environments
212
+ nepher cache list
213
+
214
+ # View an environment in Isaac Sim
215
+ nepher view <env_id> --category navigation
216
+
217
+ # View a specific scene
218
+ nepher view <env_id> --category navigation --scene <scene_name>
219
+
220
+ # Upload your own environment (contributors or evaluators only)
221
+ nepher upload ./my-env --category manipulation --thumbnail ./thumbnail.png
222
+ ```
223
+
224
+ ## Features
225
+
226
+ - **Universal Category Support**: Works with any environment category (navigation, manipulation, humanoid, locomotion, etc.)
227
+ - **Professional CLI**: Intuitive command-line interface for all operations
228
+ - **Seamless Integration**: Direct integration with `envhub-backend` API
229
+ - **Flexible Configuration**: User-configurable cache directories and settings
230
+
231
+
232
+ ## License
233
+
234
+ Business Source License 1.1 (BUSL-1.1) - see [LICENSE](LICENSE) for details.
235
+
@@ -0,0 +1,45 @@
1
+ nepher/__init__.py,sha256=bvYtz86m3uKi9EgmJfqAC94GoZMn4FIbkwO0bzJ9R9c,785
2
+ nepher/auth.py,sha256=5s5K5p0dnNi5k-tgsMddpSKtPQ6aT2rH8ZqUcY3zlXQ,3576
3
+ nepher/config.py,sha256=WdYEPSJjX03re8KDalkeTq1yNHN1J-DqQLt_e8J_WKM,6238
4
+ nepher/core.py,sha256=PvLtNBctaEL7elaOoBEBSvy6-OTN1lt5Ken1fQU4Pc0,1886
5
+ nepher/api/__init__.py,sha256=O-lqritI1-MPZD1XMEMhvQoKvR6g7ctS_9Hg3hU8Ses,136
6
+ nepher/api/client.py,sha256=hyttDrGpYez-XdlrhVbZJSiRVmNKBmAbSlE_0oYj6vc,13122
7
+ nepher/api/endpoints.py,sha256=NQVk7YpjiqPJCJhXaK5QE5rn1pT7gyWltPL0j2y1pW4,2908
8
+ nepher/cli/__init__.py,sha256=VGgLEKRLuSGE-T0QWtET7vyX1bpLaZU3cJcYpFkyGBo,25
9
+ nepher/cli/main.py,sha256=6bb29O-6n4dvpKsbbovqfVb4IQk_46gHZpmt7Ty-QmQ,629
10
+ nepher/cli/utils.py,sha256=lQKpxDf4tAM_PgQ3Oo9AV5956KddWiiD-5cLMrbRhkk,593
11
+ nepher/cli/commands/__init__.py,sha256=nL-5Th9xuMC1zZSQEiKb2MQ0bH-BzITzUKnRrh7IPBw,233
12
+ nepher/cli/commands/auth.py,sha256=lzd8-m4-5ckyzhveJOp50px3eixns1PviVp2yN4mwNo,1142
13
+ nepher/cli/commands/cache.py,sha256=PrNWEx7LhLOiow4e__Uj7mXgklrq3n9aTQSLR__w1RY,2470
14
+ nepher/cli/commands/config.py,sha256=gqazXPHfDJNFlLqUARnOCQ55sdeXWTy0v6o_UCj_pdA,2127
15
+ nepher/cli/commands/download.py,sha256=T6INgjJSK_WI2sS6qGuh-7gknREwzCTzrNmhRttDAO4,2918
16
+ nepher/cli/commands/list.py,sha256=aGn427t_Wm9wSXyCc_N72FAcSai0hOk0Ei_YqU87o6s,3016
17
+ nepher/cli/commands/upload.py,sha256=HTx0vi9YHbvljbceQg5dAqTPV1zNQw0moym7ehwkZbE,2572
18
+ nepher/cli/commands/view.py,sha256=NlfXGEYAKy6RHsz3i3T6ZriKjl2E_wxPlRA5fbT-fWY,13388
19
+ nepher/env_cfgs/__init__.py,sha256=1nLSNk3OySv5DkFXhHQ0F5MBZMe8EUC-qtuWhY6xH38,241
20
+ nepher/env_cfgs/base.py,sha256=8JcSbtPn-FYX8PYOqPsmAZBQ4SwlqNUwKaJzaT65cTA,893
21
+ nepher/env_cfgs/registry.py,sha256=L3xpGjz33BtNiZZfI2pnGdsImXTQnXs-YKdkzEg1otg,1107
22
+ nepher/env_cfgs/manipulation/__init__.py,sha256=7f-3kJU8v0jHlemyJYNup1MjFsJMsWPPJ5t8FEPmBI4,94
23
+ nepher/env_cfgs/navigation/__init__.py,sha256=lEOAk_HbrJIUYEteDvmVkKnZ_uu5yLGazJwcKoSKmlo,1808
24
+ nepher/env_cfgs/navigation/abstract_nav_cfg.py,sha256=Q-SX6foGpyRsnDach9Sx2FLi81qgdjjiWzLrT6oZY10,6323
25
+ nepher/env_cfgs/navigation/preset_nav_cfg.py,sha256=VzVWbSrpz0UlefOPoz36dizeG6shE5NmyYwON0Y7b7A,25822
26
+ nepher/env_cfgs/navigation/usd_nav_cfg.py,sha256=Cyq3FXhQi-x1DagDOrpqlKCpEMUSvYoaoJY-gr2hwtI,24334
27
+ nepher/loader/__init__.py,sha256=Qv54MOYrvAwVsfmgSPWVLzV8r9GeaoJZD0cxJ4Af9E8,328
28
+ nepher/loader/base.py,sha256=UtwrNaqd5yhPp2h-bJ7Tf_yObYSG0cCYkD4ZdnyLlsY,612
29
+ nepher/loader/preset_loader.py,sha256=Joawek8K8uBr3iBucFDBqJ3WQBys8D8Zk-WIxElHTZk,2778
30
+ nepher/loader/registry.py,sha256=f_fZw-Ipb6QEMH1C1LaJd16nc7gpUSadAyYDb1L1QsM,1874
31
+ nepher/loader/usd_loader.py,sha256=xE0PZr01DMblKWW4ZPuz0Nb2qLhvHbVDXMFmseYjkgc,1792
32
+ nepher/loader/category_loaders/__init__.py,sha256=97OEV5L2UvbHFlXdfegLoaHdj6x-HWuV50Gf0KEoTq8,58
33
+ nepher/storage/__init__.py,sha256=Gld_3QLnyLXEM5yPrVG52g-BUPqwqmap0-vRxNPEW3E,294
34
+ nepher/storage/bundle.py,sha256=T0HyoGCZrzqI_2UjPX1rjX5kWYaDXhQ2JJHj3HlZvA8,2341
35
+ nepher/storage/cache.py,sha256=VuTUtYRmWAz1uxo5S2aLZlirPZYYxPGsPALylwYpnQ0,4800
36
+ nepher/storage/manifest.py,sha256=D9awk8MhJRQzpdDZjs0NBCcvXeeV5YFiIGVqs0FflAM,2791
37
+ nepher/utils/__init__.py,sha256=wDeXzSgYvsABKJ7jYxVj-TWeebjiwWrGbtXQy0w1V_c,344
38
+ nepher/utils/fast_spawn_sampler.py,sha256=_mdGxYS5m2MXvYzf1AKykBcQ9pPF6TBcKBD1pIdYhUw,13798
39
+ nepher/utils/free_zone_finder.py,sha256=gNiWxp2emCbVHLV-s_MhOK_AOyWmMsEeSvsRYS-UX1c,9435
40
+ nepher-0.1.0.dist-info/licenses/LICENSE,sha256=UqucPNAXgv6rjZ4740_P5ZIl1yhuMypoT-fYo0O3zxQ,4492
41
+ nepher-0.1.0.dist-info/METADATA,sha256=_V0HKRupA1uWD2wR_SssYyx1e8mARSGdiec7xqPQBdc,8813
42
+ nepher-0.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
43
+ nepher-0.1.0.dist-info/entry_points.txt,sha256=VEBMIEhzU8yaLdfo5_qK0WJtHn32fA-FTD2H6-yHsPE,48
44
+ nepher-0.1.0.dist-info/top_level.txt,sha256=GKBsGQyCoAFwaXQhmEEiJvLylnnv3PPwzssRxoN69eU,7
45
+ nepher-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ nepher = nepher.cli.main:main
@@ -0,0 +1,97 @@
1
+ BUSINESS SOURCE LICENSE 1.1
2
+
3
+ Parameters
4
+
5
+ Licensor: Nepher AI
6
+ Licensed Work: EnvHub - Universal Isaac Lab Environments Platform
7
+ (Nepher: Universal Isaac Lab Environments Platform)
8
+ Change Date: 2030-02-07
9
+ Change License: Apache License, Version 2.0
10
+ Additional Use Grant: You may use the Licensed Work for the specific purposes
11
+ detailed in the "Isaac Lab Ecosystem Grant" section below.
12
+
13
+ -------------------------------------------------------------------------
14
+
15
+ TERMS AND CONDITIONS
16
+
17
+ 1. Definitions
18
+
19
+ "Licensor" means the copyright owner or entity authorized by the copyright
20
+ owner that is granting the License.
21
+
22
+ "Licensed Work" means the subject Software and related content governed by
23
+ this License.
24
+
25
+ "Change Date" means the date when the Licensed Work becomes available under
26
+ the Change License.
27
+
28
+ "Change License" means the Open Source license that the Licensed Work
29
+ will revert to on the Change Date.
30
+
31
+ "Production Environment" means any deployment of the Licensed Work where
32
+ it is used for operational purposes, including but not limited to hosting
33
+ environment platforms, providing environment management services, or operating
34
+ environment distribution infrastructure.
35
+
36
+ 2. License Grant
37
+
38
+ Subject to the terms of this License, the Licensor grants you a non-exclusive,
39
+ worldwide, non-transferable, royalty-free license to copy, modify, create
40
+ derivative works, and redistribute the Licensed Work.
41
+
42
+ 3. Limitations (The "Source Available" Restriction)
43
+
44
+ The License Grant above is subject to the following strict limitations:
45
+
46
+ (a) Production Use Restriction: You may NOT use the Licensed Work in a
47
+ Production Environment unless your use falls specifically under the
48
+ "Additional Use Grant" defined in the Parameters above or the
49
+ "Isaac Lab Ecosystem Grant" defined below.
50
+
51
+ (b) Competitive Restriction: You may NOT use the Licensed Work, in whole or
52
+ in part, to establish, operate, or provide a competing environment
53
+ management platform, environment distribution service, or environment
54
+ marketplace that competes with the Licensor's EnvHub platform, nor may
55
+ you use the Licensed Work to create a competing environment discovery,
56
+ management, or distribution system.
57
+
58
+ 4. Isaac Lab Ecosystem Grant (The "Research and Development Exception")
59
+
60
+ The Licensor hereby grants specific permission for the following uses:
61
+
62
+ (a) Research and Development: You are permitted to use, copy, modify, and
63
+ run the Licensed Work for the purpose of research, development, and
64
+ testing of Isaac Lab environments, including but not limited to:
65
+ - Creating and managing Isaac Lab environments for personal or
66
+ organizational use
67
+ - Developing and testing environment configurations
68
+ - Contributing environments to the EnvHub platform
69
+ - Using the Licensed Work as a client to access the EnvHub platform
70
+
71
+ (b) Integration: You are permitted to integrate the Licensed Work into
72
+ software applications that interface with the Licensor's EnvHub platform,
73
+ provided such software does not attempt to replicate the core platform
74
+ functionality for the purpose of launching a competing service.
75
+
76
+ (c) Auditing: You are permitted to use the Licensed Work for the purpose of
77
+ security research, code auditing, and transparency verification.
78
+
79
+ 5. Change License Conversion
80
+
81
+ On the Change Date, or the fourth anniversary of the first availability of
82
+ the Licensed Work, whichever comes first, the Licensor grants you a license
83
+ under the terms of the Change License (Apache License, Version 2.0).
84
+
85
+ 6. Disclaimer
86
+
87
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
88
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
89
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
90
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
91
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
92
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
93
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
94
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
95
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
96
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
97
+ POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1 @@
1
+ nepher