ENH: allow one-hot encoded targets for loss="auto"

What does this PR implement?
It adds support for one-hot encoded targets when loss="auto". If the classifier has the attributed n_classes_ (which KerasClassifier.target_encoder_ provides by default), then loss="categorical_crossentropy" is provided.
Reference issues/PRs
#208 I guess.

This is great, good idea! A lot of my concerns are mitigated by the fact that:

It only works with pre-onhotted targets
If n_classes_ is absent, users will still get a NotImplementedError instead of possibly confusing results.

This PR still needs a test to catch when the user mis-specifies the number of output neurons.

This PR still needs a test to catch when the user mis-specifies the number of output neurons.

That is, to check for this ValueError?

Would you be open to, instead of raising the specific ValueError, allow the more general this task is not supported error below to be raised for `unsupported task of type 'multilabel-indicator', since we basically aren't sure that this is a one-hot problem?

Are you talking adding the message "loss='auto' is not supported for tasks of type 'multilabel-indicator'" to this ValueError?

I'm talking about a flow like this:

if loss == "auto":
  activation = self.model_.layers[-1].activation.__name__
  ...
  elif (
      self.target_type_ == "multilabel-indicator"
      and
      hasattr(self, "n_classes_")
      and
      self.model_.outputs[0].shape[1] == self.n_classes_
      and
      activation in ("linear", "softmax")
  ):
      use_logits = activation == "linear"
      compile_kwargs["loss"] = CategoricalCrossentropy(from_logits=use_logits)
  else:
      raise NotImplementedError(
          f'`loss="auto"` is not supported for tasks of type {self.target_type_}.'
          " Instead, you must explicitly pass a loss function, for example:"
          '\n   clf = KerasClassifier(..., loss="categorical_crossentropy")'
      )

Basically, we check if the combination of the target-type and model outputs indicate with high certainty that this is a run of the mill multiclass problem with one-hot encoded labels and if not, we tell the user that we don't know how to handle this type of target (which would then be classified as `multilabel-indicator').

I think checks for the n_classes_ attribute is enough, especially if the number of output nodes is the number of classes. I also think that's simpler to document and for the users to understand. I think as a user, I'd rather see a documentation page explaining what activation functions to use.

This use case:
def get_model(compile):
    model = keras.Sequential(
        [
            keras.Input((num_classes,)),
            keras.layers.Dense(num_classes, activation="relu"),
            keras.layers.Dense(num_classes, activation="sigmoid"),
        ]
    )
    if compile:
        model.compile(loss="binary_crossentropy")
    return model

This is used when each class is independent and there can be more than 1 class per label, for example to characterize sentiment in text or movie genres.

Full example code on fc9e7ee
import numpy as np
from scikeras.wrappers import KerasClassifier
from tensorflow import keras

num_classes = 3
n_samples = 10000

y = np.random.randint(low=0, high=2, size=(n_samples, num_classes))
X = y

def get_model(compile):
    model = keras.Sequential(
        [
            keras.Input((num_classes,)),
            keras.layers.Dense(num_classes, activation="relu"),
            keras.layers.Dense(num_classes, activation="sigmoid"),
        ]
    )
    if compile:
        model.compile(loss="binary_crossentropy")
    return model

m1 = get_model(True)
m1.fit(X, y, epochs=10)

m2 = KerasClassifier(get_model, model__compile=False, epochs=10).fit(X, y)
assert m2.model_.loss == "categorical_crossentropy"

Even worse than an error, there is no error, SciKeras silently chooses "categorical_crossentropy", which is wrong for this problem, resulting in no / bad learning with no errors and no way to really tell what happened based on the output (it looks fine in terms of shape, dtype and being binary values, it's just a bunch of garbage).
I'm not sure we should support this use case via loss="auto" (although MLPClassifier does and our LabelEncoder does as well, so perhaps we should support it here), but I am sure we should not assume we can use "categorical_crossentropy" for this problem.

Why not ensure that one-hot encoded labels are passed? The target encoder should probably do that verification.

What do you mean by ensure that one-hot labels are passed? What if LabelEncoder gets non one-hot labels? If loss="auto", how is it supposed to do in this situation? Currently, it does nothing, which I think is the right behavior.

Maybe it'd be better to raise an error and provide a some information on why a user might not want to set loss="categorical_crossentropy".

Maybe it'd be better to raise an error and provide a some information on why a user might not want to set loss="categorical_crossentropy".

Where would this error be raised?
Am I understanding correctly that you feel that this extra bit of introspection into the model is too much, and that instead we should not support any of the use cases in https://github.com/adriangb/scikeras/pull/218#issuecomment-792828867?

I think a warning should be issued if SciKeras thinks loss="categorical_crossentropy" is appropriate. I think an error should be raised if a loss is not chosen. I think this would be an appropriate error message:

SciKeras could not automatically decide on the appropriate loss. To clear this error, set the loss to be any valid argument Keras accepts for losses (details at https://keras.io/api/losses).
The target type is "multilabel-indicator," there are 4 classes and the model has 4 output neurons. If there is only one class per example, loss="categorical_crossentropy" might be appropriate. If there are multiple classes per example, loss="binary_crossentropy" might be appropriate. For more detail, see XXX.

I think the last paragraph should be added dynamically.

Am I understanding correctly that you feel that this extra bit of introspection into the model is too much, and that instead we should not support any of the use cases in #218 (comment)?

Yes. I think the user knows their model/dataset better than SciKeras, and they're also a lot smarter than SciKeras. I think SciKeras should support them (provide links/good information) in guiding their choice.

I agree on the error message if no loss is chosen. We can discuss the specifics of what that error message should contain separately. I'd first like to settle on what is supported, that is, what you mean by SciKeras thinks loss="categorical_crossentropy" is appropriate.  How does Scikeras know that "categorical_crossentropy" is appropriate? Some pseudocode might help me understand, I'm sorry if I'm being slow to pick up.

def _compile(...):
    warning = ""
    loss = None
    if condition:
        loss = "binary_crossentropy"
    elif target_type == "multiclass-indicator" and hasattr(self, "n_classes_"):
        n_out = ...
        if n_out == self.n_classes_:
            warning = (
                "The target type is 'multilabel-indicator,' there are 4 classes and the model has 4 output neurons. "
                "If there is only one class per example, loss='categorical_crossentropy' might be appropriate. "
                "If there are multiple classes per example, loss='binary_crossentropy' might be appropriate. "
                "For more detail, see XXX."
            )
    if loss is None:
        err_msg = "loss='auto' failed to find a suitable loss. To clear this message, set loss to be a Keras loss ..."
        if len(warning):
            warning = f"\n\n{warning}"
        raise ValueError("{err_msg}{warning}")
    else:
        compile_kwargs["loss"] = loss

So the elif target_type == "multiclass-indicator" and hasattr(self, "n_classes_") does not set loss? This means that one-hot encoded targets would not be supported (although they will get a helpful error). I am okay with that; I think we can always add support later based on user feedback.

So the elif target_type == "multilabel-indicator" and hasattr(self, "n_classes_") does not set loss? This means that one-hot encoded targets would not be supported (although they will get a helpful error). I am okay with that; I think we can always add support later based on user feedback.

Yeah, that's too much I think. It requires too introspection, or might produce unexpected results for the user. Users are smarter than software, so let's let them decide. I see why now you were hesitant to support it.
This PR should be refactored. I could use some help there.

Users are smarter than software, so let's let them decide

👍

This PR should be refactored

If you don't mind me pushing to your fork, I can make the edits to have this reflect the intention in https://github.com/adriangb/scikeras/pull/218#issuecomment-792888899. How does that sound?

If you don't mind me pushing to your fork, I can make the edits to have this reflect the intention in #218 (comment). How does that sound?

Please. Thanks for asking. I have the box "allow edits by maintainers" checked for a reason.

@stsievert the basics are here, do you want to look at this here, or as part of #210 ?

Codecov Report

Merging #218 (a91cf21) into default-loss-auto (c7b567f) will increase coverage by 0.00%.
The diff coverage is 100.00%.

:exclamation: Current head a91cf21 differs from pull request most recent head 9142bdf. Consider uploading reports for the commit 9142bdf to get more accurate results

@@                Coverage Diff                 @@
##           default-loss-auto     #218   +/-   ##
==================================================
  Coverage              99.72%   99.72%
==================================================
  Files                      6        6
  Lines                    730      740   +10
==================================================
+ Hits                     728      738   +10
  Misses                     2        2

Impacted Files
Coverage Δ

scikeras/wrappers.py
99.75% <100.00%> (+0.25%)
:arrow_up:

scikeras/_saving_utils.py
98.85% <0.00%> (-1.15%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c7b567f...9142bdf. Read the comment docs.

@stsievert I think we're ready to merge this back into #208 and continue there if you are okay with that


⚠ SceneTime has degraded performance

In 20ea3ff, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1146 ms

Resolved: SceneTime performance has improved in 277bdba after 6 minutes.


ISPN-16328 [RESP] HRANDFIELD against non-existing hash with count sho…

https://issues.redhat.com/browse/ISPN-16328
…uld return empty array
We already have tests for it. I guess Lettuce converts null to an empty list.

Integrated into main, thanks @jabolina !


Use pro plan and switch AI model

Does anyone know how to use the Pro plan for search after signing in with a paid account and how to switch between different models? I’ve been using ai_model='gpt-4' in search, but the responses indicate 'gpt4': False. How can I confirm which model is actually being used?

You must use own=True argument while creating "Client" instance. Also different models may not work because i don't have a pro account so im unable to code it.

You must use own=True argument while creating "Client" instance. Also different models may not work because i don't have a pro account so im unable to code it.

can you share your contact for better response ?
in my country some people sell shared pro acc, I can share my cookies to you for better coding.

Here is my discord: `nightmare#3887

`nightmare#3887

https://i.imgur.com/UTjewvi.png
my name, mavia


Compile on Build / Compile on Save problems with TS 1.8 in Visual Studio 2015

Since I installed TS 1.8 I've started noticing that the compile step is not being executed in Visual Studio either on save or upon build when there are existing *.js files in place.
So if I'm working on viewModel.ts then I need to delete viewModel.js and trigger a Visual Studio build in order that a new viewModel.js is created.
My tsconfig.json looks like this:
{
  "compileOnSave": false,
  "compilerOptions": {
    "inlineSourceMap": true,
    "inlineSources": true,
    "noEmitOnError": true,
    "noImplicitAny": true,
    "preserveConstEnums": true,
    "removeComments": false,
    "sourceMap": false,
    "target": "es5"
  },
  "filesGlob": [
    "**/*.ts"
  ],
  "files": [
    // lots of files here - excluded for brevity
  ],
  "atom": {
    "rewriteTsconfig": true
  }
}

I wondered if it might be related to presence of the compileOnSave flag in tsconfig.json (which I believe is supported as of TS 1.8?).  However setting it to true and removing it entirely made no discernible differerence to behaviour.  (I tried closing and reopening the project in between changes in case there were caching issues but no change.)
So compileOnSave seems entirely broken (i.e. it never compiles on save) and compile on build only works if the existing js files are deleted.

the compileOnSave property support is not in a released version yet, @paulvanbrenk checked it in today :). it should be available for the 1.8.2.
Can you check your tools\options\Text Editor\TypeScript\Project\Compile on Save, do you have "Automatically compile TypeScript files that are not part of a project" checked? my guess is no, and that is why it is not working. with #2326, you should be able to turn it on using compileOnSave property in tsconfig.json.

Yup that solved it. Thanks @mhegazy.I'll look out for compileOnSave lighting up in when 1.8.2 ships.

@mhegazy - I'm guessing with the VS 2015 TypeScript 1.8 beta plugin I shouldn't expect compileOnSave to be working?
I've noticed that using Visual Studio that saving is generating the js files still (even though the flag is set in tsconfig.json)

@johnnyreilly Indeed, the compileOnSave option needs new Visual Studio bits.

Thanks @paulvanbrenk.

Is tsconfig.json and compileOnSave expected to work on VS 2013? I've installed the latest v1.8.2 of TypeScript for VS2013 and it's missing the "TypeScript JSON Configuration File" new item template for tsconfig.json, adding it manually doesn't disable the TypeScript property page on project properties and none of the configuration on tsconfig.json seems to be overriding either?

@mythz, tsconfig.json is not supported for Visual Studio 2013. only Visual Studio 2015.

Seems compileOnSave are not executing same path as VS project root, because out is generating on different path when i do build respective save

@codler can you share your project?

@codler which version of TypeScript? We've fixed issues in that area.

@paulvanbrenk I can repro colder's issue on <IP_ADDRESS>.

@hcapp01 can you share a repro project.

@mhegazy
I created a minimum repro below. main.js is output to two different path.
https://github.com/hcapp01/tsrepro

@hcapp01 change out to outFile in your tsconfig.json file

@paulvanbrenk that works. thanks.

@mhegazy, do you know what the status of this is?
I'm having trouble getting compile-on-save working. This is the setup I have:
TS Version: 1.8.9 (says <IP_ADDRESS> on the Visual Studio Help -> About page)
VS Version: VS 2015 Update 2
tsconfig:
{
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    "noImplicitAny": true,
    "sourceMap": true,
    "noEmitOnError": true
  },
  "compileOnSave": true
}

When I build the whole project via right-click -> Build, all the files are compiled correctly.
When I save a specific .ts file, the status bar says "Generation of 'myproject/foo.ts' complete. Remaining files still compiling." This just hangs, and the .js output never gets generated.
Things were working fine before I introduced .tsconfig.
I tried some of the suggested workarounds including turning off noEmitOnError and setting Automatically compile files that are not part of the project..., but nothing seems to work.

When I save a specific .ts file, the status bar says "Generation of 'myproject/foo.ts' complete. Remaining files still compiling." This just hangs, and the .js output never gets generated.

The message is somewthing i would expect. it just says it generated foo.ts and working on generating the rest in the background. but it should not hang.
how do you build from the commandline? tsc --p ? or you use a build driver? what happens when you run tsc --p <path to tsconfig.json> --listFiles do you see files that should not be there?

@mhegazy, I'm just using Visual Studio. The message "generated foo.js" is also wrong because the file is unchanged.
Sent from my iPhone
On 9 May 2016, at 00:12, Mohamed Hegazy <notifications<EMAIL_ADDRESS>wrote:
When I save a specific .ts file, the status bar says "Generation of 'myproject/foo.ts' complete. Remaining files still compiling." This just hangs, and the .js output never gets generated.
The message is somewthing i would expect. it just says it generated foo.ts and working on generating the rest in the background. but it should not hang.
how do you build from the commandline? tsc --p ? or you use a build driver? what happens when you run tsc --p  --listFiles do you see files that should not be there?

You are receiving this because you commented.
Reply to this email directly or view it on GitHubhttps://github.com/Microsoft/TypeScript/issues/6782#issuecomment-217751909

Given the language semantics, generating one file might not be sufficient to get correct output, e.g. Const. enums changes, namespaces, etc.. In VS when saving a file, the file will be generated, then all other files in the project will be generated in the background one at a time. This should end at sometime though :) so what u are seeing seems like a bug.

