Crash

I've reinstalled the modlist 6 times now. Followed the instructions to the letter. Within 10 minutes of loading into a game it crashes during loading screens. Consistently.
I have an
RTX 2060 Super,
Intel i5-9600k 3.70GHz,
16 GB of RAM,
I don't know if I'm missing something, but with a clean install of Skyrim and doing literally everything in the Readme, running the game without anything else running, the consistent crashes on loading screens are making it unplayable.

Most likely a memory crash, so you'll need to increase your pagefile.

Well, I increased my pagefile and it definitely helped. I played for two hours and didn't have a crash on any loading screens.


Apache Setup

Hi,
i want to test your package but i become a little error after trying the url with curl -i or on my browser
There error contains Error while proxying to origin.
Can you give an example ob configuration the server?

Cant close, after reinstalling pushpin after the lamp stack, it's working


[HotFix] Update Sign Up Page for AgriXiv [CAS-39]

Purpose

add missing title
update logo background

Deployment Notes
Must be merged at the same time with https://github.com/CenterForOpenScience/cas-overlay/pull/46.
Ticket
https://openscience.atlassian.net/browse/CAS-39

Close and reopen for master instead of develop.


fix closure param links

Coverage increased (+0.01%) to 90.931% when pulling 4551939a7707ff66ee8ec8be3d0bf2d234c79012 on fix-extended-params-links into 8c19eb5245671fefa672375d9006b1cde6165ace on master.


English Learner Record Addition

https://github.com/LemmaLegalConsulting/docassemble-StudentEvaluations/blob/6b70ce850bf0236dd92e0c3068a49587b7e071a3/docassemble/StudentEvaluations/data/questions/massachusetts_entire_student_record_request.yml#L144-L160
Add English learner records to the list of records if the student’s language is indicated as other than English.

The 'English Learner Records' have been mentioned twice by Diana, but I am unsure what this is.


Consider using HAR format for HTTP type tests

There is no reason to re-invent the wheel and as we may need to support more detailed information related to loading of web pages (for example parsing javascript and like) we may consider switching to using HAR instead: https://w3c.github.io/web-performance/specs/HAR/Overview.html.
It appears to be JSON based so it would fit nicely within our data format.

Sounds reasonable! 👍

Yes, I believe that we should. I did a pass at reading the HAR spec. It's possible to use this spec to represent OONI data. We would need some _ prefixed fields to keep the extra stuff we care about, though. Therefore, I am not sure whether we should use HAR or generate HAR from OONI data.

I have been working on this as part of https://github.com/ooni/probe-engine/issues/12.

I believe doing this is clearly a good idea, because it would allow to load / analyse requests using a bunch of standard tools including Chrome Dev tools.


Upgrade to Jest 24

[x] Following CODE_OF_CONDUCT.md.
[x] Checked for duplicate enhancements.
[x] Title is a summary of the enhancement request, in present tense, and ideally < 50 characters

Enhancement
Upgrade to Jest 24.
It includes built-in TypeScript support.
Hopefully can simplify the configuration, and possibly remove babel-jest dependency

:tada: This issue has been resolved in version 2.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


SDL support

The example here shows how one can define the schema as classes and then convert that to sdl. graphql-java also supports defining the schema in sql and then wire that together, see: https://www.graphql-java.com/documentation/v13/schema/
Is that also supported by graphql-kotlin?

graphql-kotlin generates you a GraphQL schema. You can easily print it out as SDL and we provide an example how to do it in the sample app
https://github.com/ExpediaDotCom/graphql-kotlin/blob/master/example/src/main/kotlin/com/expedia/graphql/sample/RoutesConfiguration.kt#L45

I think I misunderstood your question -> is your question whether graphql-kotlin can load schema from SDL? Answer to this is no, we don't support that as we are following resolver first approach and believe that your code should be the single source of truth for defining your schema.

Yeah exactly that is the questions - loading a schema from SDL. I actually think having a programming language agnostic schema as the source of truth makes the most sense. You might be having your graphql service implemented in a different language and want to switch to kotlin, or vice-versa you want to switch away from kotlin. But also the use-case that we have is that we want our schema to be away from the code so it can be looked at and maintained by multiple parties in the company, including frontend developers and QA. Trying to get them to co-maintain our kotlin schema will be impossible. That is a nice thing about protobuf - you have a language independent schema that can much easier be co-maintained.
Also as note, we are not using graphql internally yet but are considering it and that would be a must-have requirement.
Are there any other disadvantages you see of supporting the SDL I am not considering?

