Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistent behaviour: multiple --inputs fail, multiple --input-urls do not #945

Closed
enricorotundo opened this issue Oct 25, 2022 · 16 comments
Labels
good first issue Good for newcomers type/bug Type: Something is not working as expected

Comments

@enricorotundo
Copy link
Contributor

enricorotundo commented Oct 25, 2022

This fails:

> bacalhau docker run \
    --inputs bafybeig3xawqpx2i2s6ct5nmfavmm5avyw5h364gzslgrmszgcufpf7zz4 \
    --inputs bafybeig63whfqyuvwqqrp5456fl4anceju24ttyycexef3k5eurg5uvrq4 \
    --wait \
    ubuntu ls /inputs
...
    Stderr:
      Error response from daemon: Duplicate mount point: /inputs

This runs but ignores the second input-urls:

❯ bacalhau docker run \
    --input-urls https://gist.githubusercontent.com/enricorotundo/4c7f158f20ae4997e710e66531b8b54f/raw/ee5228ea06117a6ae97a98fed4ae7b1f1776d564/hepscore-new.md \
    --input-urls https://gist.githubusercontent.com/enricorotundo/990f0ad01a50d08dfb580e4ad404870e/raw/aa6934257351a0da93f1e740c72f27128590cebc/foo_data.txt \
    --wait \
    ubuntu ls /inputs
...
    Stdout:
      foo_data.txt

Tested on v0.3.6

@enricorotundo enricorotundo added the type/bug Type: Something is not working as expected label Oct 25, 2022
@enricorotundo enricorotundo changed the title Inconsistent behaviour: multiple --inputs fail, while --input-urls does not Inconsistent behaviour: multiple --inputs fail, multiple --input-urls do not Oct 25, 2022
@simonwo simonwo added the good first issue Good for newcomers label Jan 24, 2023
@kcmuspace
Copy link

Hello @simonwo. I would like to work on this issue.

I'm wondering if the desired behavior is accepting both inputs or making one flag consistent with the other.

Also, Could I have any background information/any pointers related to this bug? thank you so much :)

@enricorotundo
Copy link
Contributor Author

enricorotundo commented Feb 6, 2023

hi @kcmuspace IMO the cli should accept 1+ --inputs (e.g. --inputs CID0 --inputs CID1 --inputs CID2) likewise --input-urls (and I believe --input-volumes too). With the caveat that --inputs always targets /inputs mount point, while the other two flags require a target mount point path; this needs to be handled properly.

@thetechnocrat-dev
Copy link

@kcmuspace @enricorotundo, multiple CIDS would help us out at LabDAO. Just want to check in on timelines to start this ticket and how I can help get this over the finish line.

@enricorotundo
Copy link
Contributor Author

hey @thetechnocrat-dev feel free to jump on this one!

@simonwo
Copy link
Contributor

simonwo commented Feb 9, 2023

So I think we need to provide some clarification on what the job to be done here is. Currently:

  • Using multiple --inputs results in a (server-side) error
  • Using multiple --input-urls results in no error, but missing data

So the scope of this ticket is to ensure that both of those paths return an error, ideally on the client side before submission. So @kcmuspace please go ahead and pick this up if it sounds interesting.

@thetechnocrat-dev You can already use multiple CIDs using the --input-volumes flag, which can be specified multiple times. See https://docs.bacalhau.org/all-flags/#docker-run

@enricorotundo
Copy link
Contributor Author

@simonwo WDYT about allowing multiple --input-urls ?

@simonwo
Copy link
Contributor

simonwo commented Feb 10, 2023

@simonwo WDYT about allowing multiple --input-urls ?

I think we do want to support multiple input URLs in the CLI (we alrady support it in the job spec!). The problem with the --input-urls flag is that it tries to put the data in the same place (/inputs) for each URL.

I think ultimately we need the user to specify unique volume names for each input URL, as if they were using --input-volumes. We could either do that by allowing users to put a :volume-name on the end of the URL passed to --input-urls (not sure if that is ambiguous to parse?):