i was seeing something similar.  i believe that unloading the project and reloading it seems to have fixed the compile on save that i added to tsconfig.json.  maybe it doesn't take effect until the project is reloaded?

& hello again @mhegazy :smile:

it seems to have fixed the compile on save that i added to tsconfig.json.

This looks like a bug to me. @paulvanbrenk thoughts?

@cmichaelgraham do you mind filing another issue for this?

and hello @cmichaelgraham, good to see!

Not sure, are the other settings in the tsconfig.json picked up?

Here's what I don't get: it sometimes works fine and others it doesn't!
I can't for the life of me figure out what I'm doing right or wrong when, or if I even have any influence on this at all. It's almost more frustrating to have it work "sometimes" than to just never work.
 Today, it simply doesn't work so I am back to the habit of hitting "Rebuild" every time I make the tiniest change. Please tell me you've found a better temporary workflow/workaround until this is fixed!!!
But yesterday it was all unicorns and rainbows. Everything was flowing beautifully in the same solution, same IDE, same computer. No idea what changed. If it works sometimes, maybe there's a tweak to get it to work always?

# Please share your workarounds
I guess this problem has been around for a while now and like me, if you're still pushing through you must have come up with a pattern, habit, workflow, or workaround that is getting you through each day until this is fixed. Mine is to "rebuild" the whole solution every time I make the tiniest change to any .ts file. Surely someone has come up with a better way. Please do tell!

We found an issue with compile on save and tsconfig.json files, that depended on the order we processed files, which is not always the same. This fix is part of VS 2015 Update 3 [0].
[0] I can't tell you when that will be released, but the RC release has other TypeScript issues, so don't install that.

I installed the Update 3 RC and it has helped with a lot of other problems. Most vitally, it made the .tfignore file work, which I absolutely need when committing lots of small typescript files to source control and wanting to ignore the transpiled .js and .map.js files.

I have very similar issues. Everything compiles correctly, but it takes a very long time, and sometimes randomly flakes out. Wasn't like this with the previous version of TSC.

@gleno this is an old issue. do you mind filing a new issue, sharing more details about what you are seeing, what version of VS you are using what version of TS, and a project to help investigate the issue.

I'm using VS 2015 Update 3 and are experiencing a very similar issue. The typescript compiler seems to only work when I do a build. However, if I do a build, and no server side code has changed, the typescript code will not compile.

I've recovered my problem by installing an older version of node tools. If
you have just updated, this may be your issue.
On Thu, 28 Jul 2016 at 23:42, Mike Lunn<EMAIL_ADDRESS>wrote:

I'm using VS 2015 Update 3 and are experiencing a very similar issue. The
typescript compiler seems to only work when I do a build. However, if I do
a build, and no server side code has changed, the typescript code will not
compile.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/TypeScript/issues/6782#issuecomment-236018970,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC1DQsox5RL6iYUR4I_LRzfPGrqVoMaBks5qaRRLgaJpZM4HQq5h
.

@mikelunn As Mohamed mentioned this is a very old issue, can you file a new issue with a sample project. And diagnostic build logs. Thanks

I had the same problem in my visual studio update 3.
It's seems that widows didn't get my typescript 1.8 version, but hold the 1.0 version. so I changed it manually. Now it's work. on saving a .ts file, all my project being transpiled correctly.
For more info:  vs2015-adding-watch-true-to-tsconfig-json-causing-jserrorscriptexception-0x/39022452#39022452

In typescript 2, you need to delete "outDir" in your tsconfig. Works for me.


fix bug if calling load() with a single source

source could be {source, mimeType}

Coverage decreased (-0.2%) to 69.922% when pulling 711e0ff8403de2cf9339ee356bf8ff5cf8d3a4d9 on fix-load-single-source into efbacded402b6cc1872ea48f5c182ae0867f062f on master.

LGTM

Merged, thanks @tjenkinson


Add CITEseq postprocessing to QC report

Closes #336
This PR updates the QC report to have a bit more information about CITEseq post-processing. There wasn't much that really needed to be done it seemed in the end? I've done where what I think is the minimum we need (note one TODO comment in the qc_report.rmd file which is a question for reviewers!), but we could add more details, for example, maybe the number of cells removed based on RNA info vs. ADT info. Any recommendations for other stats to include would be helpful! Tagging a couple people for review to crowd source any other ideas for info to include.
While I was here, I also fixed a couple things..

The scpca_filter column is present in both _filtered and _processed RDS files, so we remove a bit of wrangling
I cleaned up a couple spacing around parentheses for styling
I tweaked, in line 444 of qc_report.rmd, a phrase that I think should not be there - I deleted the bit "calculated by miQC", since we then proceed to explain that maybe it wasn't calculated by miQC! Was this a good move on my part?