Both schema-first and resolver-first approaches have their shortcomings (see this nice writeup). In my opinion schema-first approach is more problematic as you have two sources of truth -> schema and code. This translates into more work as even after you define your schema you still have to implement it/map it to correct resolvers and types. As a result whenever you change your schema file you also need to update corresponding code (only exception would be documentation).
Personally I am also not sure how often you would be migrating services from one language to another (at least I would hope you don't do it very often). Even if such scenario does happens then you can always generate SDL from your service and use it as a basis for reimplementing it in another language.

@Globegitter I think you may be confused on where graphql-kotlin fits in with graphql-java. You can create a GraphQL server in Kotlin code using graphql-java today without any extra libs. The one downside to creating a server is that you need to either define the schema in an SDL file and load it as you described above or use the verbose schema building methods https://www.graphql-java.com/documentation/v13/schema/
Either way you will need resolvers which implement the same types as your schema which leads to duplication and two sources of truth.
i.e.

Most GraphQL libraries require developers to maintain two sources of truth for their GraphQL API: the schema and the corresponding code (data fetchers or resolvers, and types). Given the similarities between Kotlin and GraphQL, such as the ability to define nullable/non-nullable types, a schema can be generated from Kotlin code without any separate schema specification. graphql-kotlin builds upon graphql-java to allow code-only, or resolver-first, GraphQL services to be built.

So the purpose of this library is to not use SDL files for schema definition and instead generate the schema from your resolver code. As @dkuc84 already mentioned though, both approaches have their downsides. If you would like to use a SDL file you can just use graphql-java directly.

@dkuc84 @smyrick Thanks for clearing things up and giving some more background - but wouldn't the best of both worlds then be code generation? So my SDL file is the source of truth and that then generates some Resolver interface to be implemented. So yes, the schema would still be the source of truth but with the correct tooling it should not lead to more work because all you have to do is add the missing resolvers and the IDE/compiler will complain if anything was missed.
But either way will also investigate graphql-java further - thanks again.

...  both worlds then be code generation? So my SDL file is the source of truth and that then generates some Resolver interface to be implemented.

I think this makes sense in abstract, as you would be programming against the abstraction, rather than generating it. However, practically I find that generating the schema from source works better for me. There are fewer steps for getting a new Queries/Mutations/Types into the API. Also, there is no need to ensure that the entire graph is implemented, this is guarenteed by the code first approach.


add anomaly locator in RD locker

About the PR
this PR adds an anomaly locator to the research directors locker.
Why / Balance
this should reduce the amount of anomalies that end up never being found and critting.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog
🆑

tweak: there is now an anomaly locator in the research directors locker

im 90% sure the build fail isnt caused by this


Fix a bunch of Codacy-reported code issues in Python

INTERNAL CHANGES

Fixed all the Codacy issues in the Python code which are not related to subprocess. Obviously those can't be fixed as we have to start external processes...
There were some issues left behind which were either mediocre or deliberate (such as using a dummy /tmp path in a test.)
Funny thing: Codacy picks up the bad C++ codes we have for testing Clang. :stuck_out_tongue_winking_eye:

For some reason, GitHub seems to not fire the event for Codacy to start analysing the PR. Or perhaps it's in some queue. The results:

I have a clever idea about squelching the subprocess-related errors. As we have to use subprocesses but it looks like Codacy isn't using call flow analysis. So if we'd put all subprocess creation behind a wrapper script, we could localise the subprocess usage to a single file, on which Codacy would keep reporting, but not on a good 10-15% of our files.

There is no way to turn a specific check off? I would prefer that to modify the code for the sake of reducing findings. If there are no other solutions I am fine with isolating the calls to subprocess but only as a last resort.

The Codacy project is registered under @gyorb's name, so I think it's him who could alter the configuration. There is a Code patterns overview which allows you to specify which rules to check against. (By default, most of Python ones are enabled, but there are some disableds, just like how we set up the checker list in CodeChecker.)
Allegedly, there is a way to put a configuration file into the repository which sets the rules Codacy should use.

DNM until all the other big fixes of the next release are committed, as per gyorb's request.

I've turned off the subprocess related warnings.

The release is out. Is this ready to merge or wait for the next point release?

After the conflicts are resolved it can be merged.

@gyorb Resolved the small conflicts that were there. Let's wait for a green light from Travis and Codacy to see if I haven't messed anything up in the meantime.


YAML indentation sometimes doubled

What version of Hugo are you using (hugo version)?

$ hugo version
hugo v0.110.0-e32a493b7826d02763c3b79623952e625402b168+extended linux/amd64 BuildDate=2023-01-17T12:16:09Z VendorInfo=gohugoio

Does this issue reproduce with the latest release?
yes
Steps to reproduce

Create a yaml code block (or highlight shortcode)
Include a single-line block scalar in your YAML
See that the block scalar content is indented twice as far in the rendered output, compared to the input.

Example

---
title: "Post"
date: 2023-02-02T08:34:04-07:00
draft: false
---

```yaml
one:
  two:
    three: |
      four
    five: |
      six
      seven
```

{{< highlight yaml >}}
one:
  two:
    three: |
      four
    five: |
      six
      seven
{{< /highlight >}}

Background
As far as I can tell, the problem is not present upstream in https://github.com/alecthomas/chroma

$ go version -m ~/bin/hugo | grep -i chroma
        dep     github.com/alecthomas/chroma/v2 v2.4.0  h1:Loe2ZjT5x3q1bcWwemqyqEi8p11/IV/ncFCeLYDpWC4=

This is a Chroma issue, and it was resolved with https://github.com/alecthomas/chroma/commit/5ca7345671490cbc9dfd3e122a4dfc617e977992. That commit occurred after the release of 2.4.0. We'll get the update when the author rolls another release.

Ah, thanks! Sorry for not digging deep enough upstream!


Feature/framecount output type u3v (cameraN v1.8.0)

Currently the output of U3VCameraN is
Output<Halide::Func[]> output{ "output", Halide::type_of<T>(), D};
Output<Halide::Func[]> device_info{ "device_info", Halide::type_of<uint8_t>(), 1};
Output<Halide::Func> frame_count{ "frame_count", Halide::type_of<uint32_t>(), 1 };

Because of this design, we cannot use a single sensor's framecount as the port.
This is the issue on v1.8.0, so I request this as a bug-fix or enhancement of v1.8.0.

Update the target branch since this is the  patch for v1.8.0


Updating business case calculation for initial costs

Make sure that depreciation_costs are calculated in the same fashion accross different technologies from different infrastructuers.
Attempt 2

@antw I fixed the two renaming problems and tested it manually. This should work fine now 😅


Incompatible masters found in varLib._add_gvar()

I've ran into this traceback,
Traceback (most recent call last):
  File "/fontTools/varLib/__init__.py", line 633, in build
    _add_gvar(vf, model, master_fonts)
  File "/fontTools/varLib/__init__.py", line 248, in _add_gvar
    allCoords = [d[0] for d in allData]
TypeError: 'NoneType' object has no attribute '__getitem__'

It was caused by U+0020 being named space in one master font, and uni0020 in the other.
@behdad where should a check for this kind of incompatibility be added?

It was caused by U+0020 being named space in one master font, and uni0020 in the other.
@behdad where should a check for this kind of incompatibility be added?

I can fix the code to allow configs where not all glyph is in all fonts.  I just need a few sample fonts...  I will probably require that all glyphs be available in the base master, which would catch an error like yours as well.

Though, it's not clear what to do with GPOS interpolation if masters have different glyph configs...

I think all that's needed is a better error msg.

I think all that's needed is a better error msg.

No, long-term I do want to allow masters that do not have all glyphs.  Aka the brace trick:
https://glyphsapp.com/tutorials/additional-masters-for-individual-glyphs-the-brace-trick

Makes sense. But Miguel's case is clearly a mistake, where two glyphs with the same code point have different glyph names.


Try with resource cleanup

Hi,
I'm looking for something similar to this:
Closeable closeQuietly = ...;

Try.run(() -> read(reader)).always(closeQuietly);

Basically, need something that will be always executed regardless of the output (Success, Failure).

I have this also in mind. We need to abstract over it. Basically it is IO related - with resource cleanup. Java has AutoClosable and try with resources. The main pain point is maintaining composability. E.g. assuming we have monads that capture some state depending on a resource, compining those requires to ensure cleaning up all resources under all circumstances (failure, exhaustive read, ...)
I don't think we should couple this directly with Try. It would fit also great to the Stream collection.
Need time to think about it...

Hi,
Is there a plan to support something similar, but more like a plain try/finally block?
e.g. instead of using:
Session session = getSession();
Try.run(() -> runSomething())
                .onFailure(t -> {
                    session.close();
                })
                .andThen(() -> {
                    session.close();
                });

we would use
Try.run(() -> runSomething())
    .finally(() -> session.close());

Hi @mladenbolic,
nice idea, we could add finally(r) as shortcut for onFailure(t -> r.run()).andThen(r) where r is a Runnable.

Don't you like always?
Try.run(() -> runSomething())
    .always(() -> session.close());

or after, done or finallyRun

Yes it's a keyword, just posted it as an example that it does not need to implement AutoClosable.
As for the cool name: finallyRun, thenFinally, always.

@jknack Oh sorry, I've overseen on my small phone display that you suggested always - I forgot because it has been 12 days ago.
@jknack, @mladenbolic: Our current approach is not complete. We need to capture the resources in a 'safe' context when creating them. We can do better by abstracting over it:
// AutoCloseable resources are supplied and automatically closed on error or when Try was executed
WithResources(...).Try(...); // again upper-cases for methods, like in Match and For (...) :-/

An example:
Try<String> result = WithResources(this::getSession).Try(session -> "ok");

because the result is a Try, we also could implement always or finallyRun or Finally:
Try<String> result = WithResources(this::getSession).Try(session -> "ok").Finally(() -> { ... });

Please note that we do not need Finally to close the resources - that is done automatically. However, of cause we could close resources in Finally if we do not use a WithResourcescontext:
Try<String> result = Try.of(() -> "ok").Finally(() -> { ... });

That is a functional try-with-resources

We are currently able to support up to 8 resources because we have Function1, ..., Function8.
Here is an example for just one resource:
// the API interface exists. Usage: import javaslang.API.*;
interface API {
	static <A1 extends AutoCloseable> WithResources1<A1> WithResources(Try.CheckedSupplier<A1> supplier1) {
	    // DEV-NOTE: We need an anonymous class instead of a lambda because 'the target method is generic'.
	    return new WithResources1<A1>() {
	        @Override
	        public <R> Try<R> Try(CheckedFunction1<A1, R> f) {
	            try(A1 autoCloseable1 = supplier1.get()) {
	                return Try.success(f.apply(autoCloseable1));
	            } catch (Throwable x) {
	                return Try.failure(x);
	            }
	        }
	    };
	}

    @FunctionalInterface
    interface WithResources1<A1 extends AutoCloseable> {
        <R> Try<R> Try(CheckedFunction1<A1, R> f);
    }
}

I think we additionally need to provide side-effecting variants WithResources(...).run(CheckedConsumer1..8).The functional interfaces Consumer1..8 and CheckedConsumer1..8 currently do not exist.

Like the idea! but don't love the WithResources(...)... what if we do the same but using something like this:
Try.with(this::getSession, session -> {
  // work with session and return something
  return ...;
})

It works as your example... but feel we type less and we don't create or have to remember a new construction: WithResources
Also, it probably read better by moving the closeable supplier at the end:
Try.with(session -> {
  // work with session and return something
  return ...;
}, this::getSession)

@danieldietrich Great idea, but I agree with @jknack here, WithResources(...) seams a bit awkward.
As for the suggested implementations, I prefer the first one suggested by @jknack. It's more Java-like and it would be natural for the user to first specify the AutoClosable supplier and then to do something with it inside the checked function.
For a with(...) that accepts one supplier we would have something similar already proposed for WithResources(...):
static <T, A1 extends AutoCloseable> Try<T> with(CheckedSupplier<A1> supplier1, CheckedFunction1<A1, T> function1){
        try(A1 autoCloseable1 = supplier1.get()) {
            return Try.success(function1.apply(autoCloseable1));
        } catch (Throwable x) {
            return Try.failure(x);
        }
    }

@jknack, @mladenbolic that makes pretty much sense. I like your idea to keep things in one place. I also like the first proposal of @jknack.
Try has currently 950 lines of code. I need to move the class completely into Generator.scala to generate the with methods (because we do not have protected regions). That should be no problem. I will provide a version tomorrow...

I hadn't the time yet to modify the generator but I'm on it.
In the meanwhile one thing came to my mind:
Instead of
// Solution 1
Try.with(this::getSession, session -> ...)

we could provide a curried form:
// Solution 2
Try.with(this::getSession).of(session -> ...)

// or name it 'apply'
Try.with(this::getSession).apply(session -> ...)

An implementation could look like this:
interface Try<T> {

    // Solution 1

    static <R, A1 extends AutoCloseable> Try<R> with(CheckedSupplier<A1> supplier1, CheckedFunction1<A1, R> f) {
        try (A1 autoCloseable1 = supplier1.get()) {
            return Try.success(f.apply(autoCloseable1));
        } catch (Throwable x) {
            return Try.failure(x);
        }
    }

    // Solution 2

    static <A1 extends AutoCloseable> TryWith1<A1> with(CheckedSupplier<A1> supplier1) {
        // DEV-NOTE: We need an anonymous class instead of a lambda because 'the target method is generic'.
        return new TryWith1<A1>() {
            @Override
            public <R> Try<R> of(CheckedFunction1<A1, R> f) {
                try (A1 autoCloseable1 = supplier1.get()) {
                    return Try.success(f.apply(autoCloseable1));
                } catch (Throwable x) {
                    return Try.failure(x);
                }
            }
        };
    }

    @FunctionalInterface
    interface TryWith1<A1 extends AutoCloseable> {
        <R> Try<R> of(CheckedFunction1<A1, R> f);
    }

}

The pro of solution 2 is that a TryWith is reusable, i.e. given a set of resource suppliers we could perform different computations:
TryWith1<Session> tryWith = Try.with(this::getSession);
Try<Boolean> result1 = tryWith.of(session -> true);
Try<String> result2 = tryWith.of(session -> "ok");

Another idea that comes to my mind while writing these lines is to provide notation where provides resources may depend on each other - similar to a for comprehension:
Try<R> result =
    Try.with(this::getConnection, connection ->
        Try.with(() -> connection.prepareStatement(...)).of(preparedStatement ->
            ...
        )
    );

This notation is similar to For-comprehensions (in Javaslang):
Iterator<String> iterator =
    For(persons.filter(Person::hasAddress), p ->
        For(p.addresses).yield(a ->
             p.name + "," + a.street
        )
    );

Status update:
We are now able to act on AutoCloseables and finally run code:
Try.withResources(/*resource-suppliers*/)
   .of(/*resource-processor*/)
   .andFinally(/*unit-of-code*/);

(see vavr-0.9.0: Try)
Next we will add the side-effecting run API by introducing CheckedConsumer1..8:
Try.withResources(/*resource-suppliers*/)
   .run(/*resource-consumer*/)
   .andFinally(/*unit-of-code*/);

Vavr 1.0 reduces the API surface area. Instead of adding an internal DSL to mimic the existing try/catch/finally, we use it directly (within a Try.of or Try.run)


fix(docker): docker ssl

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Which docs this PR relation:
Ref #
Which toolchain this PR adaption:
No Breaking Change
Special notes for your reviewer:
CI Switch
ci-runs-only: [Chaos CI, Cargo Clippy, Coverage Test, E2E Tests, Code Format, Unit Tests]

Codecov Report

Merging #349 (2e497fb) into main (821fa64) will increase coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #349      +/-   ##
==========================================
+ Coverage   35.97%   36.01%   +0.03%
==========================================
  Files         119      119
  Lines        8228     8228
==========================================
+ Hits         2960     2963       +3
+ Misses       5268     5265       -3

Impacted Files
Coverage Δ

core/mempool/src/pool.rs
85.41% <0.00%> (+1.38%)
:arrow_up:

core/mempool/src/tx_wrapper.rs
89.28% <0.00%> (+1.78%)
:arrow_up:


hello, i want help.

how do i put custom mods? i looked yet didnt find a sulotion.

https://github.com/pizzaboxer/bloxstrap/wiki/Adding-custom-mods


Prefer solving for explicitly required dependencies first

In https://github.com/prefix-dev/pixi/issues/1708 it was noted that the solver does not prefer selecting explicitly requested packages. We should experiment with whether adding that to the decision heuristic is possible and doesn't affect performance too badly.
My idea would be to prefer deciding on explicitly required dependencies first before considering transitive dependencies.
@jjerphan @wolfv Do you have thoughts? Have you experimented with this before?

To provide a bit more context from https://github.com/prefix-dev/pixi/issues/1708 : I guess this could be a point of confusion for people migrating from conda, where (if I am not wrong) this is taked into account.

Thank you for opening the discussion.
I have not explored it yet, but I think it is worth it.

How about tacking https://github.com/conda/conda/issues/13861 first or in parallel?

Similarly to conda as pointed out by Jaime in https://github.com/mamba-org/resolvo/issues/60#issuecomment-2284082332, mamba defines a custom comparable to sort MatchSpec before solving the problems

Thanks @baszalmstra !


Problem Set 2

Problem 5 : the L matrix should be [ 1 0 0 | 4 1 0 | -2 2 1 ], and the x should be (1/2, 1/2, -5)
Problem 7 (2) : the L matrix should be [ 1 0 0 | -1 1 0 | 0 -1 1]

Thanks, I have checked and corrected them~


Login does not seem to be working

Hi @seregazhuk,
Thanks for this library. I am trying to use it but the login does not work for me. Here is the script I am trying to use:

// creating pins
$bot = PinterestBot::create();
<EMAIL_ADDRESS>'secret', 'mike146899');
var_dump($bot->getLastError());