bacalhau docker run ... --input-urls https://gogol.com:/inputs --input-urls https://gitlove.com:/inputs2

Or we could just make --input-volumes auto-detect a CID or URL...

bacalhau docker run ... -v https://google.com/:/inputs -v Qmycid12345:/inputs2

WDYT?

@enricorotundo
Copy link
Contributor Author

Or we could just make --input-volumes auto-detect a CID or URL...

I like this idea. Similarly, --inputs should accept URL too?

So the behaviour would be:

  • --inputs ANYTHING-SUPPORTED mount ANYTHING-SUPPORTED into /inputs. Only one /inputs is supported.
  • --input-volumes ANYTHING-SUPPORTED:target-mount mount ANYTHING-SUPPORTED into target-mount. 1+ --input-volumes are supported.

How about that?

@simonwo
Copy link
Contributor

simonwo commented Feb 20, 2023

If we're going to change it, why not go one step further and reduce it down to one flag which can optionally take a target mount point? Let's explore that idea.

  • ANYTIHNG_SUPPORTED means:
    • An IPFS CID (anything that successfully parses in a call to Cid.parse)
    • A local filesystem path
    • A URL (the URL may support certain schemes that result in different storage types e.g. s3://)
  • --inputs ANYTHING-SUPPORTED:target-mount mounts ANYTHING-SUPPORTED into target-mount.
  • --inputs ANYTHING-SUPPORTED mounts ANYTHING-SUPPORTED into /inputs.
  • It is an error for two storagespecs to mount to the same place.
    • As a result, it is an error to use --inputs without a target-mount more than once.

What do you think?

I think the reason that this wasn't already done is because URLs can of course contain colons, and it's ambiguous whether that will be a target mount or part of the URL, e.g. with --inputs https://en.wikipedia.org/wiki/Template:Welcome, it's not clear whether Welcome is a target-mount of part of the URL. However, URLs support percent-encoding, so a way out of this is just to require that colons in the path segment are percent-encoded (or people can just use a job spec).

There is another colon in the URL though, at the start in the protocol section.

I think this therefore would require parsing logic that looks like:

  1. Split the flag on the last colon, and try parsing the first part as a CID, file or URL and the last part as a target-mount.
  2. If this fails, try parsing the whole flag as a CID, file or URL and assume the user is targeting /inputs.

With a simple example of parsing https://example.com, this looks like:

  1. Parse https as the source and //example.com as the target mount.
    • https is not a valid CID, hopefully not an existant file, and is not a valid URL
    • //example.com is not a valid mount point (is this true? – it might be fine on Windows?)
    • So failed.
  2. Parse https://example.com as the source and "" as the target mount.
    • It is a valid URL, so ok.
    • Empty target mount defaults to /inputs, so ok.

... this does not really spark joy, does it? It fails ungracefully in the situation where there are oddly named files on the local filesystem, like https, and certainly is a bit complex to reason about.

So I think I agree with your simpler approach – by telling the client whether it should expect a target-mount component or not, we can do away with trying to deal with the ambiguity.

TL;DR: we should do what Enrico suggested.

@kcmuspace
Copy link

kcmuspace commented Feb 22, 2023

@simonwo I would like to try to solve the issue.

So, for summary and clarification. like @enricorotundo said

  • --inputs ANYTHING-SUPPORTED mount ANYTHING-SUPPORTED into /inputs. Only one /inputs is supported. So this would mean only one --inputs flag

  • --input-volumes ANYTHING-SUPPORTED:target-mount mount ANYTHING-SUPPORTED into target-mount. 1+ --input-volumes are supported.

How about --input-urls ? Should that be deleted and --inputs would handle the behavior of --input-urls

@enricorotundo
Copy link
Contributor Author

enricorotundo commented Feb 22, 2023

How about --input-urls ? Should that be deleted and --inputs would handle the behavior of --input-urls

I think so yeah. @kcmuspace

@enricorotundo
Copy link
Contributor Author

hi @kcmuspace #1971 overlaps with this 🤔 . Did you have the chance to have a go?

@kcmuspace
Copy link

Hi @enricorotundo . I've been trying but unfortunately I've made minimal progress(I think due to my unfamiliarity with the codebase). I can see that this issue is more important( and more complex) than I originally thought evidenced by the linked issues. Would this requirement need to be completed ASAP?

I think this could take me a while. I understand if someone more experienced wants to take over. I can work on something other than this.

@enricorotundo
Copy link
Contributor Author

This PR #1936 adds yet a new input type, take a look at its status when diving into this issue

Hi @enricorotundo . I've been trying but unfortunately I've made minimal progress(I think due to my unfamiliarity with the codebase). I can see that this issue is more important( and more complex) than I originally thought evidenced by the linked issues. Would this requirement need to be completed ASAP?

@kcmuspace not necessarily ASAP actually it's totally up to you if you want to contribute. But feel free to seek help on Slack if this is still in the works :)

github-actions bot pushed a commit that referenced this issue Oct 14, 2023
Bumps [watchdog](https://github.com/gorakhargosh/watchdog) from 0.9.0 to
3.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gorakhargosh/watchdog/releases">watchdog's
releases</a>.</em></p>
<blockquote>
<h2>3.0.0</h2>
<ul>
<li>Drop support for Python 3.6.</li>
<li><code>watchdog</code> is now PEP 561 compatible, and tested with
<code>mypy</code></li>
<li>Fix missing <code>&gt;</code> in
<code>FileSystemEvent.__repr__()</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/980">#980</a>)</li>
<li>[ci] Lots of improvements</li>
<li>[inotify] Return from <code>InotifyEmitter.queue_events()</code> if
not launched when thread is inactive (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/963">#963</a>)</li>
<li>[tests] Stability improvements</li>
<li>[utils] Remove handling of <code>threading.Event.isSet</code>
spelling (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/962">#962</a>)</li>
<li>[watchmedo] Fixed tricks YAML generation (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/965">#965</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/altendky"><code>@​altendky</code></a>, <a
href="https://github.com/agroszer"><code>@​agroszer</code></a>, <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.3.1</h2>
<ul>
<li>Run <code>black</code> on the entire source code</li>
<li>Bundle the <code>requirements-tests.txt</code> file in the source
distribution (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/939">#939</a>)</li>
<li>[watchmedo] Exclude <code>FileOpenedEvent</code> events from
<code>AutoRestartTrick</code>, and <code>ShellCommandTrick</code>, to
restore watchdog &lt; 2.3.0 behavior. A better solution should be found
in the future. (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/949">#949</a>)</li>
<li>[watchmedo] Log <code>FileOpenedEvent</code>, and
<code>FileClosedEvent</code>, events in <code>LoggerTrick</code></li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.3.0</h2>
<ul>
<li>[inotify] Add support for <code>IN_OPEN</code> events: a
<code>FileOpenedEvent</code> event will be fired (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/941">#941</a>)</li>
<li>[watchmedo] Add optional event debouncing for
<code>auto-restart</code>, only restarting once if many events happen in
quick succession (<code>--debounce-interval</code>) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/940">#940</a>)</li>
<li>[watchmedo] Add option to not auto-restart the command after it
exits (<code>--no-restart-on-command-exit</code>) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/946">#946</a>)</li>
<li>[watchmedo] Exit gracefully on <code>KeyboardInterrupt</code>
exception (Ctrl+C) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/945">#945</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/dstaple"><code>@​dstaple</code></a>, <a
href="https://github.com/taleinat"><code>@​taleinat</code></a>, <a
href="https://github.com/cernekj"><code>@​cernekj</code></a></p>
<h2>2.2.1</h2>
<ul>
<li>Enable mypy to discover type hints as specified in PEP 561 (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/933">#933</a>)</li>
<li>[ci] Set the expected Python version when building release
files</li>
<li>[ci] Update actions versions in use</li>
<li>[watchmedo] [regression] Fix usage of missing
<code>signal.SIGHUP</code> attribute on non-Unix OSes (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/935">#935</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/simon04"><code>@​simon04</code></a>, <a
href="https://github.com/piotrpdev"><code>@​piotrpdev</code></a></p>
<h2>2.2.0</h2>
<ul>
<li>[build] Wheels are now available for Python 3.11 (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/932">#932</a>)</li>
<li>[documentation] HTML documentation builds are now tested for errors
(<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/902">#902</a>)</li>
<li>[documentation] Fix typos here, and there (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/910">#910</a>)</li>
<li>[fsevents2] The <code>fsevents2</code> observer is now deprecated
(<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/909">#909</a>)</li>
<li>[tests] The error message returned by musl libc for error code
<code>-1</code> is now allowed (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/923">#923</a>)</li>
<li>[utils] Remove unnecessary code in <code>dirsnapshot.py</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/930">#930</a>)</li>
<li>[watchmedo] Handle shutdown events from <code>SIGHUP</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/912">#912</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/babymastodon"><code>@​babymastodon</code></a>,
<a
href="https://github.com/QuantumEnergyE"><code>@​QuantumEnergyE</code></a>,
<a href="https://github.com/timgates42"><code>@​timgates42</code></a>,
<a href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.1.9</h2>
<ul>
<li>[fsevents] Fix flakey test to assert that there are no errors when
stopping the emitter.</li>
<li>[inotify] Suppress occasional <code>OSError: [Errno 9] Bad file
descriptor</code> at shutdown. <a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/805">#805</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/gorakhargosh/watchdog/blob/master/changelog.rst">watchdog's
changelog</a>.</em></p>
<blockquote>
<p>3.0.0</p>
<pre><code>
2023-03-20 • `full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.3.1...v3.0.0&gt;`__
<ul>
<li>Drop support for Python 3.6.</li>
<li><code>watchdog</code> is now PEP 561 compatible, and tested with
<code>mypy</code></li>
<li>Fix missing <code>&amp;gt;</code> in
<code>FileSystemEvent.__repr__()</code>
(<code>[#980](gorakhargosh/watchdog#980)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/980&amp;gt;</code>__)</li>
<li>[ci] Lots of improvements</li>
<li>[inotify] Return from <code>InotifyEmitter.queue_events()</code> if
not launched when thread is inactive
(<code>[#963](gorakhargosh/watchdog#963)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/963&amp;gt;</code>__)</li>
<li>[tests] Stability improvements</li>
<li>[utils] Remove handling of <code>threading.Event.isSet</code>
spelling
(<code>[#962](gorakhargosh/watchdog#962)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/962&amp;gt;</code>__)</li>
<li>[watchmedo] Fixed tricks YAML generation
(<code>[#965](gorakhargosh/watchdog#965)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/965&amp;gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/altendky"><code>@​altendky</code></a>, <a
href="https://github.com/agroszer"><code>@​agroszer</code></a>, <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></li>
</ul>
<p>2.3.1
</code></pre></p>
<p>2023-02-28 • <code>full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.3.0...v2.3.1&gt;</code>__</p>
<ul>
<li>Run <code>black</code> on the entire source code</li>
<li>Bundle the <code>requirements-tests.txt</code> file in the source
distribution
(<code>[#939](gorakhargosh/watchdog#939)
&lt;https://github.com/gorakhargosh/watchdog/pull/939&gt;</code>__)</li>
<li>[watchmedo] Exclude <code>FileOpenedEvent</code> events from
<code>AutoRestartTrick</code>, and <code>ShellCommandTrick</code>, to
restore watchdog <!-- raw HTML omitted -->`__)</li>
<li>[watchmedo] Log <code>FileOpenedEvent</code>, and
<code>FileClosedEvent</code>, events in <code>LoggerTrick</code></li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></li>
</ul>
<p>2.3.0</p>
<pre><code>
2023-02-23 • `full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.2.1...v2.3.0&gt;`__
<ul>
<li>[inotify] Add support for <code>IN_OPEN</code> events: a
<code>FileOpenedEvent</code> event will be fired
(<code>[#941](gorakhargosh/watchdog#941)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/941&amp;gt;</code>__)</li>
<li>[watchmedo] Add optional event debouncing for
<code>auto-restart</code>, only restarting once if many events happen in
quick succession (<code>--debounce-interval</code>)
(<code>[#940](gorakhargosh/watchdog#940)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/940&amp;gt;</code>__)</li>
<li>[watchmedo] Exit gracefully on <code>KeyboardInterrupt</code>
exception (Ctrl+C)
(<code>[#945](gorakhargosh/watchdog#945)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/945&amp;gt;</code>__)</li>
<li>[watchmedo] Add option to not auto-restart the command after it
exits (<code>--no-restart-on-command-exit</code>)
(<code>[#946](gorakhargosh/watchdog#946)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/946&amp;gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/dstaple"><code>@​dstaple</code></a>, <a
href="https://github.com/taleinat"><code>@​taleinat</code></a>, <a
href="https://github.com/cernekj"><code>@​cernekj</code></a></li>
</ul>
<p>2.2.1
</code></pre></p>
<p>2023-01-01 • <code>full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.2.0...v2.2.1&gt;</code>__</p>
<ul>
<li>Enable <code>mypy</code> to discover type hints as specified in PEP
561 (<code>[#933](gorakhargosh/watchdog#933)
&lt;https://github.com/gorakhargosh/watchdog/pull/933&gt;</code>__)</li>
<li>[ci] Set the expected Python version when building release
files</li>
<li>[ci] Update actions versions in use</li>
<li>[watchmedo] [regression] Fix usage of missing
<code>signal.SIGHUP</code> attribute on non-Unix OSes
(<code>[#935](gorakhargosh/watchdog#935)
&lt;https://github.com/gorakhargosh/watchdog/pull/935&gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/simon04"><code>@​simon04</code></a>, <a
href="https://github.com/piotrpdev"><code>@​piotrpdev</code></a></li>
</ul>
<p>2.2.0</p>
<pre><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/da09c060a007fe7fddde27592e4f63ae1e8697bc"><code>da09c06</code></a>
Release 3.0.0</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/9fc1ce2eb04cbe9ca9321949c3962015c2699a06"><code>9fc1ce2</code></a>
fix: missing <code>&gt;</code> in
<code>FileSystemEvent.__repr__()</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/980">#980</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/1838e0b19df98c1ec82acd1d681b7092403e8848"><code>1838e0b</code></a>
doc: clean-up</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/ce6218cebbb17c39adfe35e69124dc3390368196"><code>ce6218c</code></a>
Update global.rst.inc</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/989fddcb3963781e702e7c688e3871b416e2b53e"><code>989fddc</code></a>
Update installation.rst</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/71f2df38b4092ba6674f59be10a91c51585d4aa7"><code>71f2df3</code></a>
Update README.rst</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/9c28c61d001a6c05d47e4c0bd852bbb1dac78e2e"><code>9c28c61</code></a>
mypy check_untyped_defs (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/966">#966</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/764a23494b82e163b92617377d0347cf72e304d2"><code>764a234</code></a>
tests: refactor test setups towards fixtures and hinting (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/968">#968</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/ddb9bd1ba10c1ecfc79e67730ea55bcc5c870809"><code>ddb9bd1</code></a>
tests: xfail tests until we work on them (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/975">#975</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/344f342123e46aaac06a398b8b7b8592a1c5251d"><code>344f342</code></a>
tests: skip pypy on windows (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/976">#976</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/gorakhargosh/watchdog/compare/v0.9.0...v3.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=watchdog&package-manager=pip&previous-version=0.9.0&new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
wdbaruni pushed a commit that referenced this issue Oct 16, 2023
Bumps [watchdog](https://github.com/gorakhargosh/watchdog) from 0.9.0 to
3.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gorakhargosh/watchdog/releases">watchdog's
releases</a>.</em></p>
<blockquote>
<h2>3.0.0</h2>
<ul>
<li>Drop support for Python 3.6.</li>
<li><code>watchdog</code> is now PEP 561 compatible, and tested with
<code>mypy</code></li>
<li>Fix missing <code>&gt;</code> in
<code>FileSystemEvent.__repr__()</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/980">#980</a>)</li>
<li>[ci] Lots of improvements</li>
<li>[inotify] Return from <code>InotifyEmitter.queue_events()</code> if
not launched when thread is inactive (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/963">#963</a>)</li>
<li>[tests] Stability improvements</li>
<li>[utils] Remove handling of <code>threading.Event.isSet</code>
spelling (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/962">#962</a>)</li>
<li>[watchmedo] Fixed tricks YAML generation (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/965">#965</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/altendky"><code>@​altendky</code></a>, <a
href="https://github.com/agroszer"><code>@​agroszer</code></a>, <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.3.1</h2>
<ul>
<li>Run <code>black</code> on the entire source code</li>
<li>Bundle the <code>requirements-tests.txt</code> file in the source
distribution (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/939">#939</a>)</li>
<li>[watchmedo] Exclude <code>FileOpenedEvent</code> events from
<code>AutoRestartTrick</code>, and <code>ShellCommandTrick</code>, to
restore watchdog &lt; 2.3.0 behavior. A better solution should be found
in the future. (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/949">#949</a>)</li>
<li>[watchmedo] Log <code>FileOpenedEvent</code>, and
<code>FileClosedEvent</code>, events in <code>LoggerTrick</code></li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.3.0</h2>
<ul>
<li>[inotify] Add support for <code>IN_OPEN</code> events: a
<code>FileOpenedEvent</code> event will be fired (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/941">#941</a>)</li>
<li>[watchmedo] Add optional event debouncing for
<code>auto-restart</code>, only restarting once if many events happen in
quick succession (<code>--debounce-interval</code>) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/940">#940</a>)</li>
<li>[watchmedo] Add option to not auto-restart the command after it
exits (<code>--no-restart-on-command-exit</code>) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/946">#946</a>)</li>
<li>[watchmedo] Exit gracefully on <code>KeyboardInterrupt</code>
exception (Ctrl+C) (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/945">#945</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/dstaple"><code>@​dstaple</code></a>, <a
href="https://github.com/taleinat"><code>@​taleinat</code></a>, <a
href="https://github.com/cernekj"><code>@​cernekj</code></a></p>
<h2>2.2.1</h2>
<ul>
<li>Enable mypy to discover type hints as specified in PEP 561 (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/933">#933</a>)</li>
<li>[ci] Set the expected Python version when building release
files</li>
<li>[ci] Update actions versions in use</li>
<li>[watchmedo] [regression] Fix usage of missing
<code>signal.SIGHUP</code> attribute on non-Unix OSes (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/935">#935</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/simon04"><code>@​simon04</code></a>, <a
href="https://github.com/piotrpdev"><code>@​piotrpdev</code></a></p>
<h2>2.2.0</h2>
<ul>
<li>[build] Wheels are now available for Python 3.11 (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/932">#932</a>)</li>
<li>[documentation] HTML documentation builds are now tested for errors
(<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/902">#902</a>)</li>
<li>[documentation] Fix typos here, and there (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/910">#910</a>)</li>
<li>[fsevents2] The <code>fsevents2</code> observer is now deprecated
(<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/909">#909</a>)</li>
<li>[tests] The error message returned by musl libc for error code
<code>-1</code> is now allowed (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/923">#923</a>)</li>
<li>[utils] Remove unnecessary code in <code>dirsnapshot.py</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/930">#930</a>)</li>
<li>[watchmedo] Handle shutdown events from <code>SIGHUP</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/912">#912</a>)</li>
</ul>
<p>:heart_decoration: Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/babymastodon"><code>@​babymastodon</code></a>,
<a
href="https://github.com/QuantumEnergyE"><code>@​QuantumEnergyE</code></a>,
<a href="https://github.com/timgates42"><code>@​timgates42</code></a>,
<a href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></p>
<h2>2.1.9</h2>
<ul>
<li>[fsevents] Fix flakey test to assert that there are no errors when
stopping the emitter.</li>
<li>[inotify] Suppress occasional <code>OSError: [Errno 9] Bad file
descriptor</code> at shutdown. <a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/805">#805</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/gorakhargosh/watchdog/blob/master/changelog.rst">watchdog's
changelog</a>.</em></p>
<blockquote>
<p>3.0.0</p>
<pre><code>
2023-03-20 • `full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.3.1...v3.0.0&gt;`__
<ul>
<li>Drop support for Python 3.6.</li>
<li><code>watchdog</code> is now PEP 561 compatible, and tested with
<code>mypy</code></li>
<li>Fix missing <code>&amp;gt;</code> in
<code>FileSystemEvent.__repr__()</code>
(<code>[#980](gorakhargosh/watchdog#980)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/980&amp;gt;</code>__)</li>
<li>[ci] Lots of improvements</li>
<li>[inotify] Return from <code>InotifyEmitter.queue_events()</code> if
not launched when thread is inactive
(<code>[#963](gorakhargosh/watchdog#963)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/963&amp;gt;</code>__)</li>
<li>[tests] Stability improvements</li>
<li>[utils] Remove handling of <code>threading.Event.isSet</code>
spelling
(<code>[#962](gorakhargosh/watchdog#962)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/962&amp;gt;</code>__)</li>
<li>[watchmedo] Fixed tricks YAML generation
(<code>[#965](gorakhargosh/watchdog#965)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/965&amp;gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/kurtmckee"><code>@​kurtmckee</code></a>, <a
href="https://github.com/altendky"><code>@​altendky</code></a>, <a
href="https://github.com/agroszer"><code>@​agroszer</code></a>, <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></li>
</ul>
<p>2.3.1
</code></pre></p>
<p>2023-02-28 • <code>full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.3.0...v2.3.1&gt;</code>__</p>
<ul>
<li>Run <code>black</code> on the entire source code</li>
<li>Bundle the <code>requirements-tests.txt</code> file in the source
distribution
(<code>[#939](gorakhargosh/watchdog#939)
&lt;https://github.com/gorakhargosh/watchdog/pull/939&gt;</code>__)</li>
<li>[watchmedo] Exclude <code>FileOpenedEvent</code> events from
<code>AutoRestartTrick</code>, and <code>ShellCommandTrick</code>, to
restore watchdog <!-- raw HTML omitted -->`__)</li>
<li>[watchmedo] Log <code>FileOpenedEvent</code>, and
<code>FileClosedEvent</code>, events in <code>LoggerTrick</code></li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a></li>
</ul>
<p>2.3.0</p>
<pre><code>
2023-02-23 • `full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.2.1...v2.3.0&gt;`__
<ul>
<li>[inotify] Add support for <code>IN_OPEN</code> events: a
<code>FileOpenedEvent</code> event will be fired
(<code>[#941](gorakhargosh/watchdog#941)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/941&amp;gt;</code>__)</li>
<li>[watchmedo] Add optional event debouncing for
<code>auto-restart</code>, only restarting once if many events happen in
quick succession (<code>--debounce-interval</code>)
(<code>[#940](gorakhargosh/watchdog#940)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/940&amp;gt;</code>__)</li>
<li>[watchmedo] Exit gracefully on <code>KeyboardInterrupt</code>
exception (Ctrl+C)
(<code>[#945](gorakhargosh/watchdog#945)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/945&amp;gt;</code>__)</li>
<li>[watchmedo] Add option to not auto-restart the command after it
exits (<code>--no-restart-on-command-exit</code>)
(<code>[#946](gorakhargosh/watchdog#946)
&amp;lt;https://github.com/gorakhargosh/watchdog/pull/946&amp;gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/dstaple"><code>@​dstaple</code></a>, <a
href="https://github.com/taleinat"><code>@​taleinat</code></a>, <a
href="https://github.com/cernekj"><code>@​cernekj</code></a></li>
</ul>
<p>2.2.1
</code></pre></p>
<p>2023-01-01 • <code>full history
&lt;https://github.com/gorakhargosh/watchdog/compare/v2.2.0...v2.2.1&gt;</code>__</p>
<ul>
<li>Enable <code>mypy</code> to discover type hints as specified in PEP
561 (<code>[#933](gorakhargosh/watchdog#933)
&lt;https://github.com/gorakhargosh/watchdog/pull/933&gt;</code>__)</li>
<li>[ci] Set the expected Python version when building release
files</li>
<li>[ci] Update actions versions in use</li>
<li>[watchmedo] [regression] Fix usage of missing
<code>signal.SIGHUP</code> attribute on non-Unix OSes
(<code>[#935](gorakhargosh/watchdog#935)
&lt;https://github.com/gorakhargosh/watchdog/pull/935&gt;</code>__)</li>
<li>Thanks to our beloved contributors: <a
href="https://github.com/BoboTiG"><code>@​BoboTiG</code></a>, <a
href="https://github.com/simon04"><code>@​simon04</code></a>, <a
href="https://github.com/piotrpdev"><code>@​piotrpdev</code></a></li>
</ul>
<p>2.2.0</p>
<pre><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/da09c060a007fe7fddde27592e4f63ae1e8697bc"><code>da09c06</code></a>
Release 3.0.0</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/9fc1ce2eb04cbe9ca9321949c3962015c2699a06"><code>9fc1ce2</code></a>
fix: missing <code>&gt;</code> in
<code>FileSystemEvent.__repr__()</code> (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/980">#980</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/1838e0b19df98c1ec82acd1d681b7092403e8848"><code>1838e0b</code></a>
doc: clean-up</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/ce6218cebbb17c39adfe35e69124dc3390368196"><code>ce6218c</code></a>
Update global.rst.inc</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/989fddcb3963781e702e7c688e3871b416e2b53e"><code>989fddc</code></a>
Update installation.rst</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/71f2df38b4092ba6674f59be10a91c51585d4aa7"><code>71f2df3</code></a>
Update README.rst</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/9c28c61d001a6c05d47e4c0bd852bbb1dac78e2e"><code>9c28c61</code></a>
mypy check_untyped_defs (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/966">#966</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/764a23494b82e163b92617377d0347cf72e304d2"><code>764a234</code></a>
tests: refactor test setups towards fixtures and hinting (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/968">#968</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/ddb9bd1ba10c1ecfc79e67730ea55bcc5c870809"><code>ddb9bd1</code></a>
tests: xfail tests until we work on them (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/975">#975</a>)</li>
<li><a
href="https://github.com/gorakhargosh/watchdog/commit/344f342123e46aaac06a398b8b7b8592a1c5251d"><code>344f342</code></a>
tests: skip pypy on windows (<a
href="https://redirect.github.com/gorakhargosh/watchdog/issues/976">#976</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/gorakhargosh/watchdog/compare/v0.9.0...v3.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=watchdog&package-manager=pip&previous-version=0.9.0&new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@aronchick
Copy link
Collaborator

Investigate if still relevant

@thetechnocrat-dev
Copy link

For what it is worth, we have been successfully passing multiple CIDs through our Go integration at LabDAO for while now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers type/bug Type: Something is not working as expected
Projects
None yet
Development

No branches or pull requests

5 participants