When testing this, I found that running nextflow with -resume did not want to use the updated rmds (is the template directory not copied over fresh, I wonder? any insights as to why nextflow didn't want to use? i wasn't pulling anything fresh from git, just running main.nf...). So, I just locally knitted with whatever package versions I have, which is maybe why we have the warning on top, unless we do need to update the mutate() code there. Local knitting is definitely responsible for the title though! Here's the report now:
qc_report.html.zip

So I took a look at this and I have some thoughts which may be kind of crazy, so you can tell me if they are not feasible at this time. You all may disagree with me but... Based on my understanding of the changes that have taken place, for any library that contains CITE-seq data we have now filtered on both the RNA and the ADT counts so that the final processed.rds file contains only cells that pass both of those thresholds? So that means only those cells are included in normalization and PCA/UMAP?
If the above is true and we don't want to change that then the changes I'm about to propose will not be as applicable...
However, I can very much argue for having processed.rds files that contain the cells that have been filtered just on RNA. The CITE-seq library is handled separately from the gene expression library, so there could be various reasons why you throw out a cell that does poorly in CITE-seq but want to keep that cell to look at it's gene expression. So if users want to look at these samples regardless of CITE-seq, then they are going to lose all of those cells that have good quality RNA data. I noticed this because of the miQC plot where there are a lot of cells getting labeled as remove that I would want to keep.
Because of that, I think it's important to separate the RNA and the ADT filtering here and actually move all of the mention of ADT filtering and downstream plots that would incorporate ADT filtering to the CITE-seq specific section. Then you show the data as a result of just analyzing the RNA data vs. RNA plus ADT analysis. Again, this may be an unpopular opinion and I know it's later in the game, but I am worried about losing information for RNA that we want to keep.

@allyhawkins I don't think this is "crazy" at all! You made a crux point here -

So if users want to look at these samples regardless of CITE-seq, then they are going to lose all of those cells that have good quality RNA data. I noticed this because of the miQC plot where there are a lot of cells getting labeled as remove that I would want to keep.

My immediate question now is whether this implies we need a 4th SCE export. This may not be necessary since there's a discard column in the CITE-seq colData that can be used to filter more cells out, but users would have to dig in themselves.

@allyhawkins I don't think this is "crazy" at all! You made a crux point here -

So if users want to look at these samples regardless of CITE-seq, then they are going to lose all of those cells that have good quality RNA data. I noticed this because of the miQC plot where there are a lot of cells getting labeled as remove that I would want to keep.

My immediate question now is whether this implies we need a 4th SCE export. This may not be necessary since there's a discard column in the CITE-seq colData that can be used to filter more cells out, but users would have to dig in themselves.

Memories... I feel like this was a discussion a while ago when we initially decided not to worry about ADT filtering at that time! But I agree 100% that we would not want to make this a third export.
I think one option is that we modify the scpca_filter to be more fine grained than keep and remove to reflect which components are considered "okay". The idea would be that we could add a remove_adt or something like that which could be easily filtered on without diving into the altExp, but would be kept in the processed data. We could then add a second plot (or update this one) to show which cells would be filtered by ADT data specifically.

My immediate question now is whether this implies we need a 4th SCE export. This may not be necessary since there's a discard column in the CITE-seq colData that can be used to filter more cells out, but users would have to dig in themselves.

I think my ideal scenario would be having a separate file that contains the ADT processed data that has been filtered and normalized using ADT counts rather than RNA. However, that means a lot of changes including on the actual portal end and I don't think we want to take that route, at least not right now.
In the mean time, I think your suggestion where we only filter on RNA counts and then include a separate column indicating if cells would be filtered using ADT counts would be sufficient. We would then need to add that to user facing documentation. We did a similar thing before the processed data even existed where we had a ccdl_filter column present in the filtered.rds files to suggest which cells to remove. So here we would do the same with the CITE-seq. This would allow us to make a separate plot showing filtering of both RNA + ADT in the CITE-seq section without actually removing any cells that are informative when it comes to RNA.

One other thought: we probably want UMAPs with the ADT expression! Maybe pick the 4 with the greatest variation and plot those?

#moreUMAPSmorebetter

And we're back for more QC report updates! I've made the following changes:

In post_process_sce.R, I now also calculate the most variable ADTs. I'm not sure about a modality-specific approach here, so I just did the same approach as for genes. I also stashed this in metadata as highly_variable_adts for later use in the QC report.

⚠ If we keep this strategy, we'll need to add this metadata variable to documentation as well.

In the QC report itself, I fixed a couple minor spacing spots and changed ~ -> vars() for faceting, since I was there.
In the QC report, I also added a section in the cite_qc.rmd for a UMAP of top 4 variable ADTs, using the vector that is now in the metadata, and I tweaked some plot size aspects for visibility.

I left one TODO here - currently all cells are being plotted, including those with NA logcounts. We could filter those cells out before plotting, but the points are so small that you don't really perceive the NA points anyways?

HTML - qc_report.html.zip

This should be ready for a new look! I've made the following changes:

Include a faceted plot of all the ADT/RNA combinations of filtering, again showing the miQC plot

I had some trouble here with glue::glue()! Note the printed statement that will end up being deleted but is here now for debugging... why doesn't glue::glue() print inside of the if? I played around with this a bunch, and found more generally that none of the glues inside of if blocks are printing.. Does anyone have ideas?!

I fixed a bug with adt output - much of the has_adt logic assumed has_processed is true, which is not a safe assumption! I updated in some spots to avoid this trap.
I added a ridgeplot into the cite report, currently living before the UMAPs. Here, I found that the chunk only wants to print out one plot (another confusing rmarkdown thing 🤷♀), so I ended up just using patchwork to ensure they are both printed.
Here's what the report currently looks like:
qc_report.html.zip

Thanks @jashapiro and @allyhawkins a lot for all your comments! I've responded to everything here, and we're moving right along. I've tested workflow changes as well.
At this point, this PR is getting ~too big. I suggest, unless there is a major problem, let's merge this in soon and if there are more smaller changes needed we can tackle them in a subsequent PR?

Here's the "final" version of the report for posterity -
qc_report.html.zip
Main notable change is that using coord_fixed() means the plot display area needs to be more explicitly sized, so facet labels aren't cut off. The cutting off could still happen, but you'd need a gene symbol that's longer than an Ensembl ID, which is not going to be very likely, and the benefit from coord_fixed() seemed greater.


menuSlideIn presentation style no longer works in 6.4.8

I have read the guidelines for contributing and I understand

[x] My issue is happening in the latest version of SideMenu (older versions are no longer maintained).
[X] My issue was not solved in the README.
[X] My issue can not be answered on stackoverflow.com.
[X] My issue is not a request for new functionality that I am unwilling to build and contribute with a pull request.
[?] My issue is reproducible in the demo project.

I raised a question on stack overflow and got no answers.
https://stackoverflow.com/questions/61457736/jonkykong-sidemenu-presentationstyle-stopped-working-after-upgrade-to-6-4-8
The demo seems to work however it instantiates the controllers in code where as my app binds the controllers from the storyboard as per the instructions in the README.  I think this subtle difference maybe affecting the result.
Describe the bug
I have the below code in my app and after upgrading to 6.4.8 it no longer takes effect.  Instead the app uses the default viewSlideOut presentation style.
class SideMenuViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Config options for the Slide in side menu
        SideMenuManager.default.leftMenuNavigationController?.presentationStyle = .menuSlideIn
        SideMenuManager.default.leftMenuNavigationController?.presentationStyle.onTopShadowOpacity = 1
      .....

I have also tried the following with no change.
SideMenuManager.default.leftMenuNavigationController?.settings.presentationStyle = .menuSlideIn
SideMenuManager.default.leftMenuNavigationController?.settings.presentationStyle.onTopShadowOpacity = 1

Finally I also tried moving this to the AppDelegate but also no change.
To Reproduce
See above code.
Expected behavior
menuSlideIn presentation style instead of viewSlideOut
Screenshots
N/A
Additional context
I tried rolling back to 6.4.0 however doing so results in circular reference errors in xcode.
I am at a stale mate, any assistance would be appreciated.

I'm facing this problem too.
More specifically,
When running with the simulator, the animation style working fine and I got the expected behavior (menu slide in style)
But when running with real device I only got the menu slide out style

So I just did a further test and the result is:
iPhone6: Work perfectly no flaw
iPhone XS MAX: the slide in animation become slide out
So this is a spec problems?

So I set the setting of SideMenu NavigationController 1 more time before present it and everything is fine

Thanks @nghiepvth.
It doesn't seem to matter what I do or which version of the simulator I use I can never get the presentation style to take effect.
I am setting the presentation style in the viewDidLoad of the root view controller for the SideMenuNavigationController.  This used to work but no longer works as of 6.4.8.
Can you please provide more details or sample code on how your setting this?  Are you subclassing the SideMenuNavigationController?  Are you a new user of this component or did this break for you too?

I had same issue and solved it by setting presentationStyle in SideMenuSettings and assign it to SideMenuNavigationController .
`func makeSettings() -> SideMenuSettings{
var settings = SideMenuSettings()
settings.allowPushOfSameClassTwice = false
settings.presentationStyle = .menuSlideIn
settings.statusBarEndAlpha = 0
return settings
}
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       guard let sideMenuNavigationController = segue.destination as? SideMenuNavigationController else { return }
        sideMenuNavigationController.settings = makeSettings()
}`

thanks @ajithkumark771, your solution solved the problem for me to.  Hopefully the author updates the docs.

@bludginozzie this is not a bug, but in fact how the life-cycle events are called by Apple. If you set the presentationStyle during viewDidLoad it is too late as it is after the transition has already initiated.
Two alternative solutions:
1. Set presentationStyle during the initialization of your SideMenu, not viewDidLoad:
class SideMenuTableViewController: UITableViewController {

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setup()
    }

    private func setup() {
        guard let sideMenuNavigationController = navigationController as? SideMenuNavigationController else { return }
        sideMenuNavigationController.presentationStyle = .menuSlideIn
    }

    // ...

}

2. Set presentationStyle/settings in prepareForSegue like the demo project does:
class MainViewController: UIViewController {