<EMAIL_ADDRESS>'secret', 'mike146899');
var_dump($bot->getLastError());

$bot->topics->follow('content-marketing');

var_dump($bot->user->id());
var_dump($bot->getLastError());

For the var dumps after register and login methods, I am receiving NULL

The issue is my fault. I was using an older version and all I needed to do is to get the latest version. Login works no ok. Sorry, for the confusion.


Albums Not Appearing

The "My Albums" view is wildly inaccurate compared to the list of Albums that I have on Google Photos itself. Some albums I have created in the past are present, but they are interspersed with 'albums' that I did not create (not by the Google Photos Assistant); usually illogical groupings of photos with a title of the date of one of the photos (but not all photos in the group). Worse, recent albums that I have shared with relatives and friends via Google Photos, do not appear in PhotoView at all! You can see the individual photos in the "timeline" album but that's not what anyone wants.
I was hoping that the Roku/Google Photos/Photoview experience would be better than the dreadful iCloud Slideshow fiasco of Apple TVs, but so far the jury is out.
Any fix in sight?
Simon

Have you reviewed the FAQ's in the app? There is a section explicitly on "Shared Albums".  Grouping which are displayed in "Albums" come directly from Google's API and should match what you see here: https://photos.google.com/u/1/albums
Again, Shared Albums will not show, it's not supported by Google and out of my control.

Yes Chris - as per the faq, I am not trying to view a lot albums that have been shared with me but an album that I have shared with others.
Photoview is not displaying all my own albums. As per my original post, nearly all albums appear along with some odd albums that have a date as a title and a few photos in them. Specifically an album I created a week or so ago with 180 pictures in it does not appear. It's it because some people have made comments about the photos which somehow changes the status of the album. Nobody else has added content.
Simon
Sent from my Verizon, Samsung Galaxy S9+ smartphone
-------- Original message --------From: Chris Taylor<EMAIL_ADDRESS>Date: 5/31/18  2:36 PM  (GMT-05:00) To: chtaylo2/Roku-GooglePhotos<EMAIL_ADDRESS>Cc: shrowell<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [chtaylo2/Roku-GooglePhotos] Albums Not Appearing (#120)
Have you reviewed the FAQ's in the app? There is a section explicitly on "Shared Albums".  Grouping which are displayed in "Albums" come directly from Google's API and should match what you see here: https://photos.google.com/u/1/albums
Again, Shared Albums will not show, it's not supported by Google and out of my control.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ViewAction","target":"https://github.com/chtaylo2/Roku-GooglePhotos/issues/120#issuecomment-393632773","url":"https://github.com/chtaylo2/Roku-GooglePhotos/issues/120#issuecomment-393632773","name":"View Issue"},"description":"View this Issue on GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"https://github.com"}}
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/chtaylo2/Roku-GooglePhotos","title":"chtaylo2/Roku-GooglePhotos","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/chtaylo2/Roku-GooglePhotos"}},"updates":{"snippets":[{"icon":"PERSON","message":"@chtaylo2 in #120: Have you reviewed the FAQ's in the app? There is a section explicitly on "Shared Albums".  Grouping which are displayed in "Albums" come directly from Google's API and should match what you see here: https://photos.google.com/u/1/albums\r\n\r\nAgain, Shared Albums will not show, it's not supported by Google and out of my control. "}],"action":{"name":"View Issue","url":"https://github.com/chtaylo2/Roku-GooglePhotos/issues/120#issuecomment-393632773"}}}
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [chtaylo2/Roku-GooglePhotos] Albums Not Appearing (#120)",
"sections": [
{
"text": "",
"activityTitle": "Chris Taylor",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@chtaylo2",
"facts": [
]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "IssueComment",\n"repositoryFullName": "chtaylo2/Roku-GooglePhotos",\n"issueId": 120,\n"IssueComment": "{{IssueComment.value}}"\n}"
}
]
},
{
"name": "Close issue",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "IssueClose",\n"repositoryFullName": "chtaylo2/Roku-GooglePhotos",\n"issueId": 120\n}"
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/chtaylo2/Roku-GooglePhotos/issues/120#issuecomment-393632773"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "MuteNotification",\n"threadId": 341112379\n}"
}
],
"themeColor": "26292E"
}

PhotoView shows my ARCHIVE ALBUM, which contains a lot of odd, unwanted images, and not my carefully edited CURRENT ALBUMS. Am I doing something wrong? Us there a way to fix this? Thanks, Chris

@mtuman - I'm only aware of the ability to archive photos, not albums. Where are you seeing the ability to do this?  https://photos.google.com/albums is the web front end for albums on Google. If you click the three DOTS beside and select "Delete" it will delete that album, removing it from your account. .. and you will not see it on the Roku app.

Chris. These are the photos I now see in PhotoView:
https://get.google.com/albumarchive/105245055429849927852
When I want to see the photos here:
https://photos.google.com/albums
Hope I am making sense. The photos under ALBUMARCHIVE are far more
disorganized, & not a place I edit - unlike those under ALBUMS. Hence, I am
now unable to use PhotoView.
Thanks, Chris
On Fri, Jul 6, 2018, 12:56 AM Chris Taylor<EMAIL_ADDRESS>wrote:

@mtuman https://github.com/mtuman - I'm only aware of the ability to
archive photos, not albums. Where are you seeing the ability to do this?
https://photos.google.com/albums is the web front end for albums on
Google. If you click the three DOTS beside and select "Delete" it will
delete that album, removing it from your account. .. and you will not see
it on the Roku app.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/chtaylo2/Roku-GooglePhotos/issues/120#issuecomment-402925526,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Am-uHH7APvC0F2IHwdYzVU_MZ0xhdBT2ks5uDu3kgaJpZM4UVPY7
.

I'm running into a similar issue.  If I create a "shared album" it will not show even if I was the one that created it.   If I create an album and then share it it will show though if the other person adds photos. But the photos added by the other person will not show.
I had to get the person to send me the files and add them myself before they would show.


Update feature list in README with issues done in https://github.com/celestiaorg/knuu/issues/91

https://github.com/celestiaorg/knuu/issues/91

Hi @smuu can I be assigned to this?

Hi @smuu can I be assigned to this?

@Mackenzie-OO7 the issue is now assigned to you :+1:

we work on the README in other issues


calling ctx.log in new thread will raise a RuntimeError exception

Steps to reproduce the problem:

add an addon for MITMDump
start a thread in the addon
call ctx.log.info in the thread
an exception is raised

