-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: temp drop S3 from index (#15099)
Co-authored-by: awaelchli <aedu.waelchli@gmail.com>
- Loading branch information
Showing
4 changed files
with
203 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
:orphan: | ||
|
||
************************** | ||
What are Lightning Drives? | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,200 @@ | ||
:orphan: | ||
|
||
|
||
************ | ||
About Drives | ||
************ | ||
|
||
Lightning Drive storage makes it easy to share files between LightningWorks so you can run your Lightning App both locally and in the cloud without changing the code. | ||
|
||
The Drive object provides a central place for your components to share data. | ||
|
||
The Drive acts as an isolate folder and any component can access it by knowing its name. | ||
|
||
Your components can put, list, get, and delete files from and to the Drive (except LightningFlows). | ||
|
||
---- | ||
|
||
*********************** | ||
What Drive does for you | ||
*********************** | ||
|
||
Think of every instance of the Drive object acting like a Google Drive or like Dropbox. | ||
|
||
By sharing the Drive between components through the LightningFlow, | ||
several components can have a shared place to read and write files from. | ||
|
||
---- | ||
|
||
************** | ||
Create a Drive | ||
************** | ||
|
||
In order to create a Drive, you simply need to pass its name with the prefix ``lit://`` as follows: | ||
|
||
.. code-block:: python | ||
from lightning_app.storage import Drive | ||
# The identifier of this Drive is ``drive_1`` | ||
# Note: You need to add Lightning protocol ``lit://`` as a prefix. | ||
drive_1 = Drive("lit://drive_1") | ||
# The identifier of this Drive is ``drive_2`` | ||
drive_2 = Drive("lit://drive_2") | ||
Any components can create a drive object. | ||
|
||
.. code-block:: python | ||
from lightning_app import LightningFlow, LightningWork | ||
from lightning_app.storage import Drive | ||
class Flow(LightningFlow): | ||
def __init__(self): | ||
super().__init__() | ||
self.drive_1 = Drive("lit://drive_1") | ||
def run(self): | ||
... | ||
class Work(LightningWork): | ||
def __init__(self): | ||
super().__init__() | ||
self.drive_1 = Drive("lit://drive_1") | ||
def run(self): | ||
... | ||
---- | ||
|
||
***************************** | ||
Supported actions with Drives | ||
***************************** | ||
|
||
A Drive supports put, list, get, and delete actions. | ||
|
||
.. code-block:: python | ||
from lightning_app.storage import Drive | ||
drive = Drive("lit://drive") | ||
drive.list(".") # Returns [] as empty | ||
# Created file. | ||
with open("a.txt", "w") as f: | ||
f.write("Hello World !") | ||
drive.put("a.txt") | ||
drive.list(".") # Returns ["a.txt"] as the file copied in the Drive during the put action. | ||
drive.get("a.txt") # Get the file into the current worker | ||
drive.delete("a.txt") | ||
drive.list(".") # Returns [] as empty | ||
---- | ||
|
||
********************************** | ||
Component interactions with Drives | ||
********************************** | ||
|
||
Here is an illustrated code example on how to create drives within works. | ||
|
||
.. figure:: https://pl-flash-data.s3.amazonaws.com/assets_lightning/drive_2.png | ||
|
||
.. code-block:: python | ||
from lightning_app import LightningFlow, LightningWork | ||
from lightning_app.core.app import LightningApp | ||
from lightning_app.storage.drive import Drive | ||
class Work_A(LightningWork): | ||
def __init__(self): | ||
super().__init__() | ||
# The identifier of the Drive is ``drive_1`` | ||
# Note: You need to add Lightning protocol ``lit://`` as a prefix. | ||
self.drive_1 = Drive("lit://drive_1") | ||
def run(self): | ||
# 1. Create a file. | ||
with open("a.txt", "w") as f: | ||
f.write("Hello World !") | ||
# 2. Put the file into the drive. | ||
self.drive_1.put("a.txt") | ||
class Work_B(LightningWork): | ||
def __init__(self): | ||
super().__init__() | ||
# Note: Work B has access 2 drives. | ||
# The identifier of this Drive is ``drive_1`` | ||
self.drive_1 = Drive("lit://drive_1") | ||
# The identifier of this Drive is ``drive_2`` | ||
self.drive_2 = Drive("lit://drive_2") | ||
def run(self): | ||
# 1. Create a file. | ||
with open("b.txt", "w") as f: | ||
f.write("Hello World !") | ||
# 2. Put the file into both drives. | ||
self.drive_1.put("b.txt") | ||
self.drive_2.put("b.txt") | ||
class Work_C(LightningWork): | ||
def __init__(self): | ||
super().__init__() | ||
self.drive_2 = Drive("lit://drive_2") | ||
def run(self): | ||
# 1. Create a file. | ||
with open("c.txt", "w") as f: | ||
f.write("Hello World !") | ||
# 2. Put the file into the drive. | ||
self.drive_2.put("c.txt") | ||
---- | ||
|
||
***************************** | ||
Transfer files with Drive | ||
***************************** | ||
|
||
In the example below, the Drive is created by the flow and passed to its LightningWork's. | ||
|
||
The ``Work_1`` put a file **a.txt** in the **Drive("lit://this_drive_id")** and the ``Work_2`` can list and get the **a.txt** file from it. | ||
|
||
.. literalinclude:: ../../../examples/app_drive/app.py | ||
|
||
|
||
---- | ||
|
||
.. raw:: html | ||
|
||
<div class="display-card-container"> | ||
<div class="row"> | ||
|
||
.. displayitem:: | ||
:header: Learn about the Path Object. | ||
:description: Transfer Files From One Component to Another by Reference. | ||
:col_css: col-md-4 | ||
:button_link: path.html | ||
:height: 180 | ||
:tag: Intermediate | ||
|
||
.. raw:: html | ||
|
||
</div> | ||
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../source-app/glossary/storage/drive_content_old.rst |