    // ...

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard let sideMenuNavigationController = segue.destination as? SideMenuNavigationController else { return }
        sideMenuNavigationController.settings = makeSettings()
    }

    // ...

I do not explicitly state that this should be done in viewDidLoad; however I do specify settings at the time of initialization of SideMenu.


A Few Requests

Really like the mod just Ender ore spawns a bit too common so I don't have much use for ender lillies and the mechanical miner block doesn't take durability on tools.
Also, you also think it would be possible to add support for ores from other mods for the Quantum Quarry? (Thermal, Mekanism, etc.)

you can add your own support after the next update, just waiting on some textures. The miner is meant to not take durability. You can tweak the ender ore in the config


yet another cleanup

Undefined name YL-E0602

The heck

Hahaha lol, deepsource fixes but that gitguardian not passed


Hello world

Please see https://github.com/microsoft/vcpkg/issues/30604 for how to report an issue.


Feature: Move comments when moving osfstorage file to a component

Purpose
Ensures that when an osfstorage file is moved from a parent project to a component (or between components), the comments on the file are still there.
Changes
If the file is getting moved to a different node, send a file_moved_node signal. When the signal is received, update all comments on that file with the new node.

Good to merge when the build passes.


feat: add RepairableBuilder

Build is currently failing because Repairable doesn't extend ItemMeta. A pr to Spigot has already been made to fix this, so we're blocked only by https://github.com/PaperMC/Paper/pull/7359. Once that's merged, this issue's build can be rerun to verify the build.

Said fix has been merged into Paper, so I'm triggering a rebuild.


Fix running tests out of a installed mujoco python package

This should fix running pytest --pyargs mujoco in an environment in which mujoco is installed not in editable mode.
Inspired from:

https://github.com/google-deepmind/mujoco/blob/680fb3e5ddbf21fb1e08877f2d03589ad01968ea/python/mujoco/usd/exporter_test.py#L62
https://github.com/google-deepmind/mujoco/blob/680fb3e5ddbf21fb1e08877f2d03589ad01968ea/python/mujoco/msh2obj_test.py#L57

Actually this will not work as https://github.com/google-deepmind/mujoco/tree/680fb3e5ddbf21fb1e08877f2d03589ad01968ea/python/mujoco/testdata and https://github.com/google-deepmind/mujoco/tree/680fb3e5ddbf21fb1e08877f2d03589ad01968ea/test/testdata are not the same directory.

Hold on, is the issue that we're not exporting some file/files in the wheel? If yes then presumably that's easy to fix?

Hold on, is the issue that we're not exporting some file/files in the wheel? If yes then presumably that's easy to fix?

Yes, the nutshell of the issue is that. The problem is that the Python MjSpec test access the model.xml in a folder that is not copied to the wheel. So the possible solutions I can think of are:

Duplicate the model.xml to the python testdata folder (easier, but you end up with duplicated files)
Copy the model.xml in the python testdata folder in the make_sdist.sh script

Which solution do you prefer?

To avoid regression of this kind, I opened https://github.com/google-deepmind/mujoco/pull/2163 (that should fail until this issue is fixed).

I don't think the Python tests should depend on files external to that directory. I think forking the model file into Python is the correct thing, duplication is fine in this case.
@saran-t WDYT?

Yeah fork the model into the test data dir.

Yeah fork the model into the test data dir.

Ok, I updated the PR to do that and modified the CI to catch future errors of this kind.

Hi @traversaro, I ran the CI, something is obviously wrong. Let me know if you think you've fixed this and I will rerun (requires manual retriggering by one of us)/

My bad, I introduced @hartikainen suggestions without double checking, let me fix that.

Let me know if you think you've fixed this and I will rerun (requires manual retriggering by one of us)/

Note to self: I did not realized that Actions run also on the fork, so the easiest option is to check there (in this case https://github.com/traversaro/mujoco/actions) instead of waiting for CI to be approved here (testing locally is obviously possible as well, but not straightforward w.r.t. to regular C++ with Python bindings projects due to themake_sdist.sh + pip install workflow instead of having a single command).

Ok, the CI seems to be green now, the PR is actually ready for review, thanks! @saran-t @yuvaltassa


add bacongobbler as a core maintainer

Just being snarky with the labels; please ignore. ^_^

@bacongobbler I think your name should be in second position in each list to maintain alphabetization :)

I was having a hard time comprehending that the list was in alphabetical order. Good catch! I'll fix that up.


sfdx force:source:retrieve -x manifest/package.xml crashing after upgrade to v7.170 : versions.map is not a function

Summary
Command sfdx force:source:retrieve -x manifest/package.xml crashes since I upgraded to sfdx v7.170
Steps To Reproduce:

I log in to my customer's production org
sfdx force:source:retrieve -x manifest/package.xml

Expected result
Should retrieve the Salesforce metadata
Actual result
% sfdx force:source:retrieve -x manifest/package.xml
ERROR running force:source:retrieve:  versions.map is not a function
Preparing retrieve request... done

System Information

Which shell/terminal are you using? (e.g. bash, zsh, powershell 5, powershell 7, cmd.exe, etc.) : zsh

% sfdx version --verbose --json
{
  "cliVersion": "sfdx-cli/7.170.0",
  "architecture": "darwin-x64",
  "nodeVersion": "node-v16.17.0",
  "pluginVersions": [
    "@mshanemc/plugin-streaming 1.1.7 (user)",
    "@mshanemc/sfdx-sosl 1.1.0 (user)",
    "@oclif/plugin-autocomplete 1.3.0 (core)",
    "@oclif/plugin-commands 2.2.0 (core)",
    "@oclif/plugin-help 5.1.12 (core)",
    "@oclif/plugin-not-found 2.3.1 (core)",
    "@oclif/plugin-plugins 2.1.0 (core)",
    "@oclif/plugin-update 3.0.0 (core)",
    "@oclif/plugin-version 1.1.2 (core)",
    "@oclif/plugin-warn-if-update-available 2.0.4 (core)",
    "@oclif/plugin-which 2.1.0 (core)",
    "@salesforce/lwc-dev-server 2.11.0 (user)",
    "alias 2.1.0 (core)",
    "apex 1.2.0 (core)",
    "auth 2.2.8 (core)",
    "community 2.0.1 (core)",
    "config 1.4.20 (core)",
    "custom-metadata 2.0.0 (core)",
    "data 2.1.2 (core)",
    "generator 2.0.2 (core)",
    "info 2.1.3 (core)",
    "limits 2.0.1 (core)",
    "org 2.2.3 (core)",
    "packaging 1.9.1 (core)",
    "schema 2.1.6 (core)",
    "signups 1.2.2 (core)",
    "source 2.0.15 (core)",
    "telemetry 2.0.0 (core)",
    "templates 55.1.0 (core)",
    "trust 2.0.4 (core)",
    "user 2.1.4 (core)",
    "@salesforce/sfdx-plugin-lwc-test 1.0.1 (core)",
    "salesforce-alm 54.8.1 (core)",
    "sfdmu 4.16.10 (user)",
    "sfdx-xxx-plugin 0.0.2 (link) /Users/rupert/xxx/sfdx-xxx-plugin",
    "sfpowerkit 5.0.0 (user)",
    "shane-sfdx-plugins 4.43.0 (user)"
  ],
  "osVersion": "Darwin 20.6.0",
  "shell": "zsh",
  "rootPath": "/Users/rupert/.local/share/sfdx/client/7.170.0-bd51991"
}

Additional information
Feel free to attach a screenshot.

Hey @AltiusRupert, I think this is a dup of https://github.com/forcedotcom/cli/issues/1687
If you set the apiVersion with sfdx config:set apiVersion=55.0 or SFDX_API_VERSION=50.0 sfdx ... do you get the same error?

OK, I've checked the other issue : same problem, your workaound works, I saw the issue was being fixed by Shane.
Thanks.

You may close this issue @cristiand391


No Color option

Any chance of getting a no colour option for the output. This really only bothers me with the Moon phase output, but in general a no colour option would be awesome.
I have tried the format?I option which inverts the colours but this still doesn't work with my colour scheme.

What about ?T?

Interesting. I've just learnt that you can't use images in comments
posted by mail. Really strange

Thanks, I'm sorry, I didn't actually see that option!


demo unable to attach or mount volumes，similar with https://github.com/fluid-cloudnative/fluid/issues/214

What is your environment(Kubernetes version, Fluid version, etc.)
k8s 1.16
fluid 0.6
Describe the bug
everything deployed is correct，but demo app can not be run correctly，214 is not fixed for now

and  fluid csi driver in the machine, is deploy done

What you expect to happen:
How to reproduce it
Additional Information

fixed by changed the install location of kubelet


fix: Ensure patch files are included in Docker environment during build

Motivation
Describe why this issue should be fixed and link to any relevant design docs, issues or other relevant items.
Change Summary
Describe the changes being made in 1-2 concise sentences.
Merge Checklist
Choose all relevant options below by adding an x now or at any time before submitting for review

[ ] PR title adheres to the conventional commits standard
[ ] PR has a changeset
[ ] PR has been tagged with a change label(s) (i.e. documentation, feature, bugfix, or chore)
[ ] PR includes documentation if necessary.
[ ] All commits have been signed

Additional Context
If this is a relatively large or complex change, provide more details here that will help reviewers

PR-Codex overview
This PR focuses on adding a new directory patches to the Docker image, running yarn install with specific options, and executing yarn postinstall.
Detailed summary

Added patches directory to Docker image
Ran yarn install with --frozen-lockfile --network-timeout 1800000
Executed yarn postinstall

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

🚀🚀🚀

Nice, thank you.


KeyError

analysis_config = CohortAnalysisConfiguration()
analysis_config.missing_implies_excluded = False
analysis_config.heuristic_strategy(threshold_HPO_observed_frequency=0.2)

analysis = configure_cohort_analysis(cohort, hpo, config=analysis_config)
from genophenocorr.model import FeatureType

feature = analysis.compare_by_variant_keys(variant_key1="12_114385563_114385563_G_A",variant_key2="12_114398675_114398675_G_T")
feature.summarize(hpo, PatientCategories.YES)