Traceback (most recent call last):
  File "/Users/user/.pyenv/versions/3.7.0/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/Users/user/.pyenv/versions/3.7.0/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/user/pro/python/project/project/plugins/crossdomain_xml/__init__.py", line 39, in _check_crossdomain_xml
    ctx.log.debug(str(e))
  File "/Users/user/pro/python/project/venv/lib/python3.7/site-packages/mitmproxy/log.py", line 29, in debug
    self(txt, "debug")
  File "/Users/user/pro/python/project/venv/lib/python3.7/site-packages/mitmproxy/log.py", line 59, in __call__
    asyncio.get_event_loop().call_soon(
  File "/Users/user/.pyenv/versions/3.7.0/lib/python3.7/asyncio/events.py", line 644, in get_event_loop
    % threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'Thread-7'.

Except for the main thread, there is no event loop in the other threads, so asyncio.get_event_loop().call_soon(...) isn't a good way to send the log message.
System information
Mitmproxy: 4.0.4
Python:    3.7.0
OpenSSL:   OpenSSL 1.1.0i  14 Aug 2018
Platform:  Darwin-18.2.0-x86_64-i386-64bit

I am having the same issue, is there any plan to fix this? or a workaround?


Oil price graph could use an update

At fuel prices, the graph of the barrel price of oil could use an update ( or removal)

@kaskranenburgQ I'm in favour of removing it.

Closed in d10acb5e1bde90d7f43ced3bcfbf7f46e5b0e9f9


Implement Maintenance Notifications for Sharpening and Waxing

Feature Request
Implementation of a notification system that alerts users about ski maintenance tasks based on their individual settings and usage is required. Notifications should be triggered based on the percentage of the interval reached for sharpening and waxing, as well as a time-based reminder if the interval has not been reached within 10 months.
Expected Outcome

Users receive timely in-app notifications when they approach the maintenance threshold for both sharpening and waxing (e.g., 90% of the set interval).
Users receive a notification if the maintenance interval is not reached within 10 months, prompting them to perform maintenance regardless of the distance skied.

Alternative Solution

Sending email reminders in addition to in-app notifications.

Verification

User acceptance testing to validate that notifications are clear and timely.
Unit tests to confirm that notifications are scheduled and triggered correctly based on user data.

Notifications are now displayed in the Aggregated Statistics screen.


PKG-2817

Changes:

#2 was a merge from a fork and did not get built on ci

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:22: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: clone/recipe/meta.yaml:53: missing_dev_url: The recipe is missing a dev_url
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:22: host_section_needs_exact_pinnings: Packages in host must have exact version pinnings, except python build tools.
ERROR: clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: clone/recipe/meta.yaml:53: missing_dev_url: The recipe is missing a dev_url
Errors were found


refactor(utils): splitRoutingPath, allow @ to be safely used in parameter names.

I noticed that @ is not part of the path, but is available as part of the parameter name.
I don't expect many people to use @ in parameter names, but I would like to make @ available because fewer restrictions due to internal implementation methods is better.
I don't think it is quintessential to use \ as a parameter name, so I don't think there is any conflict if it is @\\{i}.
For another discussion
To simplify future discussions, it may be possible to decide in some version that "only [a-zA-Z_][a-zA-Z0-9_]+ can be used for parameter names".

Hi @usualoma !

but I would like to make @ available because fewer restrictions due to internal implementation methods is better.

I also think it's better and a good implementation!

To simplify future discussions, it may be possible to decide in some version that "only [a-zA-Z_][a-zA-Z0-9_]+ can be used for parameter names".

Good idea, but if it works, I don't think we need to do it.

Thanks a lot!! Some developers want this "regexp with slashes" feature, and they will be pleased. I'll merge all PR related to the topic.


Reduce Bundle Size

Problem
Since token.js currently integrates with every LLM provider using their javascript SDK, the package size is much larger than necessary. This can impact the performance of backend services using token.js in serverless functions.
Solution
Refactor LLM provider integrations to work directly with each providers API instead of using the SDK.
Comments
It's recommended to do this one at a time. The following providers still need to be refactored to remove their SDKs.

[ ] OpenAI
[ ] AWS Bedrock
[ ] Gemini
[x] AI21
[ ] Anthropic
[ ] Cohere
[ ] Mistral

Note that the OpenAI SDK is also used to integrate Perplexity and Groq, so they will need to be refactored as well when removing that SDK.

AI21 doesn't have a JS library, so that integration doesn't use any dependencies aside from http and axios. I crossed it off the list.


[Feature Request] Postponed evaluation of PEP 563-compliant type aliases

from __future__ import annotations

from beartype import beartype
from typing import Generic, TypeVar

T = TypeVar("T")

class Foo(Generic[T]):
    pass

@beartype
def f(x: Bar):
    pass

Bar = Foo[int]
f(Foo())
# beartype.roar.BeartypeCallHintForwardRefException: Forward reference "__main__.Qux" referent __main__.Foo[int] not class.

This... is a weird one. But it's also a fascinating one. Static type-checkers operate outside time and space itself. So, it's trivial for them to statically parse the Qux.py script and deduce that Bar is (of course) a type alias for Foo[int]. Order of operations is mostly irrelevant at static analysis time.
Sadly, @beartype operates inside time and space. At the time that the @beartype decorator is applied to the function f(), the type hint Bar has yet to be defined. Despite that, @beartype still has to wrap f() with some sort of dynamically generated runtime type-checking that validates x as an instance of the undefined type hint Bar. Right? Gotta do somethin'.
Currently, @beartype assumes that all stringified type hints are forward references to classes that have yet to be defined. But Foo[int] isn't a class; it's a subscripted generic, exactly as you say. Thankfully, the class underlying a subscripted generic can be easily extracted from that generic via the __origin__ dunder attribute: e.g.,
>>> Foo[int].__origin__
<class '__main__.Qux.Foo'>

Clearly, this calls for desperate measures. When scarce volunteer time and my beautiful wife permit, ...so, by 2047 at the earliest @beartype should be generalized to do the following when confronted with any forward reference at runtime type-checking time:

If that reference resolves to a class, we're done. Praise be to moral turpitude.
If that reference resolves to a subscripted generic, reduce that generic to its origin class (i.e., generic.__origin__).
Else, raise an exception.

So Why Not Just Do That Already, Then?
Interestingly, this feature request intersects with another feature request you "recently" submitted. ...okay, it was at the exact same time I speak ominously of #217, AKA "Postponed evaluation of stringified type hints."
To support #217, @beartype will need to eval() any stringified type hint that is not a simple Python identifier (i.e., any type hint that is a string containing any punctuation). If doing so fails with an AttributeError at decoration time (e.g., due to the type hint actually being a forward reference to a subscripted generic that has yet to be declared as in the example above), @beartype will need to:

Silently squelch that exception.
Defer the lookup of that hint until runtime type-checking time.

Pretty sure this is all doable, but... the sweat beading my forehead is real. :cold_sweat:

@beartype summons the ultimate destructive force to deal with this long-standing issue: apocalyptic anime exploding girl, deal with this one too!

Resolved by e82a1f7142... but mostly by a18d9a5a5da, which this issue mostly turned out to be a duplicate of. I shall now summon my younger self circa last Friday night, who personally witnessed the tragic chain of events that ultimately lead to @beartype's redemption and this final resolution:
Younger Self Witnesses All, Now Tells Sad Story (Only on GitHub)
omg! OMG! OMGGGGG!!! @TeamSpen210: Your brilliant five-sentence abstract on the nature of Python vis-a-vis forward references actually worked! It actually worked, bro! Punch the air like you just don't care, 'cause that's what we're doin'.

Naturally, your "simpler approach" was horrifying.  I spent the entirety of my vacation doing this – and I don't even need this in production code. It just became a titanic struggle of @leycec versus @beartype versus Python: a three-way untelevised cage match that could only end with one man hurtling fifty feet onto another man lying prostrate on a table perched on top of another man curled in the fetal position while bleeding out live on GitHub.

...dat the best u can do, python?

wat is even happening here

When your masterplan only ends in tragedy for everybody.
Seriously. I've got five hundred-line comments devsplaining single one-liners. I've got 100KB of incomprehensible pure-Python isolated to four new submodules sprawled across a new subpackage devoted exclusively to inchoate madness. I've got abstract base classes, abstract metaclasses, dynamic type factories, dunder methods on sunder methods on abstract cached properties. I've got friggin' metaclass __getattr__() methods performing deferred module attribute importation via dynamic class attribute lookups of attributes that don't actually physically exist anywhere. I've got two whole dict.__missing__() implementations that don't even really have anything to do with one another. This is inchoate madness.
I don't even know how any of this works anymore. I've already jettisoned all knowledge pertaining to this topic so I can just sleep tonight without fitfully crying out in the night for my childhood stuffed octopus. I wish to awaken from the real-world nightmare I have unwittingly exposed myself to. It turns out Bloodborne is more a state of mind rather than a mere video game.

Python. It do be like that.
Forward references: do not go there, lest this animated reenactment of @leycec's life corrupt your once-pure essence.
I'm pretty sure (but not certain) that I may have inadvertently summoned the Eldritch She-God Shub-Niggurath, The Black Goat of the Woods with a Thousand Young, during the resolution of this feature request. I apologize, humanity. I'm so sorry! I didn't mean to open that portal. It just opened of its own accord while the guard cat – a fat Maine Coon named Nekali, of course – was indolently passed out on the shag carpeting.


Add "pending" to tests in Pangram

Work on #131

If this is the right way to fix it, then I can help.

Addresses #131 for Pangram - but the issue should be left open to deal with issue on other exercises.


[Question] Custom action, custom options

Hello,
I'm wondering if It's possible to give custom option to a custom action, example,
RailsAdminConfig model
sortable do
    label_method 'code'
    position_method 'row_order'
end

Custom Action
register_instance_option :label_method do
      nil
end

register_instance_option  :position_method do
      nil
end

I tried to create a section but I just don't know how to give these supplementary parameters...
Thanks ;)

Ok, I finally did it.
You can see the code here https://github.com/rollincode/rails_admin_sortable


New Websites SDK test recordings, assembly version update

Updated the Websites SDK test recordings so that the tests will pass. Also updated the assembly version to 2.1.0 -> 2.2.0.

@dsgouda Please merge if this looks good now.


Bump deps, fix clippy lints

Codecov Report
Patch coverage has no change and project coverage change: +4.03 :tada:

Comparison is base (62115e6) 34.33% compared to head (f9f551a) 38.37%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #165      +/-   ##
==========================================
+ Coverage   34.33%   38.37%   +4.03%
==========================================
  Files          29       29
  Lines       12936    11327    -1609
==========================================
- Hits         4442     4347      -95
+ Misses       8494     6980    -1514

Flag
Coverage Δ

