Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 55 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,61 @@ Uninstalling
Establishing a (secure) connection
----------------------------------

One way of starting a session is to pass iRODS credentials as keyword
An `iRODSSession` instance is the interface object through which iRODS server
APIs can be invoked.

One way to create the session object, assuming one has already successfully
set up a client environment via `iinit`, is by using a simple `make_session`
call:

>>> from irods.helpers import make_session
>>> session = make_session()
Comment on lines +51 to +52

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines do not render correctly. Needs to be wrapped in backticks.

Comment on lines +47 to +52

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cover the constructor form(s) before introducing make_session.


It is also possible to use the constructor form directly, passing
connection and authentication options within the call parameter list:

>>> from irods.session import iRODSSession
>>> with iRODSSession(host='localhost', port=1247, user='bob', password='1234', zone='tempZone') as session:
Comment on lines +57 to +58

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines do not render correctly. Needs to be wrapped in backticks.


Once created, an instance can be managed with an application-appropriate choice
from a couple of possible patterns. Either the programmer can simply manage

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using a word other than "programmer" or rephrasing things to not need such a word.

the instance quite naturally, allowing reference counting to
let it pass out-of-scope and destruct its server connection(s) at the
proper time:

```python
home_coll = session.collections.get(f'/tempZone/home/{session.username}')
# (... Further instances of calls to the server through 'session' may follow.)
```

This casual approach usually ends up being the most efficient, as connection
pooling will allow potentially disparate uses of a server connection to happen
consecutively without harm, and without the need for disposing of or
interrupting the connection.

Alternatively, a context manager may be employed, forcing connections to be
temporarily cleared from the session object once a given block of code has
executed:

```python
with make_session() as session:
my_user = session.users.get(session.username)
# Here, we can have further usage of 'session' in this code block, and at
# the end of it, session.cleanup() is implicitly called.
```

Either way, the instance remains available for further such use afterward,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Either way, the instance remains available for further such use afterward,
Either way, the instance remains available for further use afterward,

until destructed.

We should, of course, be careful how many still-connected `iRODSSession`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this missing a word or two? Seems there should be another word between "careful" and "how".

  • ... be careful with how many ...
  • ... be mindful of how many ...

objects we retain references to in an application, as having more of them than
the system can support database connections for can result in spurious failure
of iRODS client connections.

Finer points in connecting to the iRODS server
----------------------------------------------

iRODS credentials may also be passed as keyword
arguments:

```python
Expand Down
Loading