leads to
KeyError                                  Traceback (most recent call last)
File ~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3805, in Index.get_loc(self, key)
   [3804](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3804) try:
-> [3805](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3805)     return self._engine.get_loc(casted_key)
   [3806](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3806) except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas/_libs/hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas/_libs/hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: PatientCategory(cat_id=0, name=No, description=The patient does not belong to the group.)

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[20], [line 3](vscode-notebook-cell:?execution_count=20&line=3)
      [1](vscode-notebook-cell:?execution_count=20&line=1) from genophenocorr.model import FeatureType
----> [3](vscode-notebook-cell:?execution_count=20&line=3) feature = analysis.compare_by_variant_keys(variant_key1="12_114385563_114385563_G_A",variant_key2="12_114398675_114398675_G_T")
      [4](vscode-notebook-cell:?execution_count=20&line=4) feature.summarize(hpo, PatientCategories.YES)
...
   [3815](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3815)     #  InvalidIndexError. Otherwise we fall through and re-raise
   [3816](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3816)     #  the TypeError.
   [3817](https://file+.vscode-resource.vscode-cdn.net/Users/robin/PycharmProjects/genophenocorr/~/PycharmProjects/genophenocorr/gpc_venv/lib/python3.9/site-packages/pandas/core/indexes/base.py:3817)     self._check_indexing_error(key)

KeyError: PatientCategory(cat_id=0, name=No, description=The patient does not belong to the group.)

On the other hand, this worked
from genophenocorr.model import FeatureType

feature = analysis.compare_by_variant_key(variant_key="12_114385563_114385563_G_A",)
feature.summarize(hpo, PatientCategories.YES)

Therefore, the seems to be a bug in the first function

Hey @pnrobinson, I was going to take a look at this bug but I don't know which notebook you are running. Could you let me know so I can recreate and hopefully fix it? Thank you!

Closing because this bug is about APIs that were removed in the meantime.


ENH: Allow tool to run in a web browser

It'd be super cool if the tool ran in a web browser.
Drop (aligned) sequences and see it displayed.
This may be not worth the probably not quite insignificant effort though.
It would reduce barrier to entry significantly.

Agree vm!

Well, I know absolutely nothing about actually running python in the browser, but it should be possible to run the tool on a server and provide a web front end.
When I searched for it, I stumbled across cmd2web. (Coincidentally, it's from @ryanlayer who's also doing genetics.) I did not yet have time to take a closer look or even try it out.
With a web-based tool, there'd be a lot of interesting applications, e.g. linking from other tools to this one ("click here to see your data in sc2r") or providing on-the-fly conversion like I did for csv files with csv2svg4md.

Yes exactly, sorry, I didn't mean to run it in a browser like Nextclade does with web assembly - that'd be complicated.
With a server would be perfect. Actually it may be quite easy for you given your experience (for me it wouldn't :D )
On a server you could align with Nextalign for example, if fasta is not yet aligned.

Yesterday @zach-hensel pointed out that sc2rf can be run from a web browser through Google Colab, which is a modified version of Jupyter-Notebooks.
This approach can work quite nicely, as shown by ColabFold (also recommended by Zach).
I will try to set up a Collab Notebook soon and share the link here and in the README.


Build the agent with yocto dunfell 3.1 version (boost 1.72.0, cpprest 2.10.16 )

With Dunfell the iot-hub-device-update is not building due to wrong dependancies with boost version 1.72.0 and cpprest version  2.10.16.
It is the same with ubuntu 20.04 (boost version 1.71.0)
Here are the modifications to be able of building the agent on yocto dunfell

cpprest_find_openssl.cmake file (in cpprest source code) : replace
target_link_libraries(cpprest PRIVATE ${OPENSSL_LDFLAGS})
with
target_link_libraries(cpprest INTERFACE ${OPENSSL_LDFLAGS})

client-lite/CMakeLists.txt file : add
${Boost_LOG_LIBRARIES}
after
${Boost_LIBRARIES}

deliveryoptimization_sdk-config.cmake file : replace
find_dependency(Boost COMPONENTS filesystem system)
with
find_dependency(Boost COMPONENTS filesystem system regex random thread chrono atomic date_time

The three patches are in attachments
patch-adu.zip

@pierrickcurt When I try to build the agent in yocto dunfell, I get a couple of different error messages first (e.g. about an outdated git-url and branch names, that I have to update the bb-file format (recipes-azure-device-update/adu-agent-service/adu-agent-service.bb), that mtd-utils is not referenced in the swupdate file) before encountering an error about the ssl library - which I couldn't get around yet.
Assuming you passed all these, and even got it to build: It would be great to get a how-to on how you got around these errors - best would be a diff to the meta-layer provided in the downloads of this repo.

@pierrickcurt I've just created a repo for the meta-layer. It would be nice to have your version, which you got working for dunfell added there as branch: https://github.com/SimonSimCity/meta-azure-device-update
Also take a look at the other additions I did in the zeus branch - I guess some of them might be useful for you too.

@SimonSimCity can you push your wip dunfell branch on your repo ? Maybe  I can help you.

@pierrickcurt Thanks for providing you help! I've created a branch containing all the changes I did for dunfell: https://github.com/SimonSimCity/meta-azure-device-update/tree/dunfell
And here's the commands I run:
git clone --depth=1 -b dunfell git://git.yoctoproject.org/poky
git clone --depth=1 -b dunfell git://github.com/openembedded/meta-openembedded.git
git clone --depth=1 -b dunfell git://github.com/agherzan/meta-raspberrypi.git
git clone --depth=1 -b dunfell git://github.com/sbabic/meta-swupdate.git
git clone --depth=1 -b dunfell git://github.com/SimonSimCity/meta-azure-device-update

source poky/oe-init-build-env

bitbake-layers add-layer ../meta-openembedded/meta-oe
bitbake-layers add-layer ../meta-openembedded/meta-python
bitbake-layers add-layer ../meta-openembedded/meta-networking
bitbake-layers add-layer ../meta-openembedded/meta-multimedia
bitbake-layers add-layer ../meta-raspberrypi
bitbake-layers add-layer ../meta-swupdate
bitbake-layers add-layer ../meta-azure-device-update

cat >>conf/local.conf <<EOL

MACHINE = "raspberrypi3"

SDIMG_ROOTFS_TYPE = "ext4"
ENABLE_UART = "1"
RPI_USE_U_BOOT = "1"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
DISTRO_FEATURES_append = " systemd virtualization"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""

IMAGE_INSTALL_append = " azure-device-update"

ADUC_PRIVATE_KEY = "/home/yocto/project/priv.pem"
ADUC_PRIVATE_KEY_PASSWORD = "/home/yocto/project/priv.pass"

EOL

echo "TestPassword" > ../priv.pass
openssl genrsa -aes256 -passout file:../priv.pass -out ../priv.pem

bitbake core-image-base

You should get it already when trying to bitbake deliveryoptimization-agent.

I've now tried to apply the patches you provided in the branch dunfell-dev (see https://github.com/SimonSimCity/meta-azure-device-update/commit/f2b592d034e2d9df9d5f2217f1604471e1a70bc9) but without success. I am obviously using a different version than you because the patch for client-lite/CMakeLists.txt wasn't necessary in my case. Since you seem to have more experience in C than I (I have almost none ...) it would be nice if you could take a look at it. Maybe it's just as fast as taking a different commit-id as basis ... Looking forward to hear from you.

Our branch now includes the mentioned changes and I've proofed it working - check it out: https://github.com/munit-solutions/meta-azure-device-update/tree/dunfell
@kapetan Thanks for your help!


Full Sync not finishing?

This might be because so many people are trying to export from Omnivore right now, but I've made a couple of attempts at a full sync from omnivore and I don't appear to be getting all of the content.
I did also download the export directly from Omnivore so I could cross-check, and I'm definitely missing some stuff.
I'm not sure how to determine the progress of the sync, either!
Any tips to support a full sync would be appreciated!

Same here. Import starts but never finishes no new items were created.
When I start synchronization again, it says "Already synching ...".
Maybe the Omnivore API is already throttled/broken?


hactool.exe does not open

Everytime i click on it the cmd opens and closes immediatly(i have Python 2.7 and i have tried admin mode too) please help

How? I already have the keys  files

I want to convert a xci file, which command do i have to use?

You have to run it in the command line with args.
…
On Sat, Nov 24, 2018 at 6:27 PM Claudi471 @.***> wrote: Everytime i click on it the cmd opens and closes immediatly(i have Python 2.7 and i have tried admin mode too) please help — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#60>, or mute the thread https://github.com/notifications/unsubscribe-auth/AiBLvOnIaIirP-q8_7HTGDg3lbMtgbx7ks5uydXbgaJpZM4Yxorf .

Run the program in command prompt. Drag it in.
On Sat, Nov 24, 2018 at 6:30 PM Claudi471<EMAIL_ADDRESS>wrote:

How? I already have the keys files
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/SciresM/hactool/issues/60#issuecomment-441403464, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AiBLvDt5Q-MlrsbwSVrzu5-xYA1p-_9Qks5uydaDgaJpZM4Yxorf
.

This also can not directly convert .xci files, look for a different program.

This also can not directly convert .xci files, look for a different program.

I can't find anything sadly :/

https://www.google.com/search?q=xci+to+nsp&rlz=1C1CHBF_enUS810US810&oq=xci+to+&aqs=chrome.0.0j69i60j0j69i57j69i60j0.3109j0j7&sourceid=chrome&ie=UTF-8

https://www.google.com/search?q=xci+to+nsp&rlz=1C1CHBF_enUS810US810&oq=xci+to+&aqs=chrome.0.0j69i60j0j69i57j69i60j0.3109j0j7&sourceid=chrome&ie=UTF-8
Or do you want to convert it to something else?

I downloaded the xci file of pokèmon let's go pikachu and i want to run it on Yuzu that i think runs only NSP files, so i wanted to convert it into that

This is not directly related to hactool. https://gbatemp.net/threads/official-4nxci-a-tool-for-converting-xci-to-nsp.515341/ can convert to .nsp, but this is unrelated to hactool. Your original issue is because hactool does not have a gui, and it will not be getting one any time soon, so you should probably close this issue.

i will, thank you!


update font-face mixin to allow weight and style to be set properly

Essentially it would appear that we've been doing this the hard way for years.
It's possible to set font-weight and font-style in the font-face mixin as long as
it's done in a specific order. Font-family must be first, then src, the font-weight
and font-style can be set.
This will mean we no longer need to use the font mixin to set fonts each time
we need to change the weight or style. We can simply use font-family to set
the web font family and then change the weight and style as needed on child elements
with font-weight and font-style
This will be a big change that will break all our old projects so please DO NOT MERGE until we've discussed.
@incuna/frontend
if you're concerned about faux bolding I tested a LOT and here is proof
from chrome using this new mixin and setting font-weight and font-style:

from illustrator:

@perry as you originally set up the font face mixin for us just wondered if you had any opinions on this/anything we're missing? :)

this should be ok to merge now if everybody agrees? it'll be a breaking change, but I've tested locally and it works beautifully
@incuna/frontend please

sold on "beautifully" :D

woo yay

@hippogriffic Regarding the new incuna-sass font-face: I remember using that setup for eDetails years ago, but knowing we could only use it for eDetails, that WebKit was the only thing that would run them correctly. Turns out it's called Style Linking.
I can't seem to find any information that really corroborates that, but maybe it was due to the IE 7 & 8 restriction explained here: https://www.smashingmagazine.com/2013/02/setting-weights-and-styles-at-font-face-declaration/#style-linking

PROBLEM: INTERNET EXPLORER 7 AND 8 CAN ONLY APPLY UP TO FOUR WEIGHTS AND STYLES TO A SINGLE FONT-FAMILY NAME LINK
Style linking works — as long as you’re not using more than four weights and styles (and as long as the person reading your Web page isn’t the one of the one in eight people who still use Internet Explorer (IE) 7 or 8). If you use more than four weights and styles on the website, then IE 7 and 8 will convert all light and medium weights to normal, and all black and heavy weights to bold — so, you’ll lose some of your carefully set text.

So 👍  for this now


Update Splice main to version 0.2.5-snapshot.20241009.7215.0.v19ed2fe9 (automatic PR)

This PR updates branch main of Splice from the latest changes as of version 0.2.5-snapshot.20241009.7215.0.v19ed2fe9, commit DACH-NY/canton-network-node@19ed2fe952

#135


REGAPIC and Compute support

This adds support for "regapic" as both a generator and package type, and then moves the Compute.V1 API from the regapic branch of gax-dotnet.

cc @viacheslav-rostovtsev

Merging, and will then create a follow-up PR for cleanup.


fix: chart: Axe tcp-router-public if unavailable

Description
If routing-api is not enabled, then remove the tcp-router-public service (when not using ingress).  Otherwise we end up with a service that will never point at anything.
Motivation and Context
Discovered while working on #1144.
We will never finish waiting for services to be ready if we have a service that can never be ready.
How Has This Been Tested?
Tested locally (and in the WIP CI stuff); I can actually finish waiting now.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My code has security implications.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Hm. Concourse CI fails on the gcloud DNS transaction, as there's no tcp-router-ip for the service:
https://concourse.suse.dev/builds/40662#L5fabb78f:615
https://github.com/cloudfoundry-incubator/kubecf/blob/aec0b2e01b68e54f54a62b756457a3aafbfae88f/.concourse/pipeline.yaml.gomplate#L240-L241
Concourse CI doesn't use Catapult nor external-dns for the creation of GKE clusters.
To not overcomplicate things for now, I suppose we could just give a valid but bogus value to $tcp_router_ip on the pipeline, when the service is not present. The correct way would be to either use external-dns properly (moving the pipeline code to Catapult) or read features.routing_api which is not there until later.

Just realized that for testing this PR, either we fly the pipeline from this branch, or deploy a copy of the pipeline with config including:
github_status: true
branches: # Repository branches to track
- marky/service-no-tcp
pr_resources:
- pr
pr_base_branch: marky/service-no-tcp # filter PRs depending on the branch they target. `~` for all branches

Tried the second one, but flying failed with:
error: yaml: line 427: did not find expected alphabetic or numeric character. Looking into it I think that the pr resource doesn't support / chars. Woould be weird. Will continue tomorrow.

I have flown the Concourse changes to the kubecf pipeline, the PR should pass now.

Reflown changes to pipeline, other PRs went through with them, so the are validated (e.g: https://github.com/cloudfoundry-incubator/kubecf/pull/1593). yes, that it's reckless..


Supporting LIRS replacement algorithm in CacheLib

We has implemented the LIRS replacement in the cachelib source code and use cachebench to read the traces and generate the results.
The traces in the test are from CloudPhysics and were collected in caching analytics service in production VMware environments (As the trace files only contain block number, we set enableLookaside to true, and the value size is fixed at 1KB). Some trace files can be downloaded at here
Attached are LIRS's miss ratio curves in comparison with replacement algorithms currently in the cachelib, including LRU, LRU2Q, and TinyLFU (All algorithms simply adopt their default settings).
The results are very encouraging: where cachelib's existing algorithms don't perform well as expected (miss ratio curve don't decrease with increase of cache size), LIRS mostly fixes the performance issue. Some of the results are attached. Please take a look.

cachelib_results.pdf
The LIRS's source code for cachelib can be found at https://github.com/hansonzhao007/CacheLib, (in branch 'LIRS". Current implementation is a prototype, so it may not pass the unit-test in multithreading tests.)
To reproduce the results, you may follow these steps:
git clone --recurse-submodules https://github.com/hansonzhao007/CacheLib.git
cd CacheLib
git checkout LIRS
# external lib branch when testing
# fbthrift: 0b008a959
# fizz: b5cd3b59
# fmt: 094b66e8
# folly: c4d6fcdde
# gflags: e171aa2
# glog: 8f9ccfe
# googletest: 1b18723e
# sparsemap: 1186290
# wangle: 9f706148
# zstd: a488ba11
./contrib/build.sh -j
cp cachelib/cachebench/config.json ./build-cachelib/cachebench
cp cachelib/cachebench/run.py ./build-cachelib/cachebench
cd build-cachelib/cachebench
# before running the script, please modify the `trace_path` parameter in `run.py`
python3 run.py

We intend to contribute to the cachelib community by hopefully merging lirs into cachelib. To this end, we may continue to improve the lirs implementation by hearing from you and the rest of the community.

@hansonzhao007  Thanks for taking the effort to implement this in CacheLib and doing some benchmarking. First, I'd like to move this to the discussion channel since the issue forum is to track immediate actionable things and we might want to discuss more on the implementation details before we merge this PR.


Gracefully handle annotation parsing errors in Page.getOperatorList (issue 11871)

This should ensure that a page will always render successfully, even if there's errors during the Annotation fetching/parsing.
Additionally the OperatorList.addOpList method is also adjusted to ignore invalid data, to make it slightly more robust.
Fixes #11871

/botio test

/botio-linux preview

Thanks!

I have not made reference images on purpose because of the broken fonts in Firefox Nightly. I considered changing Puppeteer to use another Firefox version, but I noticed that the problem in https://bugzilla.mozilla.org/show_bug.cgi?id=1607630 has been tracked down, so if a solution is merged in the coming days we'll get it automatically and we can makeref in another patch. If the upstream solution takes too long, we can still switch.


bug: Text input requires one more tap to get soft keyboard on Android v4.4 Ionic v1.3.16 (Intermitent)

Type: bug
Platform: android 4.4 webview
Getting this issue on Moto e (1st Gen.) Android 4.4 Ionic v 1.3.16 Will let you know about other devices. This issue occurs if last input is directly selected for edit purpose. Having same issue on two different forms.

Greetings @ParitoshVaidya!
My sensors indicate that you need to update your issue through our custom issue form. We are now requiring all issues to be submitted this way, to ensure that we have all of the information necessary to fix them as quickly as possible.
Click Here To Update Your Issue
I will have no choice but to close this issue if it is not resubmitted through the form. Please fill out the rest of the form, so that I may use my friendly robot powers to assist you.
Thank you!

Having same issue on Samsung Galaxy Grand Android v4.2.2, Samsung Trend Android v4.1.2

Greetings @ParitoshVaidya!
My sensors indicate that I require more information in order to assist you.

Can you provide a detailed description of this issue?
How would a robot go about replicating this issue?
On which platform does this happen occur? (iOS, Android, all, etc.)
On which platform versions does this occur? (Android 4.2, iOS 8, all, etc.)
Is this an issue with the Ionic Framework or Ionic CLI?

Additionally, providing a codepen that replicates the issue is extremely helpful.
If you wish to get help using the framework itself, I recommended visiting the forum, where many humans will be able to offer wisdom and advice.
Thank you for allowing me to assist you.

This is intermittent behavior, occurs for last field on the form. One in the following (or multiple) issue(s) occurs most of the times.
Input field does not get focus on first tap. I require to tap on it once again.
Input field does not update while typing. If tapped once again, typed text gets displayed.
Input field hides behind soft keyboard. After starting typing it becomes visible with 2nd issue.
Any idea why this is happening? I added these issues to github as well.
Also found that these issues were on github, and are closed an year before.
I am able to reproduce the issue on Moto e (1st Gen.) Android v4.4, Samsung Galaxy Grand Android v4.2.2, Samsung Trend Android v4.1.2

Is this any input? Could you share a sample project, just so we're looking at the same thing?

Greetings @ParitoshVaidya!
My sensors indicate a reply was requested, but we have not received one yet, I am using my robot powers to close this issue. However, if you are still experiencing this issue, please feel free to reopen it by creating a new issue, and include any examples or necessary information.
Thank you for allowing me to assist you.

Greetings @ParitoshVaidya!
My sensors indicate a reply was requested, but we have not received one yet, I am using my robot powers to close this issue. However, if you are still experiencing this issue, please feel free to reopen it by creating a new issue, and include any examples or necessary information.
Thank you for allowing me to assist you.


Include runnable code snippets into docs

This PR adapts the current changes of release/3.0.x to the great work @joschi did in #3327 and integrates :start-after: and :end-before:.
The naming conventions I used in the comments can definitely be improved, but this is just a test to examine the maintainability of this approach.

@joschi What do you think about this? I think the JavaDoc-like notation for .java files is good, but I'm not sure about the notations for referencing code in .xml and .yml files and for referencing parts inside methods.

Since I think this is really cool at all, users won't recognize the underlying source code. I think it would be really helpful, if we could link to the sources from the docs. Any opinion on that?
The literalinclude directive doesn't support this, but it seems adding a custom literalinclude directive is doable.

I've now created a custom dropwizard_literalinclude directive that provides a link to the source lines in the caption of the code block.
I've never used Python or Sphinx before, so the code could definitely be improved. But I've tested common use cases and so far it seems to work without problems.

Thanks for the review. I just wanted to test, if this is possible overall, if the pipelines are stable and if the styling of the captions is good enough. But I'm happy you think it is ready for a merge :wink:


[Improvement][server]Add comment

Tips

Thanks very much for contributing to Apache DolphinScheduler.
Please review https://dolphinscheduler.apache.org/en-us/community/index.html before opening a pull request.

What is the purpose of the pull request
*This is my first PR. *
Brief change log
Add comment
Verify this pull request
This pull request is already covered by existing tests.

+1
good job
thanks for your first contribution, looking forwarding to deep participation.
please contact<EMAIL_ADDRESS>or wechat: 510570367), please tell me your github id when added


DlPopup - popup header padding

I'm using a customized in DlPopup, and there's a default padding that sets the padding-bottom to 20px, which seems to be quite a lot. 10px would have been much nicer.

What do you think @rotemshaham?

@advaa1234 You can change the default padding (top & bottom) to 16px.


Steps on how to log in or out of galaxy

It is very similar to https://github.com/galaxyproject/training-material/pull/3327
We should try to remove as much as possible repetitions.

It is very similar to #3327 We should try to remove as much as possible repetitions.

Hello ma'am @annefou please is there any further step I need to do for this FAQ

@bernandez do we close this?

yes @beatrizserrano I think we can close this now. Thanks :)


MCR Commissioning

Updated APPLESOSS:

Now produces models for the third order as well as first and second.
Padding and oversampling are now more robust (and not buggy).
Directly call reference file creation code such that ATOCA specprofile ref files are automatically produced.
More robust bad pixel interpolation.
Fixed bug causing kinks in the first order at blue wavelengths.
Depreciated F277W interpolation method.

OK


Doesn't seem to work under tmux

Inside tmux screen plugin stops working, buttons seem to be stuck, and clicking them does nothing.
Stuck meaning if outside tmux I was in dir /x/y inside tmux it still shows /x/y even if I've navigated away.
Any ideas?
I'm running tmux inside a vagrant box (centos7).
This is my box: http://github.com/wearede/DevCeption

I'm having the same issue, fwiw. For me, the plugin works correctly inside of local tmux on my local machine and also works correctly in a tmux window launched from a remote machine to which I'm connected over ssh. However, if I use nested tmux windows- i.e. from a local tmux window ssh onto a remote machine and attach to a tmux session- then the plugin's functionality is preserved correctly, but the icons are missing- just have vanilla F1, F2, F3 keys, etc. I have the same issue if I ssh from local tmux w/o connecting to a tmux session on the remote machine.


Enable Electron Crash reporter for all processes after Electron update

Once a newer version (>= 1.5.1)of electron is adopted, all node processes spawned in VS Code need to initialize the crash reporter
https://github.com/electron/electron/blob/master/docs/api/crash-reporter.md#methods

We have enabled the crash reporter in the child process that starts the extension host for VS Code 1.13

And only on macOS.

@ramya-rao-a fyi I am not convinced this actually works, so far I did not find a crash from the extension host on HockeyApp. Maybe you could also have a look.

@bpasero Am guessing this is no longer applicable now that we use hockeyapp?


403 Forbidden when filename has special characters(like ç)

If we upload a file with the name like logó.png or façebook.txt, it will throw the exception bellow. It works as expected for regular chars and spaces.
https://gist.github.com/plentz/6887638

Closing since gist no longer exists.


Create automatically user container

Code starts automatically the container of a user.
However it must be manually created before.
But it should be automatically created if it does not already exists.

Done!


Cannot build

Cannot build locally - There is no kg.apc:jmeter-plugins-emulators:jar:0.3 in Maven central

try now, it should build


v1.0.2 sha256 mismatch

Hey, seems like somethings wrong:
 ➭ brew install gng
==> Installing gng from gdubw/gng
==> Downloading https://github.com/gdubw/gng/archive/v1.0.2.tar.gz
==> Downloading from https://codeload.github.com/gdubw/gng/tar.gz/v1.0.2
Error: SHA256 mismatch
Expected: 61d4cfa0d72219bfcb812cfcc35e31492d0b6359025cf5aee14230e6e3b69d68
  Actual: fb6a80b4244c32aaf592c5772145558f6eef040dbed7e1c9670e18f1d54b39f0
    File: /.../Homebrew/downloads/9e674ab731ad6ca40a493bbea885a7bcd70c85263e30cfe3936dd7a38a4a1b71--gng-1.0.2.tar.gz
To retry an incomplete download, remove the file above.

I tried removing the download, but the result was the same.  I also tried wgeting both the mentioned URLs in above output, and I get the same (fb6a80b42...) SHA256 for them.

Fixed. Please update your tap. Thanks for your report.

Fixed. Please update your tap. Thanks for your report.


Add tags upload and fetch routes

Description
Multer is used for the file upload as for now this project. In the production environment may be a blob storage of cloud should be used. It is for the POC of project multer has been used.
Rabbit MQ is used to pass the event of file upload which is listened by a separate project. This will help in scalability of project as they can be scaled independently as a cloud function

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Load image based on screen size using Lazy Loading

Hi, first let me thank you for a great slider. I'm using it on a few websites and it rocks!
I have a feature request to enhance the lazy loading function. I'm using the slider to display a full screen width carousel of images across the screen. Because of the carousel size, the images must have a big resolution (1900 x 600 px). As a result even with compression each image size is >150 KB. Having 7 images in carousel it results in 1 MB of data the user needs to download. This currently applies even at situations when he is displaying the images on a mobile display that is 360 x 640 px.
It would be great if the lazy-loading is able to choose image based on the screen size. You could have than 2 or 3 image sizes that you would serve based on users's screen size.
The idea and markup is borrowed from Foundation's Interchange function: http://foundation.zurb.com/docs/components/interchange.html
<img src="img/1x1.gif" data-lazy="[img/big.jpg, (default)], [img/small.jpg, (small)]">

Thank you for consideration.

Hey I know this is from a while back but I think this issue got answered in #1321. Thanks!


Check plugins for themes and themes for plugins

Some Plugins may want to have simple themes added as defaults.
Some Themes may want simple plugins to ensure functionality.
Recursions should be avoided.
I think there is like a check system thing that needs to happen.
I don't think so I think it's just a check on the value for the plugin and theme objects
so
def register_plugin(self, *plugins):
for plugin in plugins:
...
if plugin.themes:
self.register_themes(*plugin.themes)
def register_themes(self, *themes):
for theme in themes:
...
if themes.plugins:
self.register_plugins(*themes.plugins)

Work has begun on this but I believe it’s going to be a longer issue to solidify on.


Missing type exports

After upgrading to zwave-js@5, many typescript types have become available from the top level zwave-js export.  However, there are a few I use in my project that still are not exported from the top-level, and I believe they are good candidates:

ZWaveController [from zwave-js/build/lib/controller/Controller]
Endpoint [from zwave-js/build/lib/node/Endpoint]
InterviewStage [from zwave-js/build/lib/node/Types.  Both the type and enum object should be exported]

I believe these three are missing, as I was unable to trace their export back to the index.d.ts file.

Are you sure about ZWaveController? index.d.ts contains export * from "./Controller", which contains a type-export export type { HealNodeStatus, ZWaveController, } from "./build/lib/controller/Controller";.
In a consuming app, I can navigate from the root-level import all the way to the implementation.

You are right, ZWaveController is properly exported.  I must have missed that.

fixed in v5.3.2


Removed extra tab in yaml example

There were two extra spaces in the example for values.yaml  when using existing configmap. This was resulting in the following error:
Error: UPGRADE FAILED: template: alloy/templates/controllers/daemonset.yaml:20:8: executing "alloy/templates/controllers/daemonset.yaml" at <include "alloy.pod-template" .>: error calling include: template: alloy/templates/controllers/_pod.yaml:2:42: executing "alloy.pod-template" at <.Values.alloy>: wrong type for value; expected map[string]interface {}; got interface {}

PR Description
Which issue(s) this PR fixes

Notes to the Reviewer
PR Checklist

[ ] CHANGELOG.md updated
[ ] Documentation added
[ ] Tests updated
[ ] Config converters updated

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Preflight Checklist

[X] I agree to follow the Code of Conduct that this project adheres to.
[X] I have searched the issue tracker for an issue that matches the one I want to file, without success.
[X] I am not looking for support or already pursued the available support channels without success.

Version
1.1.0
Installation Type
Official Docker Compose
Service Name
DongTai-WebAPI
Describe the details of the bug and the steps to reproduce it
1.如下图，项目只有5个漏洞

2.3中格式的报告都长时间处于导出进行中状态，无法正常导出报告

3.右上角未收到任何通知消息

Additional Information
No response
Logs
No response

Thanks for the feedback, the test has been scheduled. @luzhongyang @Bidaya0

oh

Bug is fixed.


fix: skip checking password when the code is provided

fix: #2423

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.aidenlu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


The install guide does not specify if it is possible to run this on Windows

I've tried installing this several times on Windows, but I run into several issues. I'm wondering if anyone has gotten this to install on Windows. If that's the case, I will come back later and post the error codes. (My installation attempts were a few days ago and I can't remember the issues of the top of my head, probably something about the cuda and python versions that I have being too recent).
Thanks guys.

I've tried installing this several times on Windows, but I run into several issues. I'm wondering if anyone has gotten this to install on Windows. If that's the case, I will come back later and post the error codes. (My installation attempts were a few days ago and I can't remember the issues of the top of my head, probably something about the cuda and python versions that I have being too recent).
Thanks guys.

I would say it's really hard to complete the installation on Windows. I've tried it once and regret even though I tried multiple methods provided on the net. Even installed in linux, I barely destroyed a computer in my school to get it working. I really like the work so I spent about three months on the installation but even to today I still don't have the courage that if I could complete the installation again. That's how hard it is to me.


optional end statements

Instead of having to always use the end keyword with methods, classes, if statements and structs, we should have the option to use } or to use the paring braces {}
Any thoughts?