unittests
38.37% <ø> (+4.03%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 17 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Remove UTF-8 BOM from source files

UTF8 Byte Order Marks interfere with goog.require/provide regular expression matching. This removes the BOM when the file is read from disk.
I thought this had already been fixed, but came across it on a stackoverflow issue.

This problem plagues windows machines as certain editors (such as Visual Studio) make it very difficult to save files without adding the byte order marker.

I didn't think the compiler did any regex matching; I thought it was always looking at the parsed AST now. But this seems fine to do in any case.

@MatrixFrog See the last paragraph https://github.com/google/closure-compiler/wiki/Manage-Closure-Dependencies#faq

There's a reason we did it this way. It wasn't 100% laziness....just 80-90% laziness.

<3 okay


New Indigenous Category

Description:
The entries for the Indigenous Categories need to be updated to:

Environment:
ALL
Steps to Reproduce Bug:
n/a
Expected Result:
A User needs to be able to select one of 8 categories for a Nation on the Work
Actual Result:
There are only 5 categories to choose from
Screenshot of Bug:

Severity/Priority:
Low / High

1 PIN
2 TAC
3 Notification


Further progress and updates

Hi guys. I've found this project and have some expectations once use it for my idea. Are you still keeping it alive? A year ago someone asked about MA"UI support - is it gonna happen?

Hello. For now things are little bit unclear because of lack of support from Microsoft, and we are monitoring situation.
For example, check this github discussion - https://github.com/dotnet/maui/issues/10152
So it is in plan, but we need to find some solid solution for this problem.
Thank you for your interest, will let you know if anything changes.
Best regards
Miki


demo's broken

demo's broken

@daslicious it's not a thumbor-toy issue, I use http://thumborize.me/ as thumbor server which seems to be broken.

@daslicious, guys from thumbor have fixed thumborize.me, so the thumbor-toy demo can now display images from it. I've also updated it to include new features like filters dragndrop, collapsible panes, themes…

@plouc excellent, thanks for the update.


Fix ASCII/binary detection issues

This is an attempt to fix #156

STL files starting with a whitespace (first line indented) are now properly recognized as ASCII
If the file mode is ASCII go straight to ASCII reader, and if file mode is binary, go straight to binary reader
In automatic mode, if the file/stream start with word 'solid', possibly prepended by whitespace, try ASCII mode first and fallback to binary
If header contain non-ASCII characters, assume binary by default in automatic mode

I added three STL's in the tests-folder, but did not figure out how to include these in the testing framework, sorry. All of the STL's should read and parse.
The Cube.stl is a square cube from (x, y, z) = (0, 0, 0) to (2, 2, 2) in ASCII and binary format. The Cube.stl in ASCII format does not parse correctly with the current develop-branch, and this PR fixes this issue.
The CubeInvalidUnicode.stl is the same cube, but where a non-ASCII/non-Unicode character (0xFFFF) is inserted in the end of the 80-byte header. Reading in this file should cover the except UnicodeError part that is not covered by the existing tests.
In the end I want to mention that I was not completely satisfied with the changes I came up with in stl.py, because the load-function became less understandable. However, I think that if a file is opened in Mode.BINARY, it should go straight to the binary reader without checking particularly much about the header and trying ASCII first, and the same for Mode.ASCII. The automatic mode is complicated by needing to support autodetection in non-seekable streams, so this part is maybe best left as-is.
I am also slightly unsure about Python 2.7 support in this PR. I no longer have this available on my development machine and cannot test. I do however think that header.decode("ascii").lstrip().lower() is valid Python 2.7...
Thanks.

Coverage decreased (-100.0%) to 0.0% when pulling edce4403fdc43c8b39fe7b983b0d77ee1a531d1b on hakostra:feature/ascii-binary-detection-issue into 93f194684f1f208fd333e430b430a7f22d657816 on WoLpH:develop.

Coverage decreased (-100.0%) to 0.0% when pulling edce4403fdc43c8b39fe7b983b0d77ee1a531d1b on hakostra:feature/ascii-binary-detection-issue into 93f194684f1f208fd333e430b430a7f22d657816 on WoLpH:develop.

I just realized the following: A perfectly valid binary STL can have a header with 80 bytes of NULL (0x00). I think this decodes to an empty string in Python. Also, there can be cases where the binary header contain less than 5 ASCII characters (e.g. the word 'STL') and then the rest null-bytes.
In these cases the check
headerstr = header.decode("ascii").lstrip().lower()
possibly_ascii = True if headerstr[:5] == 'solid' else False

is slightly ugly ([:5] on a str with length < 5). Maybe a better syntax would have been
possibly_ascii = headerstr.startswith('solid')

However, i just checked, and it appears that
a = ""
test = a[:5]

is valid and raises no errors...
I do not have my development PC now, but I will construct such an STL tomorrow and check if it passes through in automatic mode.

I just realized the following: A perfectly valid binary STL can have a header with 80 bytes of NULL (0x00). I think this decodes to an empty string in Python. Also, there can be cases where the binary header contain less than 5 ASCII characters (e.g. the word 'STL') and then the rest null-bytes.
In these cases the check
headerstr = header.decode("ascii").lstrip().lower()
possibly_ascii = True if headerstr[:5] == 'solid' else False

is slightly ugly ([:5] on a str with length < 5). Maybe a better syntax would have been
possibly_ascii = headerstr.startswith('solid')

However, i just checked, and it appears that
a = ""
test = a[:5]

is valid and raises no errors...
I do not have my development PC now, but I will construct such an STL tomorrow and check if it passes through in automatic mode.

In these cases the check
headerstr = header.decode("ascii").lstrip().lower()
possibly_ascii = True if headerstr[:5] == 'solid' else False

is slightly ugly ([:5] on a str with length < 5). Maybe a better syntax would have been
possibly_ascii = headerstr.startswith('solid')

However, i just checked, and it appears that
a = ""
test = a[:5]

is valid and raises no errors...

It's not the prettiest, I'm trying to remember the reason for this syntax but both wil work.
Actually, it could have been reduced to:
possibly_ascii = header.decode("ascii").lstrip().lower()[:5] = 'solid'

The True/False thing is silly because a == should always return a boolean

In these cases the check
headerstr = header.decode("ascii").lstrip().lower()
possibly_ascii = True if headerstr[:5] == 'solid' else False

is slightly ugly ([:5] on a str with length < 5). Maybe a better syntax would have been
possibly_ascii = headerstr.startswith('solid')

However, i just checked, and it appears that
a = ""
test = a[:5]

is valid and raises no errors...

It's not the prettiest, I'm trying to remember the reason for this syntax but both wil work.
Actually, it could have been reduced to:
possibly_ascii = header.decode("ascii").lstrip().lower()[:5] = 'solid'

The True/False thing is silly because a == should always return a boolean

You mean to use == don't you:
possibly_ascii = header.decode("ascii").lstrip().lower()[:5] == 'solid'

The reason for using [:5] originally might be because that was the only way to do this with a binary sequence, as it was previously.
For this PR I had to convert the header to a string, because otherwise I cannot do "lstrip" on it.
I also created an STL variant with a header consisting only of null-bytes, and it passes the automatic ASCII/binary detection without any problems. The 80-byte sequence of null's decode as I anticipated to an empty string.

You mean to use == don't you:
possibly_ascii = header.decode("ascii").lstrip().lower()[:5] == 'solid'

The reason for using [:5] originally might be because that was the only way to do this with a binary sequence, as it was previously.
For this PR I had to convert the header to a string, because otherwise I cannot do "lstrip" on it.
I also created an STL variant with a header consisting only of null-bytes, and it passes the automatic ASCII/binary detection without any problems. The 80-byte sequence of null's decode as I anticipated to an empty string.

You mean to use == don't you:

Indeed, that was a typo :)

The reason for using [:5] originally might be because that was the only way to do this with a binary sequence, as it was previously.
For this PR I had to convert the header to a string, because otherwise I cannot do "lstrip" on it.

Ah... that explains a lot. It shouldn't be needed for bytes though:
In [1]: x = b' some binary string with spaces '

In [2]: x.strip()
Out[2]: b'some binary string with spaces'

In [3]: x.lstrip()
Out[3]: b'some binary string with spaces '

I think the slicing method was done mostly due to Python 2/3 incompatibility issues. But that's no longer relevant so it can be replaced :)

I also created an STL variant with a header consisting only of null-bytes, and it passes the automatic ASCII/binary detection without any problems. The 80-byte sequence of null's decode as I anticipated to an empty string.

Nice :)

You mean to use == don't you:

Indeed, that was a typo :)

The reason for using [:5] originally might be because that was the only way to do this with a binary sequence, as it was previously.
For this PR I had to convert the header to a string, because otherwise I cannot do "lstrip" on it.

Ah... that explains a lot. It shouldn't be needed for bytes though:
In [1]: x = b' some binary string with spaces '

In [2]: x.strip()
Out[2]: b'some binary string with spaces'

In [3]: x.lstrip()
Out[3]: b'some binary string with spaces '

I think the slicing method was done mostly due to Python 2/3 incompatibility issues. But that's no longer relevant so it can be replaced :)

I also created an STL variant with a header consisting only of null-bytes, and it passes the automatic ASCII/binary detection without any problems. The 80-byte sequence of null's decode as I anticipated to an empty string.

Nice :)

Ah. So you can lstrip on bytes objects as well... I thought that was valid for 'str' only. Sorry, still get confused on this.
Anyhow, I think the ASCII decode is sensible, because if it contain binary content that cannot be decoded to ASCII in the header, it is at least not an ASCII STL file (but maybe someone tries an "unicode STL"?).
Also, let me know if you want me to do more on this PR.

Ah. So you can lstrip on bytes objects as well... I thought that was valid for 'str' only. Sorry, still get confused on this.
Anyhow, I think the ASCII decode is sensible, because if it contain binary content that cannot be decoded to ASCII in the header, it is at least not an ASCII STL file (but maybe someone tries an "unicode STL"?).
Also, let me know if you want me to do more on this PR.

I've made a few small changes but everything is merged beyond that :)
Thank you for the help!

I've made a few small changes but everything is merged beyond that :)
Thank you for the help!


Effectwidget fbo opacity darkens children canvasses on opacities smaller than a value of 1.

So the issue I came across is as follows:
If you add a widget as a child of EffectWidget and perform any canvas drawings that include a Color call with an opacity of less than 1 it darkens the drawing instruction and sets an opacity. (e.g. white results in grey).
Code to reproduce
from kivy.graphics import Color, Rectangle, Canvas, ClearBuffers, ClearColor
from kivy.graphics.fbo import Fbo
from kivy.properties import ObjectProperty, NumericProperty
from kivy.app import App
from kivy.factory import Factory as F

class FboFloatLayout(F.FloatLayout):

    texture = ObjectProperty(None, allownone=True)

    alpha = NumericProperty(1)

    def __init__(self, **kwargs):
        self.canvas = Canvas()
        with self.canvas:
            self.fbo = Fbo(size=self.size)
            self.fbo_color = Color(1, 1, 1, 1)
            self.fbo_rect = Rectangle()

        with self.fbo:
            ClearColor(0, 0, 0, 0)
            ClearBuffers()

        # wait that all the instructions are in the canvas to set texture
        self.texture = self.fbo.texture
        super(FboFloatLayout, self).__init__(**kwargs)

    def add_widget(self, *largs):
        # trick to attach graphics instruction to fbo instead of canvas
        canvas = self.canvas
        self.canvas = self.fbo
        ret = super(FboFloatLayout, self).add_widget(*largs)
        self.canvas = canvas
        return ret

    def remove_widget(self, *largs):
        canvas = self.canvas
        self.canvas = self.fbo
        super(FboFloatLayout, self).remove_widget(*largs)
        self.canvas = canvas

    def on_size(self, instance, value):
        self.fbo.size = value
        self.texture = self.fbo.texture
        self.fbo_rect.size = value

    def on_pos(self, instance, value):
        self.fbo_rect.pos = value

    def on_texture(self, instance, value):
        self.fbo_rect.texture = value

    def on_alpha(self, instance, value):
        self.fbo_color.rgba = (1, 1, 1, value)

class SomeWidget(F.Widget):
    op = NumericProperty()

    def setup(self):
        with self.canvas:
            self.color = Color(1, 1, 1, 1)
            Rectangle(pos=self.pos, size=self.size)

    def on_op(self, *args):
        self.color.a = self.op

class ScreenLayerApp(App):
    def build(self):

        root = F.RelativeLayout()
        eff = FboFloatLayout()

        self.s1 = s1 = SomeWidget(width=200)
        s1.setup()

        eff.add_widget(s1)

        root.add_widget(eff)

        # root.add_widget(Widget())
        # root.add_widget(s1)
        slider1 = F.Slider(min=0, max=1)
        slider2 = F.Slider(min=0, max=1)
        slider3 = F.Slider(min=0, max=1)

        slider1.bind(value=eff.setter('opacity'))
        slider3.bind(value=s1.setter('op'))

        box = F.BoxLayout(orientation='vertical', size_hint_y=.5, pos_hint={'top': 1})
        box.add_widget(slider1)
        box.add_widget(slider2)
        box.add_widget(slider3)
        root.add_widget(box)

        with root.canvas.before:
            Color(1, 1, 1, 1)
            Rectangle(pos=eff.pos, size=(50, 200))
            Color(1, 0, 0, 1)
            Rectangle(pos=(eff.x + 50, 0), size=(50, 200))
            Color(0, 1, 0, 1)
            Rectangle(pos=(eff.x + 100, 0), size=(50, 200))
            Color(0, 0, 1, 1)
            Rectangle(pos=(eff.x + 150, 0), size=(50, 200))

        return root

if __name__ == "__main__":
    ScreenLayerApp().run()

possible output (bottomleft snippet)

(note that the code to reproduce is based on the fbo_canvas example, not an EffectWidget, showing that the issue comes from the usage of FBO in EffectWidget, not the code in EffectWidget itself).


Error executing process > 'picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)'

Hi,
I have cloned the repository (again) to pull in the updates from 3 days ago.
I am getting following error while trying to run the pipeline on test data and script under NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6.
$ bash run.sh
N E X T F L O W  ~  version 22.10.0
Launching `../../main.nf` [ridiculous_dubinsky] DSL2 - revision: 1f2eb30b43
N E X T F L O W  ~  version 22.10.0 5826
NPM-sample-qc  ~  version 0.7
User name    : kanwals
Command Line : nextflow run ../../main.nf -config ../../nextflow.config -params-file params.yml -work-dir ./work --outdir ./output
Project Dir  : /Users/kanwals/UMCCR/git/NPM-sample-qc
Launch Dir   : /Users/kanwals/UMCCR/git/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6
Work Dir     : /Users/kanwals/UMCCR/git/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6/work
Results Dir  : ./output/results
Info Dir     : ./output/pipeline_info
Profile      : standard
executor >  local (3)
[47/31aef0] process > samtools_stats (NA12878-chr14-AKT1)                      [100%] 1 of 1 ✔
[fb/3ceb6f] process > picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1) [  0%] 0 of 1
[76/fb3be2] process > mosdepth_bam (NA12878-chr14-AKT1)                        [  0%] 0 of 1
[-        ] process > mosdepth_datamash                                        -
[-        ] process > multiqc                                                  -
[-        ] process > compile_metrics                                          -
Error executing process > 'picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)'

Caused by:
  Process `picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)` terminated with an error exit status (1)

Command executed:

  # program CollectQualityYieldMetrics to get numbers of bases that pass a base quality score 30 threshold
  # program CollectInsertSizeMetrics to get mean insert size

  picard CollectMultipleMetrics          I=NA12878-chr14-AKT1.bam         O=NA12878-chr14-AKT1         ASSUME_SORTED=true         FILE_EXTENSION=".txt"         PROGRAM=null         PROGRAM=CollectQualityYieldMetrics         PROGRAM=CollectInsertSizeMetrics         METRIC_ACCUMULATION_LEVEL=null         METRIC_ACCUMULATION_LEVEL=ALL_READS

Command exit status:
  1

Command output:
  (empty)

Command error:
                                clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG}

  QUIET=Boolean                 Whether to suppress job-summary info on System.err.  Default value: false. This option can
                                be set to 'null' to clear the default value. Possible values: {true, false}

  VALIDATION_STRINGENCY=ValidationStringency
                                Validation stringency for all SAM files read by this program.  Setting stringency to
                                SILENT can improve performance when processing a BAM file in which variable-length data
                                (read, qualities, tags) do not otherwise need to be decoded.  Default value: STRICT. This
                                option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT,
                                SILENT}

  COMPRESSION_LEVEL=Integer     Compression level for all compressed files created (e.g. BAM and VCF).  Default value: 5.
                                This option can be set to 'null' to clear the default value.

  MAX_RECORDS_IN_RAM=Integer    When writing files that need to be sorted, this will specify the number of records stored
                                in RAM before spilling to disk. Increasing this number reduces the number of file handles
                                needed to sort the file, and increases the amount of RAM needed.  Default value: 500000.
                                This option can be set to 'null' to clear the default value.

  CREATE_INDEX=Boolean          Whether to create an index when writing VCF or coordinate sorted BAM output.  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  CREATE_MD5_FILE=Boolean       Whether to create an MD5 digest for any BAM or FASTQ files created.    Default value:
                                false. This option can be set to 'null' to clear the default value. Possible values:
                                {true, false}

  REFERENCE_SEQUENCE=File
  R=File                        Reference sequence file.  Default value: null.

  GA4GH_CLIENT_SECRETS=String   Google Genomics API client_secrets.json file path.  Default value: client_secrets.json.
                                This option can be set to 'null' to clear the default value.

  USE_JDK_DEFLATER=Boolean
  USE_JDK_DEFLATER=Boolean      Use the JDK Deflater instead of the Intel Deflater for writing compressed output  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  USE_JDK_INFLATER=Boolean
  USE_JDK_INFLATER=Boolean      Use the JDK Inflater instead of the Intel Inflater for reading compressed input  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  OPTIONS_FILE=File             File of OPTION_NAME=value pairs.  No positional parameters allowed.  Unlike command-line
                                options, unrecognized options are ignored.  A single-valued option set in an options file
                                may be overridden by a subsequent command-line option.  A line starting with '#' is
                                considered a comment.  Required.

executor >  local (3)
[47/31aef0] process > samtools_stats (NA12878-chr14-AKT1)                      [100%] 1 of 1 ✔
[fb/3ceb6f] process > picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1) [100%] 1 of 1, failed: 1 ✘
[-        ] process > mosdepth_bam (NA12878-chr14-AKT1)                        -
[-        ] process > mosdepth_datamash                                        -
[-        ] process > multiqc                                                  -
[-        ] process > compile_metrics                                          -
Workflow execution stopped with the following message:
Exit status   : 1
Error message :                               clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG}

QUIET=Boolean                 Whether to suppress job-summary info on System.err.  Default value: false. This option can
                              be set to 'null' to clear the default value. Possible values: {true, false}

VALIDATION_STRINGENCY=ValidationStringency
                              Validation stringency for all SAM files read by this program.  Setting stringency to
                              SILENT can improve performance when processing a BAM file in which variable-length data
                              (read, qualities, tags) do not otherwise need to be decoded.  Default value: STRICT. This
                              option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT,
                              SILENT}

COMPRESSION_LEVEL=Integer     Compression level for all compressed files created (e.g. BAM and VCF).  Default value: 5.
                              This option can be set to 'null' to clear the default value.

MAX_RECORDS_IN_RAM=Integer    When writing files that need to be sorted, this will specify the number of records stored
                              in RAM before spilling to disk. Increasing this number reduces the number of file handles
                              needed to sort the file, and increases the amount of RAM needed.  Default value: 500000.
                              This option can be set to 'null' to clear the default value.

CREATE_INDEX=Boolean          Whether to create an index when writing VCF or coordinate sorted BAM output.  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

CREATE_MD5_FILE=Boolean       Whether to create an MD5 digest for any BAM or FASTQ files created.    Default value:
                              false. This option can be set to 'null' to clear the default value. Possible values:
                              {true, false}

REFERENCE_SEQUENCE=File
R=File                        Reference sequence file.  Default value: null.

GA4GH_CLIENT_SECRETS=String   Google Genomics API client_secrets.json file path.  Default value: client_secrets.json.
                              This option can be set to 'null' to clear the default value.

USE_JDK_DEFLATER=Boolean
USE_JDK_DEFLATER=Boolean      Use the JDK Deflater instead of the Intel Deflater for writing compressed output  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

USE_JDK_INFLATER=Boolean
USE_JDK_INFLATER=Boolean      Use the JDK Inflater instead of the Intel Inflater for reading compressed input  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

OPTIONS_FILE=File             File of OPTION_NAME=value pairs.  No positional parameters allowed.  Unlike command-line
                              options, unrecognized options are ignored.  A single-valued option set in an options file
                              may be overridden by a subsequent command-line option.  A line starting with '#' is
                              considered a comment.  Required.

R is not installed on this machine. It is required for creating the chart.
Error report  : Error executing process > 'picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)'

Caused by:
  Process `picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)` terminated with an error exit status (1)

Command executed:

  # program CollectQualityYieldMetrics to get numbers of bases that pass a base quality score 30 threshold
  # program CollectInsertSizeMetrics to get mean insert size

  picard CollectMultipleMetrics          I=NA12878-chr14-AKT1.bam         O=NA12878-chr14-AKT1         ASSUME_SORTED=true         FILE_EXTENSION=".txt"         PROGRAM=null         PROGRAM=CollectQualityYieldMetrics         PROGRAM=CollectInsertSizeMetrics         METRIC_ACCUMULATION_LEVEL=null         METRIC_ACCUMULATION_LEVEL=ALL_READS