-1 This conflicts with block syntax.
if numbers.any? {|n| (n*3).even? }
  puts "even number detected"
end

That may be unambiguous to the compiler, but it's confusing to the user and prone to user errors. Besides our syntax space is already quite packed, let's not give what we have left to something that just "solves" something that you would get used to anyway otherwise.

@jhass Idk, it seems like since this is optional, the programmer would deliberately know which one to use, since its optional. I think many .would like this since they don't exactly like the end statements, I personally don't care for one, but I'm all for flexibility, +1 on my side, though doesn't seem like a need

Alright, larger example:
class MyStuff {
  def foo {
    things = ["meep"]
    # Let's call any? without a block as an alias for !things.empty?, let's use braces for the if body
    if things.any? {
      puts "found something!"
    }

    # I like do end style though, for whatever reason
    10.times
      puts "meep"
    end
  }
}

MyStuff.new.foo

Assuming we patch times up to return an enumerator/iterator, the program will have no output, can you spot why?

the times loop doesn't have a do ?

Yes, first point: we moved a compile time syntax error into a logical bug, second point, be honest with yourself, how long would you have needed to spot this without the comment, in a 500 lines file?

Well the compiler would tell you, also, why would the programmer not include the do if we had the option vs not having it

We don't do that yet in Crystal, afaik, but in Ruby invoking 10.times without a block is perfectly valid and returns an Enumerator. Forgetting the do is a common mistake, I still make it too from time to time after programming for years in Ruby.