Command exit status:
  1

Command output:
  (empty)

Command error:
                                clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG}

  QUIET=Boolean                 Whether to suppress job-summary info on System.err.  Default value: false. This option can
                                be set to 'null' to clear the default value. Possible values: {true, false}

  VALIDATION_STRINGENCY=ValidationStringency
                                Validation stringency for all SAM files read by this program.  Setting stringency to
                                SILENT can improve performance when processing a BAM file in which variable-length data
                                (read, qualities, tags) do not otherwise need to be decoded.  Default value: STRICT. This
                                option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT,
                                SILENT}

  COMPRESSION_LEVEL=Integer     Compression level for all compressed files created (e.g. BAM and VCF).  Default value: 5.
                                This option can be set to 'null' to clear the default value.

  MAX_RECORDS_IN_RAM=Integer    When writing files that need to be sorted, this will specify the number of records stored
                                in RAM before spilling to disk. Increasing this number reduces the number of file handles
                                needed to sort the file, and increases the amount of RAM needed.  Default value: 500000.
                                This option can be set to 'null' to clear the default value.

  CREATE_INDEX=Boolean          Whether to create an index when writing VCF or coordinate sorted BAM output.  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  CREATE_MD5_FILE=Boolean       Whether to create an MD5 digest for any BAM or FASTQ files created.    Default value:
                                false. This option can be set to 'null' to clear the default value. Possible values:
                                {true, false}

  REFERENCE_SEQUENCE=File
  R=File                        Reference sequence file.  Default value: null.

  GA4GH_CLIENT_SECRETS=String   Google Genomics API client_secrets.json file path.  Default value: client_secrets.json.
                                This option can be set to 'null' to clear the default value.

  USE_JDK_DEFLATER=Boolean
  USE_JDK_DEFLATER=Boolean      Use the JDK Deflater instead of the Intel Deflater for writing compressed output  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  USE_JDK_INFLATER=Boolean
  USE_JDK_INFLATER=Boolean      Use the JDK Inflater instead of the Intel Inflater for reading compressed input  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  OPTIONS_FILE=File             File of OPTION_NAME=value pairs.  No positional parameters allowed.  Unlike command-line
                                options, unrecognized options are ignored.  A single-valued option set in an options file
                                may be overridden by a subsequent command-line option.  A line starting with '#' is
                                considered a comment.  Required.

  R is not installed on this machine. It is required for creating the chart.

Work dir:
  /Users/kanwals/UMCCR/git/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6/work/fb/3ceb6f55e31066c7e7c14eea189b43

Tip: you can try to figure out what's wrong by changing to the process work dir and showing the script file named `.command.sh`
Error executing process > 'picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)'

Caused by:
  Process `picard_collect_multiple_metrics_bam (NA12878-chr14-AKT1)` terminated with an error exit status (1)

Command executed:

  # program CollectQualityYieldMetrics to get numbers of bases that pass a base quality score 30 threshold
  # program CollectInsertSizeMetrics to get mean insert size

  picard CollectMultipleMetrics          I=NA12878-chr14-AKT1.bam         O=NA12878-chr14-AKT1         ASSUME_SORTED=true         FILE_EXTENSION=".txt"         PROGRAM=null         PROGRAM=CollectQualityYieldMetrics         PROGRAM=CollectInsertSizeMetrics         METRIC_ACCUMULATION_LEVEL=null         METRIC_ACCUMULATION_LEVEL=ALL_READS

Command exit status:
  1

Command output:
  (empty)

Command error:
                                clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG}

  QUIET=Boolean                 Whether to suppress job-summary info on System.err.  Default value: false. This option can
                                be set to 'null' to clear the default value. Possible values: {true, false}

  VALIDATION_STRINGENCY=ValidationStringency
                                Validation stringency for all SAM files read by this program.  Setting stringency to
                                SILENT can improve performance when processing a BAM file in which variable-length data
                                (read, qualities, tags) do not otherwise need to be decoded.  Default value: STRICT. This
                                option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT,
                                SILENT}

  COMPRESSION_LEVEL=Integer     Compression level for all compressed files created (e.g. BAM and VCF).  Default value: 5.
                                This option can be set to 'null' to clear the default value.

  MAX_RECORDS_IN_RAM=Integer    When writing files that need to be sorted, this will specify the number of records stored
                                in RAM before spilling to disk. Increasing this number reduces the number of file handles
                                needed to sort the file, and increases the amount of RAM needed.  Default value: 500000.
                                This option can be set to 'null' to clear the default value.

  CREATE_INDEX=Boolean          Whether to create an index when writing VCF or coordinate sorted BAM output.  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  CREATE_MD5_FILE=Boolean       Whether to create an MD5 digest for any BAM or FASTQ files created.    Default value:
                                false. This option can be set to 'null' to clear the default value. Possible values:
                                {true, false}

  REFERENCE_SEQUENCE=File
  R=File                        Reference sequence file.  Default value: null.

  GA4GH_CLIENT_SECRETS=String   Google Genomics API client_secrets.json file path.  Default value: client_secrets.json.
                                This option can be set to 'null' to clear the default value.

  USE_JDK_DEFLATER=Boolean
  USE_JDK_DEFLATER=Boolean      Use the JDK Deflater instead of the Intel Deflater for writing compressed output  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  USE_JDK_INFLATER=Boolean
  USE_JDK_INFLATER=Boolean      Use the JDK Inflater instead of the Intel Inflater for reading compressed input  Default
                                value: false. This option can be set to 'null' to clear the default value. Possible
                                values: {true, false}

  OPTIONS_FILE=File             File of OPTION_NAME=value pairs.  No positional parameters allowed.  Unlike command-line
                                options, unrecognized options are ignored.  A single-valued option set in an options file
                                may be overridden by a subsequent command-line option.  A line starting with '#' is
                                considered a comment.  Required.

  R is not installed on this machine. It is required for creating the chart.

Work dir:
  /Users/kanwals/UMCCR/git/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6/work/fb/3ceb6f55e31066c7e7c14eea189b43

Tip: you can try to figure out what's wrong by changing to the process work dir and showing the script file named `.command.sh`

WARN: Graphviz is required to render the execution DAG in the given format -- See http://www.graphviz.org for more info.

I believe the error in this traceline is here:
 R is not installed on this machine. It is required for creating the chart.

The pipeline internally uses docker container npm-sample-qc:latest  (ID:810f383096bb) that is expected to contain all dependencies (including R) for the pipeline. Is this understanding correct? or this is expected to be tackled separately?

Could you show the .command.log from the picard step ( in /work/fb/) directory

There isn't no log file in work/fb/ directory. There only exists a soft link for input bam file.
~/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6/work/fb/3ceb6f55e31066c7e7c14eea189b43$ l
total 0
lrwxr-xr-x 1 kanwals 111 Nov 14 11:18 NA12878-chr14-AKT1.bam -> /Users/kanwals/UMCCR/git/NPM-sample-qc/tests/NA12878-chr14-AKT1_1000genomes-dragen-3.7.6/NA12878-chr14-AKT1.bam

Sorry that i didn't pick the right subfolder. Could you look into your work directory and find the log related to Picard step. That would help to troubleshoot.

**********
********** For more information, please see:
********** https://github.com/broadinstitute/picard/wiki/Command-Line-Syntax-Transition-For-Users-(Pre-Transition)
**********
********** The command line looks like this in the new syntax:
**********
**********    CollectMultipleMetrics -I NA12878-chr14-AKT1.bam -O NA12878-chr14-AKT1 -ASSUME_SORTED true -FILE_EXTENSION .txt -PROGRAM null -PROGRAM CollectQualityYieldMetrics -PROGRAM CollectInsertSizeMetrics -METRIC_ACCUMULATION_LEVEL null -METRIC_ACCUMULATION_LEVEL ALL_READS
**********

INFO	2022-11-14 00:25:09	RExecutor	Executing R script via command: Rscript /tmp/script5008846063550469075.R
00:25:09.371 WARN  LegacyCommandLineArgumentParser - Hidden arguments are always printed in LegacyCommandLineArgumentParser
USAGE: CollectMultipleMetrics [options]

Documentation: http://broadinstitute.github.io/picard/command-line-overview.html#CollectMultipleMetrics

Collect multiple classes of metrics. This 'meta-metrics' tool runs one or more of the metrics collection modules at the
same time to cut down on the time spent reading in data from input files. For each PROGRAM, the tool produces outputs.
The valid values for PROGRAM and the output that would be generated by it are listed in the documentation of the PROGRAM
argument.
Currently all programs are run with default options and fixed output extensions, but this may become more flexible in
future. Specifying a reference sequence file is required.

Note: Metrics labeled as percentages (PCT_*) are actually expressed as fractions!

Usage example (all modules on by default):

java -jar picard.jar CollectMultipleMetrics \
I=input.bam \
O=multiple_metrics \
R=reference_sequence.fasta

Usage example (two modules only):
java -jar picard.jar CollectMultipleMetrics \
I=input.bam \
O=multiple_metrics \
R=reference_sequence.fasta \
PROGRAM=null \
PROGRAM=QualityScoreDistribution \
PROGRAM=MeanQualityByCycle

Version: 2.27.0

Options:

--help
-h                            Displays options specific to this tool.

--stdhelp
-H                            Displays options specific to this tool AND options common to all Picard command line
                              tools.

--version                     Displays program version.

INPUT=File
I=File                        Input SAM or BAM file.  Required.

ASSUME_SORTED=Boolean
AS=Boolean                    If true (default), then the sort order in the header file will be ignored.  Default value:
                              true. This option can be set to 'null' to clear the default value. Possible values: {true,
                              false}

STOP_AFTER=Integer            Stop after processing N reads, mainly for debugging.  Default value: 0. This option can be
                              set to 'null' to clear the default value.

OUTPUT=String
O=String                      Base name of output files.  Required.

METRIC_ACCUMULATION_LEVEL=MetricAccumulationLevel
LEVEL=MetricAccumulationLevel The level(s) at which to accumulate metrics.  Default value: [ALL_READS]. This option can
                              be set to 'null' to clear the default value. Possible values: {ALL_READS, SAMPLE, LIBRARY,
                              READ_GROUP} This option may be specified 0 or more times. This option can be set to 'null'
                              to clear the default list.