So you guys will soon be in favor for whitespace sensitivity and the end keyword for blocks ?

I don't see where you pull whitespace sensitivity from, let's not complicate this discussion with it. I also don't follow where you pull the "you guys" from, so far it's only me opposing this idea.

Updated my comment, sorry for bad terminology and when I meant "you guys" I mean Crystal devs

Sorry, but no. This adds more rules to the language for no real benefit. See also my comments about adding else if here.

Ok

What about optional end statements but instead of using braces we could rely on indentation? thoughts @jhass ? @asterite ?

Crystal is inspired by Ruby, not Python ;)
And again, mixing such stuff is not improving user experience, it's making it worse IMO. The fundamental syntax of how code blocks are formed is nothing you just mix and mash together, it's a core decision of the language and here it has been made already.

@Synatra Take a look at Nim, for example, specifically the Source Code Filters section. You will find it says:

Because indentation-based parsing is not suited for a templating engine, control flow statements need end X delimiters.

So they use end if, end for, etc, in their templates, which means users must learn a new language. In Crystal an ECR file looks like this:
<% [1, 2, 3].each do |i| %>
  Number: <%= i %>
<% end %>

It's the same language, no need to learn nothing new.
Indentation not only plays bad with templates, but also with macros. For example this one. I would go crazy if I had to make the generated code respect indentation. Now I only need to worry about newlines and matching "end"s. Very simple.
And, personally, I find indentation-based code hard to read when the code is large, more than a screen. Sure, you will say "refactor your code into smaller functions", but try to do that in a hand-made parser :-) . I find I always have to go up with my eyes and see where a block ends... maybe you get used to that after a time, I don't know, but I prefer to reuse my existing eye/brain abilities to match things by visibility.
And, as @jhass says, something having more freedom is worse. The more you allow changing and customizing a language's syntax, the more it looses its identity and its idioms.

Most users will not use templates/macros, and those who will probably do not care about it.
proc doA = echo "done a"
proc doB = echo "done b"

let
  conditionA = true
  conditionB = false

if conditionA:
  if conditionB: doA()
  else: doB()

echo "done"

def doA
  puts "done a"
end

def doB
  puts "done b"
end

conditionA, conditionB = true, false

if conditionA
  if conditionB
     doA
  end
  else
     doB
end

puts "done"

See the benefits of Nim's indentation?

@Synatra The biggest program is that end statements and indentation do NOT go well together. For instance:
class MyStuff
  def foo
    things = ["meep"]
    if things.any?
      puts "found something!"
    end
  end

Is this correct or not? Which end is associated with what? This would require virtually infinite parser lookahead.
Also, I agree with @jhass and @asterite in that adding more features isn't going to help. That's why nobody can read someone else's Perl code.
However, I disagree that indentation-based code is harder to read. You should indent it anyway... ;)

I find indentation based languages (python, coffescript, you name it) pain in arse. It makes my brain swallow.
Also refactoring harder. Moving code around, namespacing classes, putting code block into if statement, etc requires manual reindentation. While in normal langues you can ask your editor to auto-format your code.

I guess it comes down to what @asterite says here: http://crystal-lang.org/2014/12/06/another-language.html
Indent vs. braces vs. end is at the end of the day a matter of personal taste.
Fact 1: The team behind Crystal picked end. There's no point in discussing that choice: since it's a matter of taste, there's no clear objective winner. Changing that choice would make Crystal... another language.
Fact 2: Supporting 2 of those options at the same time would not only make it a new language, but also would make the parser much much more complex and cumbersome to work with.
If you like indentation-based languages, there's Nim, if you like everything about Crystal except indentation, maybe you can learn to live with that little personal inconvenience and help the community make great design decisions from now on.
That decision in particular was already made and the community won't derive considerable benefits from changing it (some people will be happy because they're into indentation-based syntax and others will be sad because they prefer end), in the end it's zero-sum game.


Add Content Template for Contributors

Create a template for contributors to use to allow consistency and faster setup when adding new content. Refer to the current pages we have for base layout.

Some of it is currently addressed on the Wiki Page with the following -> Following
This is a base for instructions on how to Download the repository and to contribute to the fork.

 Content Template for Contributors

Should this be addressed as a page itself, as it would allow for better management of each section?
Generally not a lot of users know about the Wiki, and it is generally with a lack of support.

https://github.com/VerzatileDevOrg/Programming_HandBook/wiki/Page-Setup-&-Information#first-page-example-within-the-list   First Page Example is here.

Second page Example https://github.com/VerzatileDevOrg/Programming_HandBook/wiki/Page-Setup-&-Information#second-page-example-within-the-list

Based on this the issue can be closed, content in relation to havind a dedicated page to set up pages is referenced here https://github.com/VerzatileDevOrg/Programming_HandBook/issues/45


Consider reducing buffer size in certifier package

I was reviewing the code in the certifier package and noticed that the buffered channel used in the certify function has a size of 1000. However, as stated in the article "The Behavior of Channels" by Ardan Labs (https://www.ardanlabs.com/blog/2017/10/the-behavior-of-channels.html), A Buffered channel of size >1 gives you No Guarantee that a signal being sent has been received. Because the Send of the signal Happens Before the Receive of the signal completes.
In the context of the system, reliability should be a higher priority than high performance. Therefore, I suggest considering reducing the buffer size to ensure that signals are being received and processed correctly. This could potentially prevent any issues that may arise due to missed signals.
https://github.com/guacsec/guac/blob/478e52c4fbc201949904fa5591bb6e2d8ea631e4/pkg/certifier/certify/certify.go#L30

Having a buffer channel of size >1 only let's you continue the thread, it should not assume that the signal has been received. This should be handled by the program, and should not be an issue. Asynchronous concurrency model should be assumed so the code shouldn't rely on this assertion, and in other cases of failure, it is probably (at least in our case), not a situation where we can gracefully recover from and therefore would be a panic. I believe this shouldn't be an issue for that code usage.

Having a buffer channel of size >1 only let's you continue the thread, it should not assume that the signal has been received. This should be handled by the program, and should not be an issue. Asynchronous concurrency model should be assumed so the code shouldn't rely on this assertion, and in other cases of failure, it is probably (at least in our case), not a situation where we can gracefully recover from and therefore would be a panic. I believe this shouldn't be an issue for that code usage.

The current design does not provide assurance that all messages sent to the API will be processed, as the process could fail after processing only a portion of the requests. To address this, what measures are taken to ensure that consumers are aware of which messages have been processed and which ones have not?

that would be handled by the emit, so probably this concern would be better targeted towards the emitters, as they handle the interaction with external systems

The emitter uses NATS which has been configured to use the workQueuePolicy which means:
"WorkQueuePolicy specifies that when the first worker or subscriber acknowledges the message it can be removed from the queue". So messages will remain in the queue.

that would be handled by the emit, so probably this concern would be better targeted towards the emitters, as they handle the interaction with external systems

The consumers of this package need not use the emitters as it is not an internal API.

I think the understanding of channels by the general systems programmer is such that it shouldn't be a big concern. I don't think its worth the tradeoff.


How to upgrade code-server

I installed code-server using its install script on Ubuntu, and setup NGINX as server. However I can not find any documentation on how to upgrade code-server to the latest release. I am suggesting this is added to the documentation, and if you could help me figure out how to do it I'd love to know! (i thought and sudo apt-get upgrade might do it, but no joy.

Since you used the install script you can run it again and it'll install
the latest version.
In case you're wondering, apt won't do anything for you since you
didn't install it with apt. It could be neat to have code-server
available that way though. I'm not sure how hard it is to get into the
package repositories.
Duplicate of https://github.com/cdr/code-server/issues/2131.