FILE_EXTENSION=String
EXT=String                    Append the given file extension to all metric file names (ex.
                              OUTPUT.insert_size_metrics.EXT). None if null  Default value: null.

PROGRAM=Program               Set of metrics programs to apply during the pass through the SAM file.  Default value:
                              [CollectAlignmentSummaryMetrics, CollectBaseDistributionByCycle, CollectInsertSizeMetrics,
                              MeanQualityByCycle, QualityScoreDistribution]. This option can be set to 'null' to clear
                              the default value. Possible values: {
                              CollectAlignmentSummaryMetrics (Produces a summary of alignment metrics from a SAM or BAM
                              file.</b>  Creates output with ".alignment_summary_metrics, .read_length_histogram.pdf"
                              appended to OUTPUT.)
                              CollectInsertSizeMetrics (Collect metrics about the insert size distribution of a
                              paired-end library. Creates output with ".insert_size_metrics, .insert_size_histogram.pdf"
                              appended to OUTPUT.)
                              QualityScoreDistribution (Chart the distribution of quality scores.  Creates output with
                              ".quality_distribution_metrics, .quality_distribution.pdf" appended to OUTPUT.)
                              MeanQualityByCycle (Collect mean quality by cycle.Creates output with
                              ".quality_by_cycle_metrics, .quality_by_cycle.pdf" appended to OUTPUT.)
                              CollectBaseDistributionByCycle (Chart the nucleotide distribution per cycle in a SAM or
                              BAM fileCreates output with ".base_distribution_by_cycle_metrics,
                              .base_distribution_by_cycle.pdf" appended to OUTPUT.)
                              CollectGcBiasMetrics (Collect metrics regarding GC bias. Creates output with
                              ".gc_bias.detail_metrics, .gc_bias.summary_metrics, .gc_bias.pdf" appended to OUTPUT.)
                              RnaSeqMetrics (Produces RNA alignment metrics for a SAM or BAM file.  Creates output with
                              ".rna_metrics, .rna_coverage.pdf" appended to OUTPUT.)
                              CollectSequencingArtifactMetrics (Collect metrics to quantify single-base sequencing
                              artifacts.  Creates output with ".bait_bias_detail_metrics, .bait_bias_summary_metrics,
                              .pre_adapter_detail_metrics, .pre_adapter_summary_metrics, .error_summary_metrics"
                              appended to OUTPUT.)
                              CollectQualityYieldMetrics (Collect metrics about reads that pass quality thresholds and
                              Illumina-specific filters.  Creates output with ".quality_yield_metrics" appended to
                              OUTPUT.)
                              } This option may be specified 0 or more times. This option can be set to 'null' to clear
                              the default list.

INTERVALS=File                An optional list of intervals to restrict analysis to. Only pertains to some of the
                              PROGRAMs. Programs whose stand-alone CLP does not have an INTERVALS argument will silently
                              ignore this argument.  Default value: null.

DB_SNP=File                   VCF format dbSNP file, used to exclude regions around known polymorphisms from analysis by
                              some PROGRAMs; PROGRAMs whose CLP doesn't allow for this argument will quietly ignore it.
                              Default value: null.

REF_FLAT=File                 Gene annotations in refFlat form.  Format described here:
                              http://genome.ucsc.edu/goldenPath/gbdDescriptionsOld.html#RefFlat  Default value: null.

IGNORE_SEQUENCE=String        If a read maps to a sequence specified with this option, all the bases in the read are
                              counted as ignored bases.  Default value: null. This option may be specified 0 or more
                              times.

INCLUDE_UNPAIRED=Boolean
UNPAIRED=Boolean              Include unpaired reads in CollectSequencingArtifactMetrics. If set to true then all paired
                              reads will be included as well - MINIMUM_INSERT_SIZE and MAXIMUM_INSERT_SIZE will be
                              ignored in CollectSequencingArtifactMetrics.  Default value: false. This option can be set
                              to 'null' to clear the default value. Possible values: {true, false}

EXTRA_ARGUMENT=String         extra arguments to the various tools can be specified using the following format::: where
                              is one of the programs specified in PROGRAM, and  are the argument and value that you'd
                              like to specify as you would on the command line. For example, to change the
                              HISTOGRAM_WIDTH in CollectInsertSizeMetrics to 200, use:
                              "EXTRA_ARGUMENT=CollectInsertSizeMetrics::HISTOGRAM_WIDTH=200"
                              or, in the new parser:--EXTRA_ARGUMENT "CollectInsertSizeMetrics::--HISTOGRAM_WIDTH 200"
                              (Quotes are required to avoid the shell from separating this into two arguments.) Note
                              that the following arguments cannot be modified on a per-program level: INPUT,
                              REFERENCE_SEQUENCE, ASSUME_SORTED, and STOP_AFTER. Providing them in an EXTRA_ARGUMENT
                              will _not_ result in an error, but they will be silently ignored.   Default value: null.
                              This option may be specified 0 or more times.

TMP_DIR=File                  One or more directories with space available to be used by this program for temporary
                              storage of working files  Default value: null. This option may be specified 0 or more
                              times.

VERBOSITY=LogLevel            Control verbosity of logging.  Default value: INFO. This option can be set to 'null' to
                              clear the default value. Possible values: {ERROR, WARNING, INFO, DEBUG}

QUIET=Boolean                 Whether to suppress job-summary info on System.err.  Default value: false. This option can
                              be set to 'null' to clear the default value. Possible values: {true, false}

VALIDATION_STRINGENCY=ValidationStringency
                              Validation stringency for all SAM files read by this program.  Setting stringency to
                              SILENT can improve performance when processing a BAM file in which variable-length data
                              (read, qualities, tags) do not otherwise need to be decoded.  Default value: STRICT. This
                              option can be set to 'null' to clear the default value. Possible values: {STRICT, LENIENT,
                              SILENT}

COMPRESSION_LEVEL=Integer     Compression level for all compressed files created (e.g. BAM and VCF).  Default value: 5.
                              This option can be set to 'null' to clear the default value.

MAX_RECORDS_IN_RAM=Integer    When writing files that need to be sorted, this will specify the number of records stored
                              in RAM before spilling to disk. Increasing this number reduces the number of file handles
                              needed to sort the file, and increases the amount of RAM needed.  Default value: 500000.
                              This option can be set to 'null' to clear the default value.

CREATE_INDEX=Boolean          Whether to create an index when writing VCF or coordinate sorted BAM output.  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

CREATE_MD5_FILE=Boolean       Whether to create an MD5 digest for any BAM or FASTQ files created.    Default value:
                              false. This option can be set to 'null' to clear the default value. Possible values:
                              {true, false}

REFERENCE_SEQUENCE=File
R=File                        Reference sequence file.  Default value: null.

GA4GH_CLIENT_SECRETS=String   Google Genomics API client_secrets.json file path.  Default value: client_secrets.json.
                              This option can be set to 'null' to clear the default value.

USE_JDK_DEFLATER=Boolean
USE_JDK_DEFLATER=Boolean      Use the JDK Deflater instead of the Intel Deflater for writing compressed output  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

USE_JDK_INFLATER=Boolean
USE_JDK_INFLATER=Boolean      Use the JDK Inflater instead of the Intel Inflater for reading compressed input  Default
                              value: false. This option can be set to 'null' to clear the default value. Possible
                              values: {true, false}

OPTIONS_FILE=File             File of OPTION_NAME=value pairs.  No positional parameters allowed.  Unlike command-line
                              options, unrecognized options are ignored.  A single-valued option set in an options file
                              may be overridden by a subsequent command-line option.  A line starting with '#' is
                              considered a comment.  Required.

R is not installed on this machine. It is required for creating the chart.

@mhebrard - did you have a chance to look into this?

@skanwal - a few notes

Platform issue is a warning, so it should not be a problem, I also see the same messag in successful runs
I am surprised to see docker pull logs in the task of picard.
I am able to run the workflow v0.7 without issue on my Mac (M1 chip)

It seems to me an issue with your docker installation or configuration.
May I know why you had RAM limitation in a previous issue and do you have any disk limitation for docker on your machine ?

May I know why you had RAM limitation in a previous issue

I won't say it's a limitation. Docker, by default assigns limited resources (cpu, mem) to the processes. It seemed 2GB (the default docker memory) wasn't enough for the pipeline so I bumped it up a bit.

do you have any disk limitation for docker on your machine

No. Also, I use docker regularly on this machine for other work and haven't experienced any issues.

Hi @mhebrard
Wanted to let you know that I tried testing the latest release code and workflow completes successfully with test data.
Not sure what was causing the issue before but closing this as we don't get the same error with updated pipeline.


🚧Start process of implementing Fluent Assertions

I have done the items below . . .

[X] I have updated the title by replacing the '<title>' section.

Description
Start the process of implementing the fluent assertions library.
The goal here is to at a minimum, convert at least 1 unit test file to use fluent assertions for every issue that is done.
This will push toward getting fluent assertions throughout all of the unit tests at a decent pace.
Acceptance Criteria
This issue is finished when:

[x] Add the NuGet package FluentAssertions to unit test project
[x] ~Refactor the files below:~

[x] ~DisposeTexturesReactableTests.cs - 34  lines~
[x] ~KeyboardStateReactableTests.cs - 33 lines~
[x] ~MouseButtonReactableTests.cs - 36  lines~
[x] ~MousePositionReactableTests.cs - 35 lines~
[x] ~MouseWheelReactableTests.cs - 36 lines~

[x] All unit tests pass

ToDo Items

[ ] Draft pull request created and linked to this issue
[X] Priority label added to issue (low priority, medium priority, or high priority)
[x] Issue linked to the proper project
[X] Issue linked to proper milestone

Issue Dependencies
No response
Related Work
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

No refactoring required.  The following test files not need any use of FluentAssertions

[x] ~DisposeTexturesReactableTests.cs - 34  lines~
[x] ~KeyboardStateReactableTests.cs - 33 lines~
[x] ~MouseButtonReactableTests.cs - 36  lines~
[x] ~MousePositionReactableTests.cs - 35 lines~
[x] ~MouseWheelReactableTests.cs - 36